改行ですか?促す?正確には?
plink を介して powershell を実行しようとすると、コマンドが実行されますが、plink はその終了を認識せず、セッションがハングします。ただし、最も興味深いのは、シェルを介して (Putty を介して) コマンドを送信すると、コマンドが正常に実行されることです。ただし、plink 経由で送信すると、同じコマンドがハングします...
何か案は?
改行ですか?促す?正確には?
plink を介して powershell を実行しようとすると、コマンドが実行されますが、plink はその終了を認識せず、セッションがハングします。ただし、最も興味深いのは、シェルを介して (Putty を介して) コマンドを送信すると、コマンドが正常に実行されることです。ただし、plink 経由で送信すると、同じコマンドがハングします...
何か案は?
他のプログラムでも同じ問題がありました。最後のコマンドの後に>&2(出力をstd errにリダイレクト)を使用しましたが、これは問題なく機能しました。
わかりました、問題が何であるかはまだよくわかりませんが、TeamCity フォーラムで回避策を見つけました。
基本的に、次のように、任意の文字列をエコーし、その出力を powershell 実行可能ファイルにパイプします。
echo 'executing powershell...' | C:\windows\system32\windowspowershell \v1.0\powershell.exe exit 1
したがって、完全な plink コマンドは次のようになります。
plink.exe user@someIp -i key.ppk -P 22 -batch -v "echo 'executing powershell...' | C:\windows\system32\windowspowershell\v1.0\powershell.exe exit 1"
注意 Plink は、このメソッドを使用してリターン コードとコンソール出力を通過します。
TeamCity フォーラムへのリンク:
http://youtrack.jetbrains.net/issue/TW-6021
お役に立てれば
Telnet は、生の TCP 接続に近いものです。Putty が返す必要があるのは、サーバーからの応答だけです。残りは、シェルと SSH/Telnet サーバーによって制御されます。
タスクの実行中は、コマンド プロンプトは返されません。
Linux、Unix、および Mac OS X では、コマンドの&
後に を追加して、コマンドをバックグラウンドで実行し、コマンド プロンプトに戻ることができます。
ローカルのターミナル/コマンド シェルで実行してみてください。基本的に同じものを見る必要があります。
リモート シェル スクリプトに「return XX」を追加するだけで、ローカル コンソールへの戻り値になります。plink が終了したら、タイプecho %errorlevel%
して戻りコード XX を確認します。