Python ping script

I am trying to write a Python script that pings IP addresses and outputs whether each ping succeeded. So far I have the following code, but the output seems inaccurate. Namely, when I run the script, it pings each hostname as expected but the output is only ever all up or all down.

import os

hostname0 = ""
hostname1 = ""
hostname2 = ""
hostname3 = ""

response = os.system("ping -c 1 " + hostname0)
response = os.system("ping -c 1 " + hostname1)
response = os.system("ping -c 1 " + hostname2)
response = os.system("ping -c 1 " + hostname3)

if response == 0:
    print hostname0, 'is up'
    print hostname1, 'is up'
    print hostname2, 'is up'
    print hostname3, 'is up'
    print hostname0, 'is down'
    print hostname1, 'is down'
    print hostname2, 'is down'
    print hostname3, 'is down'


answered 4 months ago ndmeiri #1

You should print the result immediately after pinging each hostname. Try this:

import os

hostnames = [

for hostname in hostnames:
    response = os.system('ping -c 1 ' + hostname)
    if response == 0:
        print hostname, 'is up'
        print hostname, 'is down'

Also, you should consider using the subprocess module instead of os.system() as the latter is deprecated.

comments powered by Disqus