This is the code snippet that checks if a specific port is listening on the target server or not, if the port could not be reached and does not exist the socket module throws a timeout exception or ConnectionRefusedError.
from socket import socket, timeout as _timeout, AF_INET, SOCK_STREAM
ERRORS = TimeoutError, ConnectionRefusedError, _timeout
def has_service(address, port=22, timeout=2.0):
with socket(AF_INET, SOCK_STREAM) as s:
s.settimeout(timeout)
try:
s.connect((address, port))
return True
except ERRORS:
return False
Example if I want to check if a server has port 80.
from nettools import has_service
print(has_service("www.google.com", port=80))
This will return a true because this is a valid website.
Another test is to test if there is a ssh server, I have an Eve-Ng server which has port 80 and 22.
from nettools import has_service
print(has_service("192.168.1.214"))
This will return as true because port 22 exists, if the port does not exist the function returns false.