Python ping script

21,080

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

import os

hostnames = [
    '10.40.161.2',
    '10.40.161.3',
    '10.40.161.4',
    '10.40.161.5',
]

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

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

Share:
21,080
Melissa Chillington
Author by

Melissa Chillington

Updated on April 05, 2021

Comments

  • Melissa Chillington
    Melissa Chillington about 3 years

    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 = "10.40.161.2"
    hostname1 = "10.40.161.3"
    hostname2 = "10.40.161.4"
    hostname3 = "10.40.161.5"
    
    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'
    else:
        print hostname0, 'is down'
        print hostname1, 'is down'
        print hostname2, 'is down'
        print hostname3, 'is down'
    
    • jeremysprofile
      jeremysprofile almost 6 years
      you are continually resetting response. By the if statement, it is only based on the response to hostname8.
    • zhqiat
      zhqiat almost 6 years
      Consider looping through a list and printing the response.
    • abarnert
      abarnert almost 6 years
      As a side note: that the docs for os.system explicitly tell you that "The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function."