2017-03-07 203 views
0

我试图以root身份在多个远程服务器上运行本地脚本。我没有su根源,但可以使用sudo运行root命令。到目前为止,我尝试:在远程服务器上以根用户身份运行本地脚本

for host in $(cat hosts_list); do ssh -tt $host "echo mypassword | sudo bash -s" < ./myscript.sh 

而在myscript.sh有一样的东西:

echo "test test123" >> /etc/tests 
exit 0 

但它看起来像没有工作,也不会改变文件。以root用户身份运行此脚本的正确方法是什么,并且不必为每个主机单独输入密码?

+0

我认为这将是对ServerFault –

+0

一个更适合我相信这是一个纯粹的shell脚本问题。 – JavaRed

+0

尝试'sudo echo“PermitRootLogin yes”>>/etc/ssh/sshd_config'然后'sudo service ssh restart' – Arash

回答

-1

好的,那么你为什么“回声mypassword”?

难道你不能通过NOPASSWD将你的SSH帐户添加到sudoers文件吗?

man sudoers

authenticate  If set, users must authenticate themselves via a password (or other means 
        of authentication) before they may run commands. This default may be 
        overridden via the PASSWD and NOPASSWD tags. This flag is on by default. 
+0

我知道我可以在远程服务器上运行本地脚本,如下所示: http://serverfault.com/questions/617116/run-local-script-over-ssh 但是,在上面的示例中,root访问允许到服务器。在我的环境中它不是。所以我需要用sudo运行我的本地脚本,并且想知道是否可以不分别为每个主机输入密码 – JavaRed

+0

好吧,我一开始并没有明白这一点。我希望这可以解决你的问题。 – SegFault

+0

我已经可以使用我自己的用户连接远程服务器,无密码。但根访问也不是 - 不允许的。 所以我需要找到一种方法来使用sudo运行我的本地脚本,而不是每次输入我的sudo密码,因为我需要为超过300台服务器执行此操作。 – JavaRed

相关问题