2016-09-13 64 views
0

因此,對於我的腳本,我希望ssh進入遠程主機,並在腳本結束後保留​​在遠程主機中,並且還要將目錄更改爲與遠程主機匹配腳本結束。Ksh腳本:如何保持在ssh中並繼續運行腳本

#!/bin/ksh 

ssh -t -X [email protected] 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh [email protected]; cd $HOME/bin/folder2; echo $PWD' 

PWD在第二個ssh之前正確更改。第二個ssh的原因是因爲它結束了正確的遠程主機中的腳本,但它不會保留我試圖通過將命令放在其後的目錄更改,但它們不會執行。

有沒有人有任何想法?

+1

你想解決什麼特別的任務?它看起來像你需要'screen'工具 –

+0

我的腳本sshs snd執行數據分析並將其輸出到遠程主機上的一個文件夾中。腳本結束後,用戶將從遠程主機啓動。 我希望用戶保留在遠程主機中,並位於數據分析完成的目錄中。 – BennyBen

回答

1

在命令列表的末尾只要啓動一個shell:

ssh -t -X [email protected] 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh [email protected]; cd $HOME/bin/folder2; echo $PWD; ksh' 

如果您希望shell是登錄一個(即一個讀取.profile),使用exec -l

ssh -t -X [email protected] 'cd $HOME/bin/folder1; exec -l ksh' 

如果遠程服務器使用的舊ksh版本不支持內置的exec -l,並且如果bashksh93可用,則此處爲解決方法:

ssh -t -X [email protected] 'cd $HOME/bin/folder1; exec bash -c "exec -l ksh"' 
+0

這是行不通的: ssh -t -X mylogin @ myremotemachine'cd $ HOME/bin/folder1; ksh' 但我怎麼讓它看起來像原來的殼而不是基本的殼?我想我現在需要執行.profile,我怎麼把它加到那個命令上而不讓用戶一直輸入它呢? – BennyBen

+0

我得到一個ksh:-l:找不到消息。 – BennyBen

+0

什麼操作系統正在運行遠程主機和什麼版本的'ksh'? – jlliagre