0

このコマンドに出くわしました

watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"

サーバーに接続されている IP が一覧表示されますね。ここでパイプされたすべてのコマンドを分解して、サーバー トラフィックの監視の目的で類似している可能性のある他のコマンドを教えてください。

4

1 に答える 1

0

watch一連のコマンドを-n 5050 秒ごとに繰り返し実行するため、時間の経過に伴う出力の変化を確認できます。

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正しく機能します (ソートされた入力が必要です)。では-cuniq隣接する行が 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
于 2018-08-24T07:11:15.757 に答える