私はこれを検証スクリプトの一部として使用し、nc
予想される出力と比較して、リストされた各コマンドの出力を確認します。nc
例えば、
nc -zvw1 serv1.host.com 443 | gawk '{print $7}' Expected output: succeeded!
私が直面している問題は、ポート範囲を確認したい場合は、一部のテストが実際に返される可能性がありますがsucceeded!
保証できないことです。みんなポートはそのまま返されます。コマンドと予想されるcmd:output
出力をリストした構成ファイルと比較しているため、これが問題になります1:1
。
次のようなものをリストする代わりに:
nc -zvw1 serv1.host.com 443 | gawk '{print $7}' nc -zvw1 serv1.host.com 444 | gawk '{print $7}' nc -zvw1 serv1.host.com 445 | gawk '{print $7}'
Expected result: succeeded! Expected result: succeeded! Expected result: succeeded!
nc
私は失敗を強制できるようにしたいです。どの範囲内のポートにエラーが発生するため、この場合、構成は次のように単純化できます。
nc -zvw1 serv1.host.com 443-445 | gawk '{print $7}' Expected result: succeeded!
残念ながら、これは簡単な問題の長い説明です。謝る
答え1
これはうまくいくかもしれません:
seq 443 445 \
| xargs -n1 sh -c 'nc -zvw1 serv1.host.com $0 >/dev/null 2>&1 || (echo error! && exit 255)' 2>/dev/null \
&& echo succeeded!
デフォルトでは、ポート範囲を使用してシミュレートseq
し、戻り値をxargs
利用して、指定された各ポート番号への接続が中断または成功したときに設定します。nc
echo error!
exit 255
xargs
echo succeeded!