如何使用echo
, 将一些输入输入到需要用户输入两次的程序中?
例如
echo "somepassword"|passwd someuser
创建此错误消息
Enter new UNIX password: Retype new UNIX password: passwd: Authentication token manipulation error
passwd: password unchanged
因为我没有重新输入密码
You need to send the password twice:
(echo 'somepassword'; echo 'somepassword') | passwd someuser
作为root你可以试试
echo "somepasswored" | passwd someuser --stdin
--stdin 此选项用于指示 passwd 应该从标准输入读取新密码,标准输入可以是管道。
如果您不是 root,那么您应该无法更改某些其他用户的密码。如果您真的想完成提供 2 个密码的整个业务,expect 是一个很好的工具。
这个也可以
echo -e "currentPassword\nNewPassword\nNewPassword" | passwd
-e 将使 echo 实际上使用一个新行,而不仅仅是打印 \n 此选项适用于当您在新密码之前需要当前密码时,如果不需要当前密码,您可以省略它。
echo -e "NewPassword\nNewPassword" | passwd
我也同意这对于多用途/公共计算机来说是一种不好的做法,但是如果您知道自己在做什么,并且有充分的理由这样做,那么这是可行的。