shell 如何在终端中使用-S(stdin)传递密码?

nnsrf1az  于 2023-04-12  发布在  Shell
关注(0)|答案(2)|浏览(103)

我正在尝试使用stdin传递密码,但收到错误。以下是我尝试的内容。

echo myPassword | sudo -S su - userName -s /bin/bash

echo 'myPassword' | sudo -S su - userName -s /bin/bash

在这两种情况下,我都得到-bash: line 1: myPassword: command not found的错误
我该如何解决这个问题?

jljoyd4f

jljoyd4f1#

您的密码不以换行符结尾。请尝试以下操作

echo -n 'myPassword' | sudo -S su - userName -s /bin/bash
qyswt5oh

qyswt5oh2#

在你的例子中,你使用了一个echo命令而不是'sudo',这就是为什么会发生错误。你可以使用这个命令:

sudo -S <<< "myPassword" su - userName -s /bin/bash

或者,您可以使用printf命令来传递密码:

printf "myPassword\n" | sudo -S su - userName -s /bin/bash

相关问题