netstat -c
pode ajudá-lo se não entendi mal o seu problema. -c significa --continua.
EDITAR: lá vai você:
watch -n 30 "netstat -ntu | awk '{print \}' | cut -d: -f1 | sort | uniq -c | sort -n"
Eu adicionei um \ antes de $.
Estou usando este comando simples para monitorar conexões (para lidar com alguns ataques DoS recentes) no meu servidor Debian:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Como posso executá-lo continuamente? Então ele se atualizará uma vez por minuto (ou qualquer quantidade de tempo, é claro). Eu tentei assistir:
watch -n 30 "netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"
Mas isso mudou a saída da lista legal com um número de conexões para algo assim:
1 tcp 0 10015 [LOCAL IP]
...
1 Proto Recv-Q Send-Q Local Address Foreign Address State
1 Active Internet connections (w/o servers)
Portanto, o IP externo não está sendo exibido. Existe algo que eu perdi?
Assim é como a saída original parece:
2 [IP ADDRESS]
4 [IP ADDRESS]
4 [IP ADDRESS]
4 [IP ADDRESS]
7 [IP ADDRESS]
16 [IP ADDRESS]
71 [IP ADDRESS]
E quando digo [LOCAL IP]
, refiro-me ao IP da minha máquina.
Quando eu executo com -c
, apenas congela.
Basta executar um loop while que dura 60 segundos
[root@host] $ while true
> do
> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
> sleep 60
> done
Isso fornecerá a mesma saída a cada 60 segundos