我正在尝试做类似
的事情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
但这些都没有真正回答我上面的问题。
我仍在为我的用户提供密码提示。
答案 0 :(得分:3)
我有两个答案。
第一个答案是“不要这样做”。几乎可以肯定,有一种更好的方法。您可以指定某些用户无需输入密码即可执行某些命令。很可能,这就是你想要做的。
但是,如果没有说服你,我会告诉你一个小秘密。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
答案 1 :(得分:0)
你可以使用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=\";"