在shell脚本中使用passwd命令

我正在编写一个shell脚本,以自动添加新用户并更新其密码。我不知道如何获取passwd来从shell脚本中读取,而不是交互式地提示我输入新密码。我的代码如下。

adduser $ 1

密码$ 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外壳,则“echo”可能不是内置命令,外壳将调用/bin/echo。这是不安全的,因为密码将显示在进程表中,并且可以通过诸如之类的工具查看ps

在这种情况下,您应该使用另一种脚本语言。这是Perl中的示例:

#!/usr/bin/perl -w

open my $pipe, '|chpasswd' or die "can't open pipe: $!";

print {$pipe} "$username:$password";

close $pipe

以上是 在shell脚本中使用passwd命令 的全部内容, 来源链接: utcz.com/qa/433604.html

回到顶部