2016-09-13 2 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' 

2番目のsshの前にPWDが正しく変更されます。 2番目のsshの理由は、正しいリモートホストでスクリプトを終了するためですが、後でコマンドを入力することで試みたディレクトリの変更は保持されませんが、実行されません。

誰にもアイデアはありますか?

+1

どのようなタスクを解決したいですか? 'screen'ユーティリティが必要なようです。 –

+0

私のスクリプトsshsはデータ解析を実行し、それをリモートホスト上のフォルダに出力します。スクリプトが終了すると、ユーザーはリモートホストから起動されます。 私は、リモートホストに残って、データ分析が行われたディレクトリにいて欲しいです。 – BennyBen

答えて

1

だけコマンドリストの最後にシェルを起動します。

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

あなたはシェルがログイン1(.profileを読み込みすなわち1)になりたい場合は、exec -lを使用します。

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

リモートサーバーがexec -lの組み込みサーバーをサポートしていない古いkshリリースを使用していて、bashまたはksh93が利用可能な場合は、回避策を次に示します。

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:not foundメッセージが表示されます。 – BennyBen

+0

リモートホストを実行しているOSと 'ksh'のバージョンは何ですか? – jlliagre

関連する問題