使用用户名、密码和命令执行 sudo su

sudo su with user name, password and command

我正在尝试做类似

的事情
echo 'my_password' | sudo -S su -c some-user ./some_command

我看过

How can I apply password to sudo in one line command and execute su root?

run a sudo command, specifying the password on the same line

但是这些都没有真正回答我上面的问题。

我仍然收到我的用户的密码提示。

我有两个答案给你。

第一个答案是"don't do it"。几乎可以肯定,有更好的方法。您可以向 sudo 指定某些用户可以在不输入密码的情况下执行某些命令。这很可能就是您想要做的。

虽然没能说服你,但我会告诉你一个小秘密。 sshpass 适用于 sudo,因此:

sshpass -p 'my password' sudo -S su -c some-user ./some_command

当然,在那里,我们可以切断 su 中间人:

sshpass -p 'my password' sudo -S -u some-user ./some_command

你可以使用expect。首先安装 expect rpm 然后 运行 命令如下所示:

expect -c "spawn sudo /tmp/test.sh; sleep 3; expect -re \"password\"; send \"mypassword\r\n\";set timeout 5;expect -re \"time=\";"