2012-06-17 47 views
1

我想通過編寫一個執行多個ssh命令的腳本來減少鍵入。 雖然沒有問題,只需打開例如一個編輯,我不能與特定的文件打開編輯器:SSH x轉發/通過腳本屏幕

這個工程:

editFile="ssh -X -t [email protected]$serverIP 'nano'" 
$editFile 

這並不:

editFile="ssh -X -t [email protected]$serverIP 'nano ~/test'" 
$editFile 

我也不能連接到像這樣的畫面,而只是開始屏幕正常工作:

viewScreen="ssh -X -t [email protected]$serverIP 'screen -r screen1' 
$viewScreen 

如果我添加-v標誌,建立連接後,我得到這個錯誤:

debug1: Sending command: 'nano /home/herb/.Scripts/test.txt' 
bash: nano ~/test: No such file or directory 

debug1: Sending command: 'screen -r screen1' 
bash: screen -r screen1: command not found 

兩個命令都沒有問題的工作,如果鍵入的終端,所以必須有某種魔力,我失蹤這裏!

+1

請參閱[BashFAQ/050](http://mywiki.wooledge.org/BashFAQ/050)。 –

回答

3

一個問題是,您正在使用單引號「命令」參數。沒有他們,它應該工作(或至少給你一個不同的錯誤)。

您也應該使用「別名」命令,而不是分配命令變量:

alias viewScreen="ssh -X -t [email protected]$serverIP screen -r screen1" 
viewScreen 

意識到,這定義別名時估算的變量。因此應該定義$ username和$ serverIP。

+0

用雙引號替換單引號給出了相同的錯誤... – herbert

+1

抱歉意外地過早地發送了評論...作爲一個實驗,我用它像你一樣,沒有任何引號,它的工作!除了它只在我使用變量時才起作用,別名方法給了我一個找不到的命令!我在印象中需要圍繞命令部分的單/雙引號。顯然他們是腳本失敗的唯一原因。你能否給我另一個提示,說明爲什麼我應該使用別名? – herbert