使用用户名、密码和命令执行 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=\";"
我正在尝试做类似
的事情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=\";"