このコマンドに出くわしました
watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"
サーバーに接続されている IP が一覧表示されますね。ここでパイプされたすべてのコマンドを分解して、サーバー トラフィックの監視の目的で類似している可能性のある他のコマンドを教えてください。
このコマンドに出くわしました
watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"
サーバーに接続されている IP が一覧表示されますね。ここでパイプされたすべてのコマンドを分解して、サーバー トラフィックの監視の目的で類似している可能性のある他のコマンドを教えてください。
watch
一連のコマンドを-n 50
50 秒ごとに繰り返し実行するため、時間の経過に伴う出力の変化を確認できます。
netstat
ネットワーク接続、インターフェースなどに関する情報を表示します。このオプションは、-n
数値出力を-t
選択し、TCP 接続を-u
選択し、UDP を選択します。したがって、アクティブな TCP および UDP 接続のテーブルが取得され、IP アドレスと数値のポート番号だけに正規化されます。
awk
およびcut
は、1 列だけを抽出するツールです。(または、まあ、Awk はそれ自体が単純なプログラミング言語なので、実際にはもっと多くのことができるはずです。) これはおそらく単一の Awk スクリプトにリファクタリングする必要があります。
awk '{ split($5, n, /:/); print n[1] }'
これにより、出力の 5 列目のコロンの前にあるものが抽出されます。つまり、出力から末尾のポート番号のない IP アドレスが抽出されnetstat
ます。
(コマンドが二重引用符で囲まれているため、例のドル記号の前のバックスラッシュが必要ですwatch
。これを 内watch
で実行する場合は、バックスラッシュを元に戻します。)
sort | uniq | sort -n
は、出現回数で何かを順序付けるための一般的なイディオムです。最初sort
のものは、同じ行を隣り合わせに配置するだけなので、uniq
正しく機能します (ソートされた入力が必要です)。では-c
、uniq
隣接する行が 1 つにマージされた数が表示され、その数で並べ替えられます。
つまり、要約すると、ホストへの接続が開いている IP アドレスのリストが昇順で取得されます。sort -rn
(この特定の使用例では、数値的に逆順にソートするために、降順の方がおそらくより理にかなっています。)
これらのことを学びたい場合は、タスクを 2 つに分割するのが理にかなっています。半分はnetstat
、ネットワーク ツールを理解し、関連することであり、残りの半分は、潜在的に大量のコンピューターから人間が読める情報を抽出するための一般的なテキスト処理です。 -読み取り可能なデータ。前者については、おそらくネットワーク管理ハンドブックを参照してください。後者については、テキスト処理ユーティリティに特に焦点を当てたGNUのcoreutils
ドキュメントを参照してください。
エンターテインメントの価値のために、パイプライン全体を大部分が Awk にリファクタリングしたものを次に示します。
netstat -ntu |
awk '{ split($5, n, /:/); a[n]++ }
END { for (ip in a) print a[ip], ip }' |
sort -rn