2014-02-13 49 views
0

我試圖遠程運行一個shell腳本。我在一臺機器上有一個資源(.txt文件),在另一臺機器上有一個shell腳本,但在同一個網絡中。該腳本駐留在特定的目錄中,並且該腳本將一些二進制文件駐留在目標機器中的所有其他目錄中。現在,我無法遠程運行腳本。但是我可以運行一個簡單的shell程序,它沒有任何本地依賴。你能否建議解決方案來解決這個問題?如何在遠程運行shell腳本時解決依賴問題?

這是我用來運行shell-script-without-any-dependencies的命令。

cat input.txt | ssh [email protected] "sh path/to/shell/script/tokenize.sh" 

上運行的腳本的依賴,我有以下錯誤,

"ambiguous redirect" 
../../deter-4/bin/determine: No such file or directory 
../../deter-4/bin/determine1: No such file or directory 

現在,我怎麼能告訴接受依賴性運行shell腳本時

+0

請詳細說明「我無法遠程運行腳本」。描述你的觀察,當你嘗試這樣做。 – Alfe

+0

@Alfe由於腳本中有諸如../../deter-4/bin/determine的語句,我得到一個錯誤「模棱兩可的重定向」。對於這些陳述,我得到「沒有這樣的文件或目錄」錯誤。很明顯,該程序無法解決依賴關係。不幸的是,我不知道如何在遠程執行時給出路徑 – kmario23

+0

標題與問題沒有任何關係 - 依賴關係解決方案與實際問題沒有任何關係。也許它可以被編輯爲更合適的東西? –

回答

5

我覺得你的問題是工作目錄。試試這樣:

cat input.txt | ssh [email protected] "sh -c 'cd /path/to/shell/script; ./tokenize.sh'" 

您的腳本似乎只能從特定的工作目錄運行。你在你的評論中提到的關於相對路徑的錯誤消息(從../../開始)至少表明了這一點。

+0

工作就像一個魅力。非常感謝:) – kmario23

+3

'sh -c'...''是不必要的; 'ssh'的參數被傳遞給登錄shell,因此可以是任意序列的shell命令。 – chepner

+0

對,@chepner。我對這個分號不太確定,所以我採取了保存路徑。但我現在傾向於同意。 – Alfe