Проверка открытия порта на удаленном сервере — это распространенная задача, особенно в сетевом администрировании и разработке сетевых приложений. В Python это можно сделать с помощью библиотеки socket. В данной статье мы рассмотрим, как проверить, открыт ли порт на удаленном хосте, используя Python.
Python предоставляет библиотеку socket, которая позволяет работать с сокетами и выполнять сетевые операции. Мы будем использовать эту библиотеку для проверки состояния порта.
Давайте рассмотрим простой скрипт на Python, который проверяет, открыт ли порт на заданном хосте.
import socket, sys
ip = str(sys.argv[1]) if len(sys.argv) > 1 else ''
port = str(sys.argv[2]) if len(sys.argv) > 2 else ''
def scan_port(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock.settimeout(1)
result = sock.connect_ex((str(host), int(port)))
if result == 0:
ok = True
else:
ok = False
sock.close()
return ok
if not ip:
ip = socket.gethostbyname(socket.gethostname())
if port:
if scan_port(ip, port):
print(f'Порт "{port}" открыт!')
else:
print(f'Порт "{port}" закрыт.')
else:
ports = {7:'echo',20:'FTP-data',21:'ftp',22:'ssh',23:'telnet',25:'smtp',43:'whois',53:'dns',68:'dhcp',69:'TFTP',80:'http',88:'Kerberos',102:'Iso-tsap',110:'pop3',115:'sftp',119:'nntp',123:'ntp',135:'Microsoft EPMAP',137:'NetBIOS-ns',139:'netbios',143:'imap',161:'snmp',179:'bgp',220:'imap3',381:'HP Openview',383:'HP Openview',389:'ldap',443:'https',464:'Kerberos',465:'SMTP over TLS/SSL, SSM',587:'SMTP',593:'Microsoft DCOM',636:'LDAP over TLS/SSL',691:'MS Exchange',902:'VMware Server',989:'FTP over SSL',990:'FTP over SSL',993:'imaps',995:'POP3 over SSL',1025:'Microsoft RPC',1194:'OpenVPN',1337:'WASTE',1589:'Cisco VQP',1723:'pptp',1725:'Steam',2049:'nfs',2082:'cPanel',2083:'radsec, cPanel',2483:'Oracle DB',2484:'Oracle DB',2967:'Symantec AV',3074:'XBOX Live',3306:'mysql',3389:'rdp',3724:'World of Warcraft',4664:'Google Desktop',5060:'sip',5432:'PostgreSQL',5900:'vnc',6665:'IRC',6881:'BitTorrent',6970:'Quicktime',6999:'BitTorrent',8080:'http-alt',8086:'Kaspersky AV',8087:'Kaspersky AV',8222:'VMware Server',9100:'PDL',10000:'BackupExec',12345:'NetBus',27374:'Sub7',31337:'Back Orifice'}
for v in ports:
port = v
desc = ports[v]
if scan_port(ip, port):
print(f'Порт "{port} ({desc})" открыт!')
else:
print(f'Порт "{port} ({desc})" закрыт.')
py portChecker.py
py portChecker.py 192.168.0.128 80
*текст*
- жирный,
~текст~
- курсивный,
-текст-
- _текст_
- подчеркнутый