2017-03-07 168 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

相關問題