我正在尝试创建一个脚本,简化在iOS设备上创建新用户的过程.以下是分解的步骤.
# fullname="USER INPUT"
# user="USER INPUT"
# group=$user
# uid=1000
# gid=1000
# home=/var/$user
# echo "$group:*:$gid:$user" >> /private/etc/group
# echo "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
# passwd $user
# mkdir $home
# chown $user:$group $home
Run Code Online (Sandbox Code Playgroud)
如您所见,某些字段需要输入.如何在脚本中请求变量的输入?
如何使用sed将文本写入文件?更具体地说,我会将空变量添加到使用touch创建的空白文本文件中.sed的语法让我非常困惑.
所以有人向我展示了如何使用条件来测试用户是否输入了密码输入.我想进一步采取他们的例子并使用一个循环(至少那就是我认为它的调用).
这是他们的例子:
read -s -p "Enter new password: " NEWPASS
if test "$NEWPASS" = ""; then
echo "Password CAN NOT be blank re-run sshd_config"
exit 1;
fi
Run Code Online (Sandbox Code Playgroud)
我没有退出脚本,而是希望它继续询问输入,直到有一些.
我想做这样的声明,但我做错了:(现在使用顶级示例)
用户有机会输入新密码并填充变量值.
read -s -p "Enter new password:" NEWPASS
echo ""
Run Code Online (Sandbox Code Playgroud)
下一部分检查变量以查看它是否包含值,而值为null则请求用户无限期地填充该值.( 一个循环)
while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done
Run Code Online (Sandbox Code Playgroud)
此行搜索包含另一个文件使用的一组变量的文件.然后它在文件中搜索包含PASS =.*(.*表示任何内容)的行,然后写入PASS = $ NEWPASS($ NEWPASS是变量)
sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,我将使用它并从中学习.
关于如何实现这一点,我有几点想法.不知道我怎么编写脚本.
方法1 :(可能是更好的选择)
创建一个ping服务器的循环,直到收到回复,然后执行命令,如果在X时间内没有收到回复/运行continue脚本.
方法2:
检查网络接口是否具有有效的IP然后继续脚本
如何在脚本中添加此功能.awk或grep会在这样的情况下使用吗?提前感谢您提供任何输入.
我创建了一个脚本,根据条件执行一些命令。如果目录包含文件,则运行“screen -r”,否则运行“screen”。问题是即使目录包含文件有时也会执行屏幕。
if [ "$(ls -A $DIR)" ]; then
screen -r
else
screen
fi
Run Code Online (Sandbox Code Playgroud)
我想要做的是对其进行改进并将其分解为两个语句。如果目录包含文件,则运行 screen-r" & 如果目录不包含文件,则运行 "screen"
if [ "$(ls -A $DIR)" ]; then
screen -r
fi
Run Code Online (Sandbox Code Playgroud)
&
if ["$(directory without files)"] ; then
screen
fi
Run Code Online (Sandbox Code Playgroud)
甚至可能是基于文件# 执行的语句。如果目录包含 X 个文件。
有人可以帮我解决这个问题吗?我希望我彻底解释了我想要什么。
谢谢,
杰弗里
再次感谢您的帮助,我现在一切正常。这是最终的脚本。它适用于 iPhone 和我正在制作的名为 MobileTerm 后台程序的应用程序。
#Sets up terminal environment?
if [[ $TERM = network || -z $TERM ]]; then
export TERM=linux
fi
# This script automatically runs screen & screen -r (resume) based on a …
Run Code Online (Sandbox Code Playgroud)