我正在编写一个shell脚本,以自动添加新用户并更新其密码。我不知道如何获取passwd来从shell脚本中读取,而不是交互式地提示我输入新密码。我的代码如下。
adduser $ 1 密码$ 1 $2 $2
来自“ man 1 passwd”:
man 1 passwd
--stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.
所以你的情况
adduser "$1" echo "$2" | passwd "$1" --stdin
[ 更新 ]评论中提到了一些问题:
您的passwd命令可能没有--stdin选项:chpasswd按照ashawley的建议使用实用程序。
passwd
--stdin
chpasswd
如果您使用的不是bash外壳,则“echo”可能不是内置命令,外壳将调用/bin/echo。这是不安全的,因为密码将显示在进程表中,并且可以通过诸如之类的工具查看ps。
/bin/echo
ps
在这种情况下,您应该使用另一种脚本语言。这是Perl中的示例:
#!/usr/bin/perl -w open my $pipe, '|chpasswd' or die "can't open pipe: $!"; print {$pipe} "$username:$password"; close $pipe