2013-08-01 282 views
5

我有一個本地腳本,它不會在遠程主機上沒有root權限的情況下運行。我已編輯並允許sudoers文件從主目錄(/ home/username/script)運行腳本。該腳本創建一個包含結果的txt文件,但我將輸出重定向到終端,並將輸出傳輸到本地計算機上的文本文件。在遠程Linux主機上執行本地腳本

我不能「SSH用戶@主機名須藤-sV < script.sh> RESULTS.TXT」,因爲這將不會運行從遠程主機的腳本,特別是主目錄。

有沒有人知道一種方法(一行)將腳本複製到遠程主機&在檢索輸出時以root身份執行它?

謝謝你的任何援助

回答

2

複製與scp腳本,然後運行它。

scp script.sh [email protected]: 
ssh [email protected] sudo ./script.sh > results.txt 

要做到這一點的一條線:

ssh [email protected] 'cat > script.sh; chmod 755 script.sh; sudo ./script.sh' <script.sh> results.txt 

但是,如果你需要輸入密碼進入sudo這是不行的。所有的ssh的標準輸入都會被放入腳本中。可能有一種方法可以使用Expect來做到這一點,但我沒有太多的專業知識。

+0

感謝您的及時回覆! ssh密鑰沒有存儲,所以在scp'ing和ssh'ing時都需要輸入14個字符的pswd。有沒有辦法一行一行呢? –

+0

我不需要爲sudo輸入密碼(運行腳本)。這看起來似乎會很好!此外,非常感謝您的時間和幫助! –

+0

這不是一個正確的答案,它是關於遠程運行命令,而不是推送到遠程機器! – Rafareino

12

如果你有sudo的,並允許sudo來根,那麼這個作品用少一點的語法:

ssh -T [email protected] 'sudo su -' < script.sh

+5

+1這應該是公認的答案。 –

相關問題