Exportar dados do netstat do terminal para o arquivo csv

1

tendo um pequeno problema, estou procurando criar um script que execute o seguinte comando a cada 60 segundos

netstat - tn

que deve dar uma saída como

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

e estou interessado apenas em armazenar o endereço externo, como posso conseguir isso?

eu tentei o seguinte comando

root @ guest: ~ # watch -n 300 netstat -tn > results_mon_27.txt

para registrar todos os dados em um arquivo de texto, mas isso causou problemas com a formatação, como visto abaixo, então seria melhor se eu apenas coletasse o endereço externo

^[[?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
    
por test1234321 22.08.2017 / 10:19

1 resposta

1

como o endereço externo é a quinta coluna, experimente a saída de netstat com awk . É possível coletar / manipular dados por coluna com facilidade.

netstat -tn|awk '{print $5}' 

a saída fornecerá apenas a quinta coluna que é o endereço estrangeiro

#!/bin/bash

while true
do
    netstat -tn|awk '{print $5}' >> output.netstat
    sleep 60
done
    
por 22.08.2017 / 10:40