6

如何使用echo, 将一些输入输入到需要用户输入两次的程序中?

例如

echo "somepassword"|passwd someuser

创建此错误消息

Enter new UNIX password: Retype new UNIX password: passwd: Authentication token manipulation error
passwd: password unchanged

因为我没有重新输入密码

4

3 回答 3

17

You need to send the password twice:

(echo 'somepassword'; echo 'somepassword') | passwd someuser
于 2014-05-23T07:18:27.357 回答
0

作为root你可以试试

echo "somepasswored" | passwd someuser --stdin

--stdin 此选项用于指示 passwd 应该从标准输入读取新密码,标准输入可以是管道。

如果您不是 root,那么您应该无法更改某些其他用户的密码。如果您真的想完成提供 2 个密码的整个业务,expect 是一个很好的工具。

于 2014-05-23T07:22:18.793 回答
0

这个也可以

echo -e "currentPassword\nNewPassword\nNewPassword" | passwd

-e 将使 echo 实际上使用一个新行,而不仅仅是打印 \n 此选项适用于当您在新密码之前需要当前密码时,如果不需要当前密码,您可以省略它。

echo -e "NewPassword\nNewPassword" | passwd

我也同意这对于多用途/公共计算机来说是一种不好的做法,但是如果您知道自己在做什么,并且有充分的理由这样做,那么这是可行的。

于 2019-04-04T21:49:37.487 回答