Rafraîchissement continu Netstat (la montre modifie la sortie)

18

J'utilise cette simple commande pour surveiller les connexions (pour faire face à certaines attaques DoS récentes) sur mon serveur Debian:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Comment puis-je l'exécuter en continu? Ainsi, il se rafraîchira une fois par minute (ou toute quantité de temps donnée, bien sûr). J'ai essayé de regarder:

watch -n 30 "netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"

Mais cela a changé la sortie de nice list avec nombre de connexions en quelque chose comme ceci:

1 tcp        0  10015 [LOCAL IP]
...
1 Proto Recv-Q Send-Q Local Address           Foreign Address         State
1 Active Internet connections (w/o servers)

L'IP externe n'est donc pas affichée. Y a-t-il quelque chose que j'ai manqué?

Voici à quoi ressemble la sortie d'origine:

  2 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  7 [IP ADDRESS]
 16 [IP ADDRESS]
 71 [IP ADDRESS]

Et quand je dis [LOCAL IP]je veux dire l'IP de ma machine.

Lorsque je l'exécute, il se -cfige.

Ruslan Osipov
la source
Utilisez-vous Watch avec des privilèges root? La commande semble solide et semble se comporter comme je m'y attendrais sur ma machine. L'exécution sans n'imprimera pas les adresses et, après 30 secondes, un message d'erreur peut s'afficher.
@StewartPlatt Je l'exécute sous root. J'ai ajouté la sortie de commande d'origine. Le truc, c'est que quand je regarde - elle ne sort que mon adresse IP et ne sort pas du tout des IP connectées à moi.

Réponses:

22
netstat -c

peut vous aider si je n'ai pas mal compris votre problème. -c signifie --continuous.

EDIT: c'est parti:

watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"

J'ai ajouté un \ avant $.

hcg
la source
déjà essayé, désolé, je n'ai pas précisé cela dans une question. Il se fige juste quand j'ajoute -c.
Je m'en suis rendu compte, le 5 $ est supprimé à la sortie de la montre. Il y a peut-être un problème de guillemets. J'y creuse ..
merci, bon à savoir pour échapper aux caractères spéciaux dans la montre
1

Exécutez simplement une boucle while qui dort pendant 60 secondes

[root@host] $ while true
> do
> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
> sleep 60
> done

Cela vous donnera la même sortie toutes les 60 secondes

Chris Alderson
la source