내 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}|64000
60000
- 에서 까지의 숫자를 다룹니다 .64000