使用管道将输入传递给passwd

时间:2014-05-23 07:10:40

标签: linux bash pipe passwd

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

例如

echo "somepassword"|passwd someuser

创建此错误消息

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

因为我没有重新输入密码

3 个答案:

答案 0 :(得分:10)

您需要发送两次密码:

(echo 'somepassword'; echo 'somepassword') | passwd someuser

答案 1 :(得分:0)

作为root你可以尝试

echo "somepasswored" | passwd someuser --stdin
  

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

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

答案 2 :(得分:0)

也可以这样做

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

-e将使echo实际上使用换行符,而不仅仅是打印\ n 此选项适用于需要新密码之前的当前密码的情况 如果不需要当前密码,则可以省略。

echo -e "NewPassword\nNewPassword" | passwd

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