我正在编写一个shell脚本来自动添加新用户并更新他们的密码.我不知道如何让passwd从shell脚本中读取而不是以交互方式提示我输入新密码.我的代码如下.
adduser $1 passwd $1 $2 $2
解决方法:
来自“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以外的shell,“echo”可能不是内置命令,
shell会调用/ bin / echo.这是不安全的,因为密码
将显示在进程表中,可以使用ps等工具查看.
在这种情况下,您应该使用其他脚本语言.以下是Perl中的一个示例:
#!/usr/bin/perl -w
open my $pipe, '|chpasswd' or die "can't open pipe: $!";
print {$pipe} "$username:$password";
close $pipe
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。