「nc -z」コマンドでポートスキャンを行うことが一般的でしたが、centos7でncコマンドの「-z」オプションが使えなくなりました。
以下のように代替します。
1 |
timeout 1 bash -c 'cat < /dev/null > /dev/tcp/接続先ホスト名/ポート番号' |
「/dev/tcp/接続先ホスト名/ポート番号」の箇所がキモです。
たとえば、接続先ホストが以下のDAXのエンドポイントの時は成功例のように記述します。
接続先:kamokamo.xxxxxx.clustercfg.dax.apne1.cache.amazonaws.com
成功例
1 2 3 4 |
# timeout 1 bash -c 'cat < /dev/null > /dev/tcp/kamokamo.xxxxxx.clustercfg.dax.apne1.cache.amazonaws.com/8111' # # echo $? 0 |
コネクション失敗によるタイムアウト
存在しないホスト名を指定してタイムアウトを発生させています。
1 2 3 4 5 |
# timeout 1 bash -c 'cat < /dev/null > /dev/tcp/kamokamokamokamo.com/8080' bash: kamokamokamokamo.com: Name or service not known bash: /dev/tcp/kamokamokamokamo.com/8080: Invalid argument $ echo $? 1 |
タイムアウトによるコネクション失敗
DAXでは使用できない80番ポートを指定してコネクションエラーを発生させています。
1 2 3 |
# timeout 1 bash -c 'cat < /dev/null > /dev/tcp/kamokamo.xxxxxx.clustercfg.dax.apne1.cache.amazonaws.com/80' $ echo $? 124 |