AWSのEC2はデフォルトだとpingによる疎通確認が出来ません。
AWS Security Groupのデフォルト設定ではSSH(TCP22)しか空いていないためです。
そこで、SSHを利用したshellscriptでpingっぽい確認を使用と思います。
■やりたいこと
■スクリプト
#!/bin/bash
COUNT=1
while true
do
echo "Try:" $COUNT
date
timeout 1 ssh 11.22.33.44
date
echo #
COUNT=`expr $COUNT + 1`
done
※無限ループするため、終了したい場合はctrl+cで停止ください。
※10行目のIPアドレスについては適宜書き換えてください。
◇解説
EC2にSSHログインするためにはプライベートキー(.pem証明書)が必要となります。
ですが、その証明書を指定しない場合は以下のエラーとなるため、こちらを通信応答として利用します。
よって10行目のsshコマンドにおいて、敢えて証明書オプション等を付けずに実行します。
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
また、EC2へ通信できない場合は20秒後に以下のエラーとなります。さすがに20秒はちょっと待てないので、10行目のsshコマンドを1秒でtimeoutしています。
ssh: connect to host 11.22.33.44 port 22: Connection refused
■結果
正常時はPermission denied
の応答が表示されます。
Try: 1
2022年 10月 13日 木曜日 18:27:09 JST
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
2022年 10月 13日 木曜日 18:27:09 JST
Try: 2
2022年 10月 13日 木曜日 18:27:09 JST
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
2022年 10月 13日 木曜日 18:27:09 JST
Try: 3
2022年 10月 13日 木曜日 18:27:09 JST
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
2022年 10月 13日 木曜日 18:27:09 JST
異常時はPermission denied
が応答されないことで見分けます。
Try: 80
2022年 10月 13日 木曜日 18:30:54 JST
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
2022年 10月 13日 木曜日 18:30:55 JST
Try: 81
2022年 10月 13日 木曜日 18:30:55 JST
2022年 10月 13日 木曜日 18:30:56 JST
Try: 82
2022年 10月 13日 木曜日 18:30:56 JST
2022年 10月 13日 木曜日 18:30:57 JST
Try: 83
2022年 10月 13日 木曜日 18:30:57 JST
2022年 10月 13日 木曜日 18:30:58 JST
(中略)
Try: 98
2022年 10月 13日 木曜日 18:31:12 JST
2022年 10月 13日 木曜日 18:31:13 JST
Try: 99
2022年 10月 13日 木曜日 18:31:13 JST
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
2022年 10月 13日 木曜日 18:31:13 JST
※Try81~98あたりでAWS Security Groupで通信制限を行いました
#もうちょっと出力結果とか色々きれいにできそうですが、シンプルが一番ということで何もしていません。気になる方はお好きにカスタムしてみてください。
■参考
SSH を使用した Linux インスタンスへの接続
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html