Existe-t-il une commande que je peux exécuter à partir de bash qui me dira si un port est déjà ouvert?
28
Utilisez "netstat" pour vérifier les ports utilisant actuellement.
netstat -antp Proto Recv-Q Send-Q Adresse locale État de l'adresse étrangère PID / Nom du programme tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* LISTEN 16297 / named tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* ECOUTER 16297 / nommé tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* ECOUTER 16297 / nommé tcp 0 0127.0.0.1:53 0.0.0.0:* ECOUTER 16297 / nommé
Ceci (netstat) est la solution la plus rapide ...
... mais cela vous donne plus de contrôle (au détriment de la vitesse (parfois beaucoup de vitesse)) ...
L'exemple ci-dessus, par exemple, vous montre tous les ports TCP ouverts et à l'
LISTEN
état AND (-a
) appartenant à l'utilisateur Apache (www-data
).la source
Toutes les bonnes réponses.
Cependant, vous ne mentionnez pas si vous êtes connecté à l'ordinateur en question. ; P
Sinon, nmap est votre ami.
pour commencer, essayez:
nmap -O
target
amap est également un bon choix qui tentera également de deviner le logiciel serveur en saisissant les bannières.
pour commencer, essayez:
amap
target
1-6000
la source
Essayer
Si vous obtenez des résultats, quelque chose est à l'écoute et lié, par exemple
la source
Afficher les
t
ports cp quil
écoutent, affichern
uniquement les ombres (ne pas résoudre les noms - cela a été plus rapide) et montrer lep
processus qui fait l'écoute (celap
ne fonctionne que si vous êtes root)Afficher les
u
ports dp quil
écoutent, affichern
uniquement les ombres (ne pas résoudre les noms - cela a été plus rapide) et montrer lep
processus qui fait l'écoute (celap
ne fonctionne que si vous êtes root)Afficher les
u
ports dp ouverts mais n'écoutant pas, affichern
uniquement les ombres (ne pas résoudre les noms - cela a été plus rapide) et montrer lep
processus qui fait l'écoute (celap
ne fonctionne que si vous êtes root)Afficher tous les
a
ports utilisés, affichern
uniquement les ombres - ne pas résoudre les nomspar exemple
pour voir si quelque chose écoute sur le port localhost 25 / TCP, ou
pour voir s'il y a des sockets locales ou distantes qui écoutent (local) ou sont connectées à (local ou distant) pour n'importe quel hôte / interface
la source
lsof (liste des fichiers ouverts) est un bon outil pour voir si un processus écoute sur un port
netstat est un bon outil pour voir s'il y a des connexions actives.
la source
Vous ne mentionnez pas le protocole que vous souhaitez utiliser, c'est-à-dire TCP ou UDP - et il est également important de réaliser que le «port» n'est pas aussi granulaire que le système prend en charge pour lever l'ambiguïté des sockets. Par exemple, si votre système a plusieurs adresses IP, le port 80 peut être utilisé sur toutes les adresses IP (soit l'application est liée à "0.0.0.0" ou "::" ou à chaque adresse IP successivement), soit utiliser uniquement sur un sous-ensemble de ces adresses IP.
La meilleure et la plus sûre façon de déterminer si un port / une adresse est libre et disponible est d'essayer de s'y connecter. Netcat est pratique pour cela.
tentera de se lier au port TCP NN sur (facultatif, la valeur par défaut sera toutes les adresses) abcd Ajoutez l'option -u pour faire de même dans UDP.
Ensuite, pour savoir si le port est vraiment "ouvert" comme vous le demandez - vous devez commencer à examiner les règles de pare-feu potentielles. Encore une fois, la chose la plus simple est d'essayer de se connecter au port. Utilisez netcat comme ci-dessus, sur le serveur et à partir d'un client, utilisez netcat pour tenter de vous connecter au port que vous avez ouvert.
nc [-u] abcd NN
se connectera au port NN sur abcd, en utilisant UDP si l'indicateur -u est spécifié. Vous pouvez ensuite taper l'entrée dans l'extrémité client, et elle devrait apparaître sur le serveur. Si ce n'est pas le cas, vous devez examiner les outils spécifiques au système et au réseau.
la source
J'utilise un fuser (dans le paquet psmisc):
Ramène le pid du processus lié à ce port.
Si c'est pour savoir si un port écoute, le bon vieux telnet fait l'affaire :)
la source
Ce one-liner vous obtiendra une liste de tous les ports TCP utilisés. Il fonctionne en bash sur Ubuntu et OS X.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
La liste aura un port par ligne sans aucune information supplémentaire.
la source
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
De nombreuses façons de le faire m'ont donné des problèmes parce qu'ils ne fonctionnaient pas sur linux et osx, et / ou parce qu'ils ne montraient pas les ports utilisés par docker, ou les processus qui appartenaient à root. Maintenant, j'utilise simplement ce programme javascript:
(assurez-vous que le nœud est installé et qu'il fonctionne
node
non seulementnodejs
ou modifiez le programme en conséquence)enregistrez ce qui suit dans un fichier appelé
check-port
dans votre chemin ou dans votre projetdéfinir les autorisations
fuyez votre chemin
ou exécuter à partir du même répertoire
jusqu'à présent, cela fonctionne plutôt bien.
la source