Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

l4m3rx/python-ping

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

python-ping

A pure python ping implementation using raw sockets.

  • Compatible with Python2 & Python3
  • Note that ICMP messages can only be sent from processes running as root (in Windows, you must run this script as 'Administrator').

Original Version

  • Matthew Dixon Cowles
  • copyleft 1989-2016 by the python-ping team, see AUTHORS for more details.
  • license: GNU GPL v2, see LICENSE for more details.

Usage

$ sudo python3 ping.py -h
usage: python-ping [-h] [-t TIMEOUT] [-c REQUEST_COUNT] [-i] [-I]
                   [-s PACKET_SIZE] [-T]
                   address

A pure python implementation of the ping protocol. *REQUIRES ROOT*

positional arguments:
  address               The address to attempt to ping.

optional arguments:
  -h, --help            show this help message and exit
  -t TIMEOUT, --timeout TIMEOUT
                        The maximum amount of time to wait until ping timeout.
  -c REQUEST_COUNT, --request_count REQUEST_COUNT
                        The number of attempts to make. See --infinite to
                        attempt requests until stopped.
  -i, --infinite        Flag to continuously ping a host until stopped.
  -I, --ipv6            Flag to use IPv6.
  -s PACKET_SIZE, --packet_size PACKET_SIZE
                        Designate the amount of data to send per packet.
  -T, --test_case       Flag to run the default test case suite.

Using as lib

Python 2.7.11 (default, Mar  3 2016, 13:35:30) 
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ping
>>> ping.verbose_ping('google.com', timeout=3000, count=3, numDataBytes=1300)
<generator object verbose_ping at 0x7fa954e04eb0>
>>> list(ping.verbose_ping('google.com', timeout=3000, count=3, numDataBytes=1300))

PYTHON PING google.com (216.58.212.46): 1300 data bytes
72 bytes from 216.58.212.46: icmp_seq=0 ttl=59 time=4.42 ms
72 bytes from 216.58.212.46: icmp_seq=1 ttl=59 time=4.70 ms
72 bytes from 216.58.212.46: icmp_seq=2 ttl=59 time=4.44 ms
72 bytes from 216.58.212.46: icmp_seq=3 ttl=59 time=4.47 ms

----216.58.212.46 PYTHON PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip (ms)  min/avg/max = 4.4/4.5/4.7

[1, 2, 3, False]


>>> list(ping.quiet_ping('google.com', timeout=3000, count=3, numDataBytes=1300))
[1, 2, 3, (4.508256912231445, 4.332065582275391, 4.399617513020833, 0.0)]
>>> list(ping.quiet_ping('google.com', timeout=3000, count=3, numDataBytes=1300))[-1]
(4.535675048828125, 4.359245300292969, 4.423936208089192, 0.0)

TODOs

  • Make delay between sending packets as input parm.

contribute

Fork this repo on GitHub and send pull requests. Thank you.

Revision history

ChangeLog / Revision history

Links

Sourcecode at GitHub https://github.com/l4m3rx/python-ping

About

Pure Python2/3 ICMP ping implementation using raw sockets.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.