How to test whether a host is reachable?

Larry Bates lbates at websafe.com
Thu Feb 22 09:47:44 EST 2007


Fabian Steiner wrote:
> Hello!
> 
> As the subject says I need to test whether a host computer in our
> network is reachable or not. At the moment I simply attempt to connect
> to a given port that is open when the machine is online:
> 
> [...]
> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> try:
>     sock.connect(('192.168.0.100', 80))
> except socket.error:
>     print >>sys.stderr "Server offline"
> sock.close()
> [...]
> 
> Now I am wondering if there isn't any better method which would be more
> general. In fact, I think of something like a python version of ping
> which only tries to send ICMP packets. However, I don't know what the
> code has to look like then. Any ideas or suggestions?
> 
> Thanks,
> Fabian

Just because you could ping with ICMP packets doesn't mean you could
do anything with the machine.  I assume that you are connecting to
do something on the machine.  Just wrap what you are trying to do
in try: block.  It will either succeed or fail.  Handle the exeption.

-Larry



More information about the Python-list mailing list