0

改行ですか?促す?正確には?

plink を介して powershell を実行しようとすると、コマンドが実行されますが、plink はその終了を認識せず、セッションがハングします。ただし、最も興味深いのは、シェルを介して (Putty を介して) コマンドを送信すると、コマンドが正常に実行されることです。ただし、plink 経由で送信すると、同じコマンドがハングします...

何か案は?

4

4 に答える 4

1

他のプログラムでも同じ問題がありました。最後のコマンドの後に>&2(出力をstd errにリダイレクト)を使用しましたが、これは問題なく機能しました。

于 2010-09-28T10:12:04.853 に答える
1

わかりました、問題が何であるかはまだよくわかりませんが、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

お役に立てれば

于 2010-06-07T08:58:31.727 に答える
1

Telnet は、生の TCP 接続に近いものです。Putty が返す必要があるのは、サーバーからの応答だけです。残りは、シェルと SSH/Telnet サーバーによって制御されます。

タスクの実行中は、コマンド プロンプトは返されません。

Linux、Unix、および Mac OS X では、コマンドの&後に を追加して、コマンドをバックグラウンドで実行し、コマンド プロンプトに戻ることができます。

ローカルのターミナル/コマンド シェルで実行してみてください。基本的に同じものを見る必要があります。

于 2010-06-04T16:34:39.073 に答える
0

リモート シェル スクリプトに「return XX」を追加するだけで、ローカル コンソールへの戻り値になります。plink が終了したら、タイプecho %errorlevel%して戻りコード XX を確認します。

于 2010-11-01T03:36:30.123 に答える