質問

DOSバッチスクリプトでは、Plinkを使用してリモート(Windows)コンピューターで単一のコマンドを実行しています。以前は、このコマンドはローカルマシンでのみ実行され、成功を決定するために返品コードに依存していました。この情報をPlinkから簡単に戻す方法はありますか?

役に立ちましたか?

解決

それは不可能です plink. 。現在のコンセンサスは、リモートスクリプトを持つことです echo ログファイルへのその終了コード、次に使用します pscp ログファイルをローカルマシンに転送します。

見る http://fixunix.com/ssh/74235-errorlevel-capturing-plink.html.

他のヒント

Plink 0.66で

C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@myserver exit 42

C:\Code>echo %ERRORLEVEL%
42

また、接続が行われない時期に関する@John Wiersbaの懸念については、これは修正されているように見えます

C:\CodeMisc>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@garbageservername exit 42
Unable to open connection:
Host does not exist
C:\Code>echo %ERRORLEVEL%
1

また、の配管に注意してください echo Y ...これにより、サーバーの指紋を自動的に受け入れることができます(控えめに言っても少し危険です...しかし、ログインサーバーはロードバランスが取れているため、常に異なる指紋を取得しています:()

ただし、@LeonBloyが指摘しているように、Plinkにはゼロの出口コードを返す接続条件がまだいくつかあります。出口コード範囲がわかっていて、ファイルを介してWindowsに戻る良い方法がない場合。 exitコードに+3(exitコードが決して== 253-255にならないことがわかっている場合)または少し単に適用することもできます(私は提案することができます exit $(($?|128)) - バッシュで)。

または、正確な出口コードを気にしない場合は、成功のために2を返し、失敗のためにゼロを返すことができます。したがって、2つの終了コードは障害を示します。バッシュではこれは次のとおりです。 echo $((($?==0) << 1)). 。これは、最も堅牢な汎用ソリューションですが、デバッグ性のために出口コードがログに記録されていることを確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top