netstatのgrep正規表現ポート範囲

netstatのgrep正規表現ポート範囲

私のnetstat出力から抽出したいと思います32000-64000。これを試しましたが、egrep "^[3,4,5,6]"最初から始める必要があります32000awkどのようなスクリプトを使用する必要がありますか?

Linux# netstat -nau
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 10.0.0.20:55238      0.0.0.0:*
udp        0      0 10.0.0.20:55240      0.0.0.0:*
udp        0      0 10.0.0.20:31242      0.0.0.0:*
udp        0      0 10.0.0.20:55244      0.0.0.0:*
udp        0      0 10.0.0.20:32246      0.0.0.0:*
udp        0      0 10.0.0.20:55248      0.0.0.0:*
udp        0      0 10.0.0.20:12250      0.0.0.0:*
udp        0      0 10.0.0.20:19252      0.0.0.0:*

答え1

使用されなくなったので、上位レベルのnetstat後続バージョンを試してみてはいかがでしょうかss

ss -nau '( sport >= 32000 and sport <= 64000 )'

答え2

アッ解決策:

netstat -nau | awk -F'[[:space:]]+|:' 'NR>2 && $5>=32000 && $5<=64000'

あなたの場合、出力は次のとおりです。

udp        0      0 10.0.0.20:55238      0.0.0.0:*
udp        0      0 10.0.0.20:55240      0.0.0.0:*
udp        0      0 10.0.0.20:55244      0.0.0.0:*
udp        0      0 10.0.0.20:32246      0.0.0.0:*
udp        0      0 10.0.0.20:55248      0.0.0.0:*

  • -F'[[:space:]]+|:'- フィールド区切り記号

  • NR>2 && $5>=32000 && $5<=64000- ポート番号が必要な範囲内であることを確認してください。


選ぶエグレフ解決策:

netstat -nau | egrep ':(3[2-9]|[45][0-9])[0-9]{3}|6[0-3][0-9]{3}|64000'
  • (3[2-9]|[45][0-9])[0-9]{3}32000- からまでの数字を扱います。59999

  • 6[0-3][0-9]{3}|6400060000- からまでの数字を扱います。64000

関連情報