-w 1
を使用しています タイムアウトを 1 秒に制限します。 -v
も使用しています コメントに記載されている理由により。 -n
を使用しました 逆引き DNS ルックアップの遅延を拒否するには...
[[email protected] ~]$ for i in $(echo "172.16.1.1,172.16.1.5"|tr "," "\n"); do echo -e "22\n80\n443\n8080" | xargs -i nc -w 1 -zvn $i {}; done
(UNKNOWN) [172.16.1.1] 22 (ssh) open
(UNKNOWN) [172.16.1.1] 80 (www) : Connection timed out
(UNKNOWN) [172.16.1.1] 443 (https) open
(UNKNOWN) [172.16.1.1] 8080 (http-alt) : Connection timed out
(UNKNOWN) [172.16.1.5] 22 (ssh) open
(UNKNOWN) [172.16.1.5] 80 (www) open
(UNKNOWN) [172.16.1.5] 443 (https) open
(UNKNOWN) [172.16.1.5] 8080 (http-alt) : Connection refused
[[email protected] ~]$
私と同じくらい GNU Parallel が好きなら、これを試してみてください:
parallel nc -vz host ::: 22 80 443 8080
サンプル出力:
Connection to foo.example.com 22 port [tcp/ssh] succeeded!
nc: connect to foo.example.com port 80 (tcp) failed: Connection refused
nc: connect to foo.example.com port 443 (tcp) failed: Connection refused
nc: connect to foo.example.com port 8080 (tcp) failed: Connection refused
この方法は、ポートへの接続をシリアルではなくパラレルでテストしているため、場合によっては高速です。具体的には、これはリモート ホスト (または介在するファイアウォール) がパケットを破棄してステルス状態を維持する場所です (接続の成功や強制的な拒否とは対照的に)。
ヒント: ほとんどの Linux ディストリビューションでは、parallel
をインストールできます。 パッケージマネージャーから。
更新: parallel
で 、これは非常によく一般化されており、複数のホストと複数のポートが必要になることがよくあるケースをカバーします。次の例では parallel
を使用しています 外積を反復処理するため、ネストされたループを記述する必要はありません。
parallel nc -vz ::: host1 host2 host3 ::: 22 80 443 8080
出力:
Connection to host1 22 port [tcp/ssh] succeeded!
Connection to host1 80 port [tcp/http] succeeded!
Connection to host1 443 port [tcp/https] succeeded!
nc: connect to host1 port 8080 (tcp) failed: Connection refused
Connection to host2 22 port [tcp/ssh] succeeded!
nc: connect to host2 port 80 (tcp) failed: Connection refused
nc: connect to host2 port 443 (tcp) failed: Connection refused
nc: connect to host2 port 8080 (tcp) failed: Connection refused
Connection to host3 22 port [tcp/ssh] succeeded!
nc: connect to host3 port 80 (tcp) failed: Connection refused
nc: connect to host3 port 8080 (tcp) failed: Connection refused
nc: connect to host3 port 443 (tcp) failed: Connection refused
前の例のように parallel
接続テストを並行して実行します。デフォルトの並列処理はシステムのスレッド数ですが、-j
で簡単にオーバーライドできることに注意してください。 任意の値に切り替えます。 parallel -j 50 ...
で簡単に逃げることができます ソケットのテストは CPU を集中的に使用するタスクではないため、それ以上です。
コマンドライン (パブリック DNS、AMI など) にログインしているときに、ec2 Linux インスタンス情報を取得するにはどうすればよいですか?
特定の数のパケットがキャプチャされた後、tcpdump でキャプチャを停止するにはどうすればよいですか?