来自“
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的建议使用实用程序。
如果您使用的不是bash外壳,则“echo”可能不是内置命令,外壳将调用
/bin/echo。这是不安全的,因为密码将显示在进程表中,并且可以通过诸如之类的工具查看
ps。
在这种情况下,您应该使用另一种脚本语言。这是Perl中的示例:
#!/usr/bin/perl -wopen my $pipe, '|chpasswd' or die "can't open pipe: $!";print {$pipe} "$username:$password";close $pipe


