2013-10-08 42 views
0

我有多個ssh命令爲我執行一些任務。例如:在使用ssh和scp時梳理多個命令

ssh a-vm "rm -f /home/dir/file1.xlsx" 
ssh a-vm "rm -f /home/dir/file2.xml" 

scp [email protected]:/somedir/file1.xlsx . 
scp [email protected]:/somedir/file2.xml . 

1)有沒有辦法將2個ssh命令合併到1和兩個scp命令中爲1? 2)如果我做ssh和scp多次而不是1次,是否有成本?

任何幫助表示讚賞。

回答

1

你可以這樣做:

ssh a-vm "rm -f /home/dir/file1.xlsx ; rm -f /home/dir/file2.xml" 
scp "[email protected]:/somedir/{file1.xlsx,file2.xml}" . 

每個SSH/SCP的通話將花費你的連接時間和一些CPU時間(如果你這樣做可能是顯著,爲數百臺機器在同一時間,否則不可能)。

或者,您可以使用持久性主連接ssh和隧道上的其他人。這將節省幾個網絡往返 - 參見http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

+0

ssh只執行第一個rm命令,而不是第二個。我的代碼在那個時候失敗了。所以沒有檢查scp是否正常工作。 – user1164061

+0

你甚至不需要調用'rm'兩次;一次呼叫可以刪除多個文件。 – chepner

+0

仔細檢查你是如何調用這個的。 Ssh不關心有多少命令,甚至不會將字符串解析爲命令。他們在你的shell的另一邊被執行。這工作 - 只是找出出了什麼問題。尤其是檢查兩個命令是否在一個字符串中被引用,否則你將在本地執行第二個命令。 Scp部分也可以工作。 – viraptor