web-dev-qa-db-fra.com

Quelles sont les alternatives pour vérifier les ports ouverts, en plus de Telnet?

Nous pouvons utiliser ce qui suit afin de tester telnet VIA port; dans l'exemple suivant, nous testons le port 6667:

[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign Host

Étant donné que sur certaines machines, nous ne pouvons pas utiliser telnet (pour des raisons internes), quelles sont les alternatives pour vérifier les ports, comme telnet?

28
yael

Si vous utilisez Bash Shell, vous pouvez utiliser sa fonction pour vérifier si un port est ouvert ou fermé:

(timeout 1 bash -c '</dev/tcp/127.0.0.1/17500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT OPEN

(timeout 1 bash -c '</dev/tcp/127.0.0.1/7500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT CLOSED

Notez que si le serveur ne répond pas après 1 seconde, le délai est atteint, les commandes entre ' interrompu, et donc rien n'est imprimé.

26
in2nix4life

netcat est une option.

nc -zv kafka02 6667
  • -z = définit nc pour simplement rechercher les démons à l'écoute, sans leur envoyer de données
  • -v = active le mode détaillé
38
steve

L'étalon-or est sans aucun doute nmap ( nmap.org ), mais il nécessite généralement root pour les "meilleurs résultats". Cependant, des fichiers binaires autonomes sont disponibles et il est possible de l'exécuter en tant qu'utilisateur non privilégié, uniquement avec des capacités dégradées. Par exemple, au lieu d'une analyse furtive syn (-sS), il revient à un scan de connexion standard TCP (-sT). Ceci est fonctionnellement équivalent à netcat, mais avec les multiples capacités accélérées de Nice qu'il possède.

Un exemple:

not-root$ nmap -sT google.com
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-04 21:01 GMT
Nmap scan report for google.com (172.217.23.14)
Host is up (0.12s latency).
rDNS record for 172.217.23.14: lhr35s01-in-f14.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
23
Landak

Si Perl est une option, vous pouvez utiliser son IO::Socket module pour tester une connexion à un hôte et un port particuliers; le script ci-dessous hard-codes TCP comme protocole (qui est ce que telnet utiliserait):

#!/usr/bin/Perl -w

# tries to connect to the given IP and port (tcp)

use strict;
use IO::Socket;

my $desthost = shift or die "Usage: $0 Host port\n";
my $destport = shift or die "Usage: $0 Host port\n";

gethostbyname($desthost) || die "Invalid Host given\n";

my $handle = IO::Socket::INET->new(
        PeerAddr => $desthost,
        PeerPort => $destport,
        Proto    => 'tcp')
    or die "can't connect to $desthost:$destport: $!\n";
close $handle;
print "Success!\n"

Exemple de sortie à partir d'un port fermé:

$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused

Exemple de sortie à partir d'un port ouvert:

$ ./above-script kafka02 4200
Success!
4
Jeff Schaller

Les fichiers de périphérique/dev/tcp et/dev/udp peuvent être utilisés à la place de telnet. Exemple: echo 0 > /dev/tcp/103.64.35.86/6667. Vérifiez ensuite l'état de sortie à l'aide de echo $?. Si l'état de sortie est 0, le port est ouvert. Si l'état de sortie est différent de zéro, le port est fermé. Pour vérifier les paquets udp, utilisez echo 0 > /dev/udp/103.64.35.86/6667.

2
al mamun

'curl' peut vous faciliter la vie. Aucune racine requise; curl est facilement disponible sur tous les systèmes Linux

1) Si le port n'est pas ouvert, la sortie ci-dessous s'affiche.

[niti@SourceServerName ~]$ curl -vv telnet://DestinationServerName:80

* About to connect() to DestinationServerName port 80 (#0)
*   Trying 192.168.0.100...

2) Si le port est ouvert, la sortie s'affiche en dessous

[niti@SourceServerName ~]$ curl -vv telnet://DestinationServerName:443

* About to connect() to DestinationServerName port 443 (#0)
*   Trying 192.168.0.100...
* Connected to DestinationServerName (192.168.0.100) port 443 (#0)

CtrlC pour quitter

1
Niti

J'ai trouvé rapide et simple de cette façon, throgh Python interpreter (from https://serverfault.com/a/500062/168647 ):

[gryphius@ut ~]$ python
Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2                                                                                                                                                                                                                               
Type "help", "copyright", "credits" or "license" for more information.                                                                                                                                                                                                         
>>> import socket                                                                                                                                                                                                                                                              
>>> conn=socket.create_connection(('gmail-smtp-in.l.google.com',25))                                                                                                                                                                                                           

Si cela n'a pas généré d'erreur jusqu'à présent, la connexion est correcte.

1
Mariano Paniga
ss -lt 

c'est une autre commande que vous pouvez utiliser.

0
Dileep Jayasundara