起動時にスクリプトから自動的に putty を実行し、プログラムが終了すると自動的に再起動するヘッドレス マシンを作成しようとしています。
これはほとんどの状況では技術的には正常に動作しますが、ネットワークの問題がある場合は、接続が切断されたことを示すポップアップが表示されて putty が停止します。
「終了時にウィンドウを閉じる」オプションを見たことがありますが、これが必要なことはわかっています。しかし、これを実行できるのはウィンドウからのみです。コマンド ラインからこの設定を変更する方法が見つかりません。
これが可能かどうか、また何を設定すればよいかを知っている人はいますか... または、これがこのマシンで実行されるすべてであるため、デフォルトを変更することだけが可能なのでしょうか?
答え1
最善の解決策は、PuTTY でカスタム セッションを作成し (「終了時にウィンドウを閉じる」設定を変更)、そのセッションをコマンド ラインからロードすることですが、GUI にアクセスできない場合は簡単ではありません。ただし、コマンド ラインから個別の設定を指定する方法はわかりません。
ただし、レジストリを編集できる場合は、新しいキーを作成してセッションを作成できます。
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
ここで、GUI のセッション設定に対応する値を追加できます。したがって、終了時に常にウィンドウを閉じるようにしたい場合は、値 2 を含む CloseOnExit という名前の DWORD 値を追加します。指定されていない他のすべてはデフォルトのままになります。
次に、
-load "session name"
をコマンド ライン文字列に追加します。ここで、「セッション名」は作成したキーの名前です。その後にその他のコマンド ライン オプション (サーバー、ログイン名、パスワードなど) を追加すれば、設定は完了です。
私はこれを自分でテストしましたが、手動で編集する前にレジストリをバックアップしておくのが賢明です。
あるいは、PuTTYのフォーク(例えばパテトレイ) には、中断後に自動的に再接続する機能がありますが、どれほどうまく機能するかは保証できません。
答え2
このエラーが発生した場合:
そうすれば、AutoIt スクリプトこのウィンドウが表示されるまで待機し、確認します。
$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")
スクリプトを小さなスタンドアロンの .exe ファイルにコンパイルすることもできます。PuTTY を起動する前に、これをバッチ ファイルに追加します。
答え3
遅れて参加したとは思いますが、putty の も使用できますplink.exe
。putty と同じパラメータを取りますが、コマンドと同じようにインラインで実行されますssh
。また、処理をブロックして失敗ステータスを返します。これは、多数のコマンドの途中で接続が失敗した場合に非常に役立ちます。