
약간의 문제가 있습니다. 60초마다 다음 명령을 실행하는 스크립트를 만들고 싶습니다.
netstat - tn
그러면 다음과 유사한 출력이 제공됩니다.
root@guest:~# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 111 111.111.141.36:22 111.11.11.223:54327 ESTABLISHED
외부 주소를 저장하는 데에만 관심이 있습니다. 어떻게 해야 합니까?
나는 다음 명령을 시도했습니다
root@guest:~# watch -n 300 netstat -tn > results_mon_27.txt
모든 데이터를 텍스트 파일에 기록하면 아래와 같이 서식 문제가 발생하므로 외국 주소만 수집하는 것이 좋습니다.
^[[?1049h^[[1;40r^[(B^[[m^[[4l^[[?7h^[[H^[[2JEvery 300.0s: netstat -tn^[[1;138Hguest: Mon Aug 21 16:45:31 2017^[[3;1HActive Internet connections (w/o servers)
^[[4dProto Recv-Q Send-Q Local Address^[[4;45HForeign Address^[[4;69HState
^[[5dtcp^[[5;12H0^[[19G0 45.76.141.36:38708^[[45G192.42.115.102:9004 TIME_WAIT
^[[6dtcp^[[6;12H0 40 45.76.141.36:22^[[6;45H193.36.8.223:54327^[[69GESTABLISHED^[[40;168H^[[1;159H50^[[5;34H22 ^[[5;47H3.36.8.223:54327 ESTABLISHED^[[6;18H6$
^[[5d^[[M^[[1;160H5
^[[6dtcp^[[6;12H0^[[19G0 45.76.141.36:22^[[6;45H58.242.83.32:25719^[[69GESTABLISHED^[[40;168H
^[[6d^[[J^[[1;159H10^[[40;168H
^[[5d^[[L^[[1;160H5
^[[5dtcp^[[5;12H0^[[19G0 45.76.141.36:22^[[5;45H196.200.176.80:37384 ESTABLISHED
^[[7dtcp^[[7;12H0^[[19G0 45.76.141.36:22^[[7;45H58.242.83.32:61038^[[69GESTABLISHED^[[40;168H
^[[5d^[[M^[[1;159H20^[[6;58H49490^[[40;168H^[[1;160H5^[[6;34H38722^[[45G192.42.115.102:9004
^[[7dtcp^[[7;12H0 68 45.76.141.36:22^[[7;45H58.242.83.32:42510^[[69GESTABLISHED^[[40;168H^[[1;159H30^[[7;18H 0^[[7;58H38678^[[40;168H
^[[7d^[[J^[[1;160H5^[[5;45H58.242.83.32:15804^[[6;34H22 ^[[6;47H3.36.8.223:54327 ^[[40;168H
^[[5d^[[M^[[1;159H40
^[[6dtcp^[[6;12H0^[[19G0 45.76.141.36:22^[[6;45H58.242.83.32:14118^[[69GESTABLISHED^[[40;168H^[[1;160H5^[[6;60H003
답변1
외부 주소는 5번째 열이므로 각 열에 대한 데이터를 쉽게 수집/조작할 수 netstat
있는 출력을 사용해 보세요.awk
netstat -tn|awk '{print $5}'
출력에는 외부 주소인 다섯 번째 열만 제공됩니다.
#!/bin/bash
while true
do
netstat -tn|awk '{print $5}' >> output.netstat
sleep 60
done