Using for loop in python to test ping response from multiple hosts

Today let us have a look at an interesting python script to test ping connectivity on a list of hosts.

To understand this lets create below script and a hosts file, then execute it.

1. Create a Python Script for Ping

$ cat hostping.py 
import socket  # For connecting two nodes on a network to communicate with each other
import sys     # To get access to some variables used/maintained by interpreter and function that interact with interpreter
import os      # Allows an interface with the OS that Python is running on.


file = open("./host.txt","r")
for server_name in file:
        server_state = os.system('ping -c 2 ' + server_name )
        if server_state == 0:
                print(server_name +"===== Server is UP=====")
        else:
                print("=====Server is DOWN====")

$ 

2. Create the file host.txt containing all hosts on which we need to test ping.

$ cat host.txt 
r001-ngelinux.com
r002-ngelinux.com
r003-ngelinux.com
r004-ngelinux.com
r005-ngelinux.com
r006-ngelinux.com
r007-ngelinux.com
r008-ngelinux.com
r009-ngelinux.com
r010-ngelinux.com
r011-ngelinux.com
r012-ngelinux.com
r013-ngelinux.com
r014-ngelinux.com
r015-ngelinux.com
r016-ngelinux.com
r017-ngelinux.com
r018-ngelinux.com
r019-ngelinux.com
r020-ngelinux.com
$ 

3. Run the script and check output.

$ python ./hostping.py 
PING r001-ngelinux.com (10.24.80.9): 56 data bytes
64 bytes from 10.24.80.9: icmp_seq=0 ttl=50 time=297.965 ms
64 bytes from 10.24.80.9: icmp_seq=1 ttl=50 time=298.016 ms

--- r001-ngelinux.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 297.965/297.990/298.016/0.026 ms
r001-ngelinux.com
===== Server is UP=====
PING r002-ngelinux.com (10.24.88.9): 56 data bytes
64 bytes from 10.24.88.9: icmp_seq=0 ttl=49 time=303.543 ms
64 bytes from 10.24.88.9: icmp_seq=1 ttl=49 time=303.368 ms

--- r002-ngelinux.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 303.368/303.456/303.543/0.087 ms
r002-ngelinux.com
===== Server is UP=====
PING r003-ngelinux.com (10.24.96.9): 56 data bytes
64 bytes from 10.24.96.9: icmp_seq=0 ttl=49 time=342.405 ms
64 bytes from 10.24.96.9: icmp_seq=1 ttl=49 time=342.275 ms

--- r003-ngelinux.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 342.275/342.340/342.405/0.065 ms
r003-ngelinux.com
===== Server is UP=====

Leave a Reply

Your email address will not be published.