netstat의 grep 정규식 포트 범위

netstat의 grep 정규식 포트 범위

내 netstat 출력에서 ​​를 추출하고 싶습니다 32000-64000. 이것을 시도했지만 egrep "^[3,4,5,6]"처음부터 시작해야 합니다 32000. awk어떤 종류의 스크립트를 사용해야 합니까 ?

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

관련 정보