python-ping 2011.10.12.1d8e600

Creator: railscoder56

Last updated:

Add to Cart

Description:

pythonping 2011.10.12.1d8e600

A pure python ping implementation using raw sockets.
Note that ICMP messages can only be sent from processes running as root
(in Windows, you must run this script as ‘Administrator’).
Original Version from Matthew Dixon Cowles

copyleft 1989-2011 by the python-ping team, see AUTHORS for more details.
license: GNU GPL v2, see LICENSE for more details.


usage
~/python-ping$ sudo ./ping.py google.com

PYTHON-PING google.com (209.85.148.99): 55 data bytes
64 bytes from google.com (209.85.148.99): icmp_seq=0 ttl=54 time=56.2 ms
64 bytes from google.com (209.85.148.99): icmp_seq=1 ttl=54 time=55.7 ms
64 bytes from google.com (209.85.148.99): icmp_seq=2 ttl=54 time=55.5 ms

----google.com PYTHON PING Statistics----
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip (ms) min/avg/max = 55.468/55.795/56.232

TODOs

refactor ping.py
create a CLI interface
add a “suprocess ping”, with output parser



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


Revision history

Oct. 12, 2011
Merge sources and create a seperate github repository:

https://github.com/jedie/python-ping

Add a simple CLI interface.


September 12, 2011
Bugfixes + cleanup by Jens Diemer
Tested with Ubuntu + Windows 7


September 6, 2011
Cleanup by Martin Falatic.
Restored lost comments and docs. Improved functionality: constant time between
pings, internal times consistently use milliseconds. Clarified annotations
(e.g., in the checksum routine). Using unsigned data in IP & ICMP header
pack/unpack unless otherwise necessary. Signal handling. Ping-style output
formatting and stats.


August 3, 2011
Ported to py3k by Zach Ware. Mostly done by 2to3; also minor changes to
deal with bytes vs. string changes (no more ord() in checksum() because
>source_string< is actually bytes, added .encode() to data in
send_one_ping()). That’s about it.


March 11, 2010
changes by Samuel Stauffer:
replaced time.clock with default_timer which is set to
time.clock on windows and time.time on other systems.


November 8, 2009
Fixes by George Notaras,
reported by Chris Hallman:
Improved compatibility with GNU/Linux systems.
Changes in this release:
Re-use time.time() instead of time.clock(). The 2007 implementation
worked only under Microsoft Windows. Failed on GNU/Linux.
time.clock() behaves differently under the two OSes.


May 30, 2007
little rewrite by Jens Diemer:

change socket asterisk import to a normal import
replace time.time() with time.clock()
delete “return None” (or change to “return” only)
in checksum() rename “str” to “source_string”



December 4, 2000
Changed the struct.pack() calls to pack the checksum and ID as
unsigned. My thanks to Jerome Poincheval for the fix.


November 22, 1997
Initial hack. Doesn’t do much, but rather than try to guess
what features I (or others) will want in the future, I’ve only
put in what I need now.


December 16, 1997
For some reason, the checksum bytes are in the wrong order when
this is run under Solaris 2.X for SPARC but it works right under
Linux x86. Since I don’t know just what’s wrong, I’ll swap the
bytes always and then do an htons().

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.