How to check port on remote host is accessible

Synopsis

This post shows how to validate remote host is accessible.

Motivation

There are many solutions out there on how to check that port on a remote host is accessible. But we needed a solution that would not hang up.

Checking Remote Port

Here is the code that does the job:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import socket

def port_is_open(host, port, timeout=0.5):
    result = False
    try:
        s = socket.create_connection((host, port), timeout)
    except socket.error as e:
        pass
    else:
        s.close()
        result = True
    return result

The check how it performs, we will use the timeit function shown here:

1
2
3
4
5
6
import time

def timeit(func, *args, **kwargs):
    start_time = time.time()
    result = func(*args, **kwargs)
    print("returned %s in %s seconds" % (result, time.time() - start_time))

The result of checking that port on a remote host is accessible, and another that is not:

1
2
3
4
>>> timeit(port_is_open, "192.168.1.100", 22)
returned True in 0.0007190704345703125 seconds
>>> timeit(port_is_open, "192.168.1.70", 22)
returned False in 0.5032269954681396 seconds

Conclusion

It cannot be easier, yea?!

Note: checking a port on remote host may be impacted by many things, predominantly how busy the network is and how busy are the involved hosts. Therefore, the timeout may need to be adjusted according to the operational environment.

Share Post:

LinkedinDiaspora*TwitterFacebookGoogle+Email

Comments


There are no comments yet.

Add a Comment

You can use the Markdown syntax to format your comment.