2017-10-06 127 views
0

我试图做类似须藤苏与用户名,密码和命令

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

为什么不直接设置sudo来提示某个用户执行some_command的密码呢? –

+0

使用从其他团队设置sudo的服务器。所以我不能在我的用户之外运行任何命令。吮吸。那么我通过ansible作为根源运行,但这不是常态。 –

回答

3

我有两个答案给你。

第一个答案是“不要做”。几乎肯定有更好的方法。您可以指定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 
+0

使用这个答案,我的系统仍然要求输入当前登录用户的密码 –

0

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

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