【问题标题】:Passing input into passwd using pipe使用管道将输入传递给 passwd
【发布时间】:2014-05-23 07:10:40
【问题描述】:

如何使用echo 将一些输入通过管道传输到需要用户输入两次内容的程序中?

例如

echo "somepassword"|passwd someuser

创建此错误消息

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

因为我没有重新输入密码

【问题讨论】:

  • 尝试使用expect/auto-expect 我猜对你来说是正确的工具。
  • 请不要这样做。该命令将存储在命令历史记录中。所有人都可以看到您的密码。

标签: linux bash pipe passwd


【解决方案1】:

您需要发送两次密码:

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

【讨论】:

    【解决方案2】:

    作为root你可以试试

    echo "somepasswored" | passwd someuser --stdin
    

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

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

    【讨论】:

      【解决方案3】:

      也可以这样做

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

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

      echo -e "NewPassword\nNewPassword" | passwd
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 2015-08-26
        • 2021-11-27
        相关资源
        最近更新 更多