6
votes

Comment faire une écoute de Grep sur le port 80 qui peut également filtrer autre port contient 80 de 8080 8088 ...?

Je veux utiliser Bash à Grep si un processus est écouté sur le port 80, mais je trébuche maintenant sur un autre numéro de port qui m'agace. Comment puis-je filtrer cela dans grep?

netstat -ant|grep LISTEN|grep 80|wc -l


0 commentaires

6 Réponses :


3
votes

Utiliser grep ": 80" au lieu de Grep 80


2 commentaires

Pas besoin d'échapper au : . Ce n'est pas spécial dans Grep.


TA, réponse mise à jour. Je suis un peu un lâche comme celui-là - en cas de doute, évasion;)



2
votes

Vous pouvez profiter du fait que les ports sont précédés d'un colon (comme : 80 ). La chose de jeûne serait alors quelque chose comme: xxx

de cette façon, vous n'appellez pas grep deux fois. En outre, Grep a la possibilité de compter des correspondances avec -c , de sorte que vous pouvez l'utiliser au lieu de wc : xxx


0 commentaires

8
votes

Je regarde la sortie de ma commande netstat code> et voyez ceci:

$ netstat -ant | awk '$6 == "LISTEN" && $4 ~ /[^0-9]80$/' | wc -l


4 commentaires

TCP 0 0 0.0.0.0:8080 0.0.0.0:* Écoute


NetStat -ant | awk '$ 6 == "Écoutez" && $ 4 ~ /(\.|\ :)8080$/' peut être meilleur


@DANZEN: Pas besoin d'échapper au côlon.


Mon netstat met une période et pas un côlon. Il suffit de changer la commande en $ netstat -ant | Awk '$ 6 == "Écoutez" && $ 4 ~ /: 80 $ /' | WC -L . Cela devrait gérer le problème. Si vous avez fait ceci: $ netstat -ant -ant | Awk '$ 6 == "Écoutez" && $ 4 ~ /[\.:]80$/' | wc -l , vous obtiendriez si netstat utilise un côlon ou une période. En fait, voir l'appendice sur ma réponse.



4
votes

au lieu de grepper la sortie de netstat code> - demandant plus d'informations que nécessaire, puis je supprime la majeure partie - demandez simplement fuser code> quel processus a le processus Vous vous souciez d'OUVERT:

fuser -n tcp ,1.2.3.4,80


1 commentaires

Tout à fait raison - cette réponse est donnée pour Linux (le système d'exploitation pour lequel la question est étiquetée).



0
votes

Si vous voulez que ce soit plus robuste, vous pouvez faire

netstat -ant |egrep  "^tcp +[[:digit:]]+ +[[:digit:]]+ +[[:digit:]\.]+\:80 +.*LISTEN *$"


0 commentaires

1
votes

La commande que vous recherchez est: netstat -ntpl | Grep ': port'

Exemple: xxx


1 commentaires

Tout d'abord, merci pour la réponse. La prochaine fois qu'il vaut mieux ajouter un peu d'explication sur votre résultat, par exemple quelles sont les options, etc.