In this article we look at adding ping type functionality to your python scripts, we do this
PythonPing is simple way to ping in Python. With it, you can send ICMP Probes to remote devices like you would do from the terminal.
PythonPing is modular, so that you can run it in a script as a standalone function, or integrate its components in a fully-fledged application.
Installation
pip install pythonping
Examples
Basic example
Ping the localhost IP address, if you want the output to be displayed you need the verbose=True
from pythonping import ping ping('127.0.0.1', verbose=True)
Output
C:\Python38-32\Examples>python ping1.py Reply from 127.0.0.1, 9 bytes in 0.02ms Reply from 127.0.0.1, 9 bytes in 0.01ms Reply from 127.0.0.1, 9 bytes in 0.01ms Reply from 127.0.0.1, 9 bytes in 0.0ms
You can also tune your ping by using some of its additional parameters:
size
is an integer that allows you to specify the size of the ICMP payloadtimeout
is the number of seconds you wish to wait for a response, before assuming the target is unreachablepayload
allows you to use a specific payload in bytescount
allows you to define how many ICMP packets to sendinterval
the time to wait between pings which is in secondssweep_start
andsweep_end
allows you to perform a ping sweep, starting from payload size defined insweep_start
and growing up to size defined insweep_end
. Here, we repeat the payload you provided to match the desired size, or we generate a random one if no payload was provided. Note that if you definedsize
, these two fields will be ignoreddf
is a flag that, if set to True, will enable the Don't Fragment flag in the IP headerverbose
enables the verbose mode, printing output to a streamout
is the target stream of verbose mode. If you enable the verbose mode and do not provideout
, verbose output will be send to thesys.stdout
stream. You may want to use a file here.match
is a flag that, if set to True, will enable payload matching between a ping request and reply (default behaviour follows that of Windows which counts a successful reply by a matched packet identifier only; Linux behaviour counts a non equivalent payload with a matched packet identifier in reply as fail, such as when pinging 8.8.8.8 with 1000 bytes and the reply is truncated to only the first 74 of request payload with a matching packet identifier)
Lets see an example of these parameters in action
Example
In this example we define the size of the payload as 40 and the amount of packets to send as 10
from pythonping import ping response_list = ping('127.0.0.1', size=40, count=10, verbose=True)
Output
C:\Python38-32\Examples>python ping1.py Reply from 127.0.0.1, 48 bytes in 0.01ms Reply from 127.0.0.1, 48 bytes in 0.01ms Reply from 127.0.0.1, 48 bytes in 0.01ms Reply from 127.0.0.1, 48 bytes in 0.0ms Reply from 127.0.0.1, 48 bytes in 0.0ms Reply from 127.0.0.1, 48 bytes in 0.01ms Reply from 127.0.0.1, 48 bytes in 0.0ms Reply from 127.0.0.1, 48 bytes in 0.01ms Reply from 127.0.0.1, 48 bytes in 0.0ms Reply from 127.0.0.1, 48 bytes in 0.0ms