Posted By: Anonymous
In Python, is there a way to ping a server through ICMP and return TRUE if the server responds, or FALSE if there is no response?
This function works in any OS (Unix, Linux, macOS, and Windows)
Python 2 and Python 3
import platform # For getting the operating system name import subprocess # For executing a shell command def ping(host): """ Returns True if host (str) responds to a ping request. Remember that a host may not respond to a ping (ICMP) request even if the host name is valid. """ # Option for the number of packets as a function of param = '-n' if platform.system().lower()=='windows' else '-c' # Building the command. Ex: "ping -c 1 google.com" command = ['ping', param, '1', host] return subprocess.call(command) == 0
Note that, according to @ikrase on Windows this function will still return
True if you get a
Destination Host Unreachable error.
The command is
ping in both Windows and Unix-like systems.
-n (Windows) or
-c (Unix) controls the number of packets which in this example was set to 1.