1. ホーム
  2. bash

[解決済み] SSH接続をチェックするbashスクリプトを作成するには?

2022-12-06 05:43:16

質問

リモートマシンにログインし、秘密鍵と公開鍵を作成するbashスクリプトを作成しているところです。

私の問題は、リモート マシンはあまり信頼性が高くなく、常に稼働しているわけではないことです。SSH 接続が稼働しているかどうかをチェックする bash スクリプトが必要です。将来使用するために実際に鍵を作成する前に。

どのように解決するのですか?

sshが出す戻り値で確認できます。

$ ssh -q user@downhost exit
$ echo $?
255

$ ssh -q user@uphost exit
$ echo $?
0

EDIT: 他の方法として、nmapを使うこともできます(鍵やログイン情報を持つ必要がありません)。

$ a=`nmap uphost -PN -p ssh | grep open`
$ b=`nmap downhost -PN -p ssh | grep open`

$ echo $a
22/tcp open ssh
$ echo $b
(empty string)

しかし、メッセージを grep する必要があります (nmap はポートがフィルタリングされたか、閉じられたか、開かれたかを示すために戻り値を使用しません)。

EDIT2:

もし、ssh-portの実際の状態に興味があるのなら、代わりに grep openegrep 'open|closed|filtered' :

$ nmap host -PN -p ssh | egrep 'open|closed|filtered'

一応、完結に。