summaryrefslogtreecommitdiff
path: root/ping-0.2/debian/python-ping
diff options
context:
space:
mode:
Diffstat (limited to 'ping-0.2/debian/python-ping')
-rw-r--r--ping-0.2/debian/python-ping/DEBIAN/control20
-rw-r--r--ping-0.2/debian/python-ping/DEBIAN/md5sums7
-rwxr-xr-xping-0.2/debian/python-ping/DEBIAN/postinst7
-rwxr-xr-xping-0.2/debian/python-ping/DEBIAN/prerm7
-rw-r--r--ping-0.2/debian/python-ping/usr/share/doc/python-ping/README9
-rw-r--r--ping-0.2/debian/python-ping/usr/share/doc/python-ping/README.Debian6
-rw-r--r--ping-0.2/debian/python-ping/usr/share/doc/python-ping/changelog.Debian.gzbin0 -> 176 bytes
-rw-r--r--ping-0.2/debian/python-ping/usr/share/doc/python-ping/copyright42
-rw-r--r--ping-0.2/debian/python-ping/usr/share/pyshared/ping-0.2.egg-info31
-rw-r--r--ping-0.2/debian/python-ping/usr/share/pyshared/ping.py273
-rw-r--r--ping-0.2/debian/python-ping/usr/share/python-support/python-ping.public2
11 files changed, 404 insertions, 0 deletions
diff --git a/ping-0.2/debian/python-ping/DEBIAN/control b/ping-0.2/debian/python-ping/DEBIAN/control
new file mode 100644
index 0000000..b97ec21
--- /dev/null
+++ b/ping-0.2/debian/python-ping/DEBIAN/control
@@ -0,0 +1,20 @@
+Package: python-ping
+Version: 0.2-1
+Architecture: all
+Maintainer: Kristina Clair <kclair@leap.se>
+Installed-Size: 76
+Depends: python, python-support (>= 0.90.0)
+Provides: python2.5-ping, python2.6-ping
+Section: python
+Priority: optional
+Description: An implementation of ICMP ping in Python
+ This library is a fork of George Notaras' python-ping library, which is
+ an implementation of the standard ICMP ping in pure Python.
+ .
+ As it uses raw ICMP sockets, you need to be root to use the functions
+ exported by the ping module.
+ .
+ This fork by Pierre Bourdon adds a setup.py file in order to permit an
+ easier distribution of the package. The license of the library remains
+ unchanged (GPLv2), see COPYING.
+Python-Version: 2.5, 2.6
diff --git a/ping-0.2/debian/python-ping/DEBIAN/md5sums b/ping-0.2/debian/python-ping/DEBIAN/md5sums
new file mode 100644
index 0000000..21aca8b
--- /dev/null
+++ b/ping-0.2/debian/python-ping/DEBIAN/md5sums
@@ -0,0 +1,7 @@
+0851268cfa5f0ed91ecddae6d42e10c4 usr/share/doc/python-ping/README
+218257068617a420552b25445a495b01 usr/share/doc/python-ping/README.Debian
+9de4874a2f489523a5128c8255aa2457 usr/share/doc/python-ping/changelog.Debian.gz
+27543d7b5ce6a9f6319cff1d1d5a7a0b usr/share/doc/python-ping/copyright
+b246e4f2dcf66e20c6353b89c3df912a usr/share/pyshared/ping-0.2.egg-info
+b9da1875bfb3013c16f66ed22edaa46f usr/share/pyshared/ping.py
+4f51c996bcf5086cb0de223b62a146eb usr/share/python-support/python-ping.public
diff --git a/ping-0.2/debian/python-ping/DEBIAN/postinst b/ping-0.2/debian/python-ping/DEBIAN/postinst
new file mode 100755
index 0000000..6aa6c16
--- /dev/null
+++ b/ping-0.2/debian/python-ping/DEBIAN/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+# Automatically added by dh_pysupport
+if which update-python-modules >/dev/null 2>&1; then
+ update-python-modules python-ping.public
+fi
+# End automatically added section
diff --git a/ping-0.2/debian/python-ping/DEBIAN/prerm b/ping-0.2/debian/python-ping/DEBIAN/prerm
new file mode 100755
index 0000000..99c6b3b
--- /dev/null
+++ b/ping-0.2/debian/python-ping/DEBIAN/prerm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+# Automatically added by dh_pysupport
+if which update-python-modules >/dev/null 2>&1; then
+ update-python-modules -c python-ping.public
+fi
+# End automatically added section
diff --git a/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README
new file mode 100644
index 0000000..b3cccd7
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README
@@ -0,0 +1,9 @@
+This library is a fork of George Notaras' python-ping library, which is
+an implementation of the standard ICMP ping in pure Python.
+
+As it uses raw ICMP sockets, you need to be root to use the functions
+exported by the ping module.
+
+This fork by Pierre Bourdon adds a setup.py file in order to permit an
+easier distribution of the package. The license of the library remains
+unchanged (GPLv2), see COPYING.
diff --git a/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README.Debian b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README.Debian
new file mode 100644
index 0000000..59e8175
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/README.Debian
@@ -0,0 +1,6 @@
+python-ping for Debian
+----------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Kristina Clair <kclair@leap.se> Wed, 03 Oct 2012 11:59:08 -0700
diff --git a/ping-0.2/debian/python-ping/usr/share/doc/python-ping/changelog.Debian.gz b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/changelog.Debian.gz
new file mode 100644
index 0000000..5e6b245
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/changelog.Debian.gz
Binary files differ
diff --git a/ping-0.2/debian/python-ping/usr/share/doc/python-ping/copyright b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/copyright
new file mode 100644
index 0000000..a979dc1
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/doc/python-ping/copyright
@@ -0,0 +1,42 @@
+This work was packaged for Debian by:
+
+ Kristina Clair <kclair@leap.se> on Wed, 03 Oct 2012 11:45:53 -0700
+
+It was downloaded from:
+
+ http://pypi.python.org/pypi/ping/
+
+Upstream Author(s):
+
+ Pierre Bourdon
+ Georgi Kolev
+
+Copyright:
+
+ Copyright (C) Pierre Bourdon
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+On Debian systems, the complete text of the GNU General
+Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+The Debian packaging is:
+
+ Copyright (C) 2012 Kristina Clair <kclair@leap.se>
+
+ you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
diff --git a/ping-0.2/debian/python-ping/usr/share/pyshared/ping-0.2.egg-info b/ping-0.2/debian/python-ping/usr/share/pyshared/ping-0.2.egg-info
new file mode 100644
index 0000000..bdcd4f1
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/pyshared/ping-0.2.egg-info
@@ -0,0 +1,31 @@
+Metadata-Version: 1.0
+Name: ping
+Version: 0.2
+Summary: An implementation of ICMP ping in Python
+Home-page: http://bitbucket.org/delroth/python-ping/
+Author: Pierre Bourdon
+Author-email: delroth@gmail.com
+License: GPL2
+Download-URL: http://bitbucket.org/delroth/python-ping/downloads/python-ping-0.2.tar.gz
+Description: This library is a fork of George Notaras' python-ping library, which is
+ an implementation of the standard ICMP ping in pure Python.
+
+ As it uses raw ICMP sockets, you need to be root to use the functions
+ exported by the ping module.
+
+ This fork by Pierre Bourdon adds a setup.py file in order to permit an
+ easier distribution of the package. The license of the library remains
+ unchanged (GPLv2), see COPYING.
+
+Keywords: ping icmp network latency
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: Unix
+Classifier: Programming Language :: Python :: 2
+Classifier: Topic :: Internet
+Classifier: Topic :: System :: Networking
+Classifier: Topic :: System :: Networking :: Monitoring
diff --git a/ping-0.2/debian/python-ping/usr/share/pyshared/ping.py b/ping-0.2/debian/python-ping/usr/share/pyshared/ping.py
new file mode 100644
index 0000000..8c4a4bd
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/pyshared/ping.py
@@ -0,0 +1,273 @@
+#!/usr/bin/env python
+
+"""
+ A pure python ping implementation using raw socket.
+
+
+ Note that ICMP messages can only be sent from processes running as root.
+
+
+ Derived from ping.c distributed in Linux's netkit. That code is
+ copyright (c) 1989 by The Regents of the University of California.
+ That code is in turn derived from code written by Mike Muuss of the
+ US Army Ballistic Research Laboratory in December, 1983 and
+ placed in the public domain. They have my thanks.
+
+ Bugs are naturally mine. I'd be glad to hear about them. There are
+ certainly word - size dependenceies here.
+
+ Copyright (c) Matthew Dixon Cowles, <http://www.visi.com/~mdc/>.
+ Distributable under the terms of the GNU General Public License
+ version 2. Provided with no warranties of any sort.
+
+ Original Version from Matthew Dixon Cowles:
+ -> ftp://ftp.visi.com/users/mdc/ping.py
+
+ Rewrite by Jens Diemer:
+ -> http://www.python-forum.de/post-69122.html#69122
+
+ Rewrite by George Notaras:
+ -> http://www.g-loaded.eu/2009/10/30/python-ping/
+
+ Fork by Pierre Bourdon:
+ -> http://bitbucket.org/delroth/python-ping/
+
+ Revision history
+ ~~~~~~~~~~~~~~~~
+
+ 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().
+
+ December 4, 2000
+ ----------------
+ Changed the struct.pack() calls to pack the checksum and ID as
+ unsigned. My thanks to Jerome Poincheval for the fix.
+
+ 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"
+
+ November 8, 2009
+ ----------------
+ Improved compatibility with GNU/Linux systems.
+
+ Fixes by:
+ * George Notaras -- http://www.g-loaded.eu
+ Reported by:
+ * Chris Hallman -- http://cdhallman.blogspot.com
+
+ 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[1].
+
+ [1] http://docs.python.org/library/time.html#time.clock
+
+ September 25, 2010
+ ------------------
+ Little modifications by Georgi Kolev:
+ - Added quiet_ping function.
+ - returns percent lost packages, max round trip time, avrg round trip
+ time
+ - Added packet size to verbose_ping & quiet_ping functions.
+ - Bump up version to 0.2
+
+"""
+
+__version__ = "0.2"
+
+import os
+import select
+import socket
+import struct
+import sys
+import time
+
+# From /usr/include/linux/icmp.h; your milage may vary.
+ICMP_ECHO_REQUEST = 8 # Seems to be the same on Solaris.
+
+
+def checksum(source_string):
+ """
+ I'm not too confident that this is right but testing seems
+ to suggest that it gives the same answers as in_cksum in ping.c
+ """
+ sum = 0
+ count_to = (len(source_string) / 2) * 2
+ for count in xrange(0, count_to, 2):
+ this = ord(source_string[count + 1]) * 256 + ord(source_string[count])
+ sum = sum + this
+ sum = sum & 0xffffffff # Necessary?
+
+ if count_to < len(source_string):
+ sum = sum + ord(source_string[len(source_string) - 1])
+ sum = sum & 0xffffffff # Necessary?
+
+ sum = (sum >> 16) + (sum & 0xffff)
+ sum = sum + (sum >> 16)
+ answer = ~sum
+ answer = answer & 0xffff
+
+ # Swap bytes. Bugger me if I know why.
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+
+ return answer
+
+
+def receive_one_ping(my_socket, id, timeout):
+ """
+ Receive the ping from the socket.
+ """
+ time_left = timeout
+ while True:
+ started_select = time.time()
+ what_ready = select.select([my_socket], [], [], time_left)
+ how_long_in_select = (time.time() - started_select)
+ if what_ready[0] == []: # Timeout
+ return
+
+ time_received = time.time()
+ received_packet, addr = my_socket.recvfrom(1024)
+ icmpHeader = received_packet[20:28]
+ type, code, checksum, packet_id, sequence = struct.unpack(
+ "bbHHh", icmpHeader
+ )
+ if packet_id == id:
+ bytes = struct.calcsize("d")
+ time_sent = struct.unpack("d", received_packet[28:28 + bytes])[0]
+ return time_received - time_sent
+
+ time_left = time_left - how_long_in_select
+ if time_left <= 0:
+ return
+
+
+def send_one_ping(my_socket, dest_addr, id, psize):
+ """
+ Send one ping to the given >dest_addr<.
+ """
+ dest_addr = socket.gethostbyname(dest_addr)
+
+ # Remove header size from packet size
+ psize = psize - 8
+
+ # Header is type (8), code (8), checksum (16), id (16), sequence (16)
+ my_checksum = 0
+
+ # Make a dummy heder with a 0 checksum.
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, id, 1)
+ bytes = struct.calcsize("d")
+ data = (psize - bytes) * "Q"
+ data = struct.pack("d", time.time()) + data
+
+ # Calculate the checksum on the data and the dummy header.
+ my_checksum = checksum(header + data)
+
+ # Now that we have the right checksum, we put that in. It's just easier
+ # to make up a new header than to stuff it into the dummy.
+ header = struct.pack(
+ "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), id, 1
+ )
+ packet = header + data
+ my_socket.sendto(packet, (dest_addr, 1)) # Don't know about the 1
+
+
+def do_one(dest_addr, timeout, psize):
+ """
+ Returns either the delay (in seconds) or none on timeout.
+ """
+ icmp = socket.getprotobyname("icmp")
+ try:
+ my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ except socket.error, (errno, msg):
+ if errno == 1:
+ # Operation not permitted
+ msg = msg + (
+ " - Note that ICMP messages can only be sent from processes"
+ " running as root."
+ )
+ raise socket.error(msg)
+ raise # raise the original error
+
+ my_id = os.getpid() & 0xFFFF
+
+ send_one_ping(my_socket, dest_addr, my_id, psize)
+ delay = receive_one_ping(my_socket, my_id, timeout)
+
+ my_socket.close()
+ return delay
+
+
+def verbose_ping(dest_addr, timeout = 2, count = 4, psize = 64):
+ """
+ Send `count' ping with `psize' size to `dest_addr' with
+ the given `timeout' and display the result.
+ """
+ for i in xrange(count):
+ print "ping %s with ..." % dest_addr,
+ try:
+ delay = do_one(dest_addr, timeout, psize)
+ except socket.gaierror, e:
+ print "failed. (socket error: '%s')" % e[1]
+ break
+
+ if delay == None:
+ print "failed. (timeout within %ssec.)" % timeout
+ else:
+ delay = delay * 1000
+ print "get ping in %0.4fms" % delay
+ print
+
+
+def quiet_ping(dest_addr, timeout = 2, count = 4, psize = 64):
+ """
+ Send `count' ping with `psize' size to `dest_addr' with
+ the given `timeout' and display the result.
+ Returns `percent' lost packages, `max' round trip time
+ and `avrg' round trip time.
+ """
+ mrtt = None
+ artt = None
+ lost = 0
+ plist = []
+
+ for i in xrange(count):
+ try:
+ delay = do_one(dest_addr, timeout, psize)
+ except socket.gaierror, e:
+ print "failed. (socket error: '%s')" % e[1]
+ break
+
+ if delay != None:
+ delay = delay * 1000
+ plist.append(delay)
+
+ # Find lost package percent
+ percent_lost = 100 - (len(plist) * 100 / count)
+
+ # Find max and avg round trip time
+ if plist:
+ mrtt = max(plist)
+ artt = sum(plist) / len(plist)
+
+ return percent_lost, mrtt, artt
+
+if __name__ == '__main__':
+ verbose_ping("heise.de")
+ verbose_ping("google.com")
+ verbose_ping("a-test-url-taht-is-not-available.com")
+ verbose_ping("192.168.1.1")
diff --git a/ping-0.2/debian/python-ping/usr/share/python-support/python-ping.public b/ping-0.2/debian/python-ping/usr/share/python-support/python-ping.public
new file mode 100644
index 0000000..fe3edd6
--- /dev/null
+++ b/ping-0.2/debian/python-ping/usr/share/python-support/python-ping.public
@@ -0,0 +1,2 @@
+/usr/share/pyshared/ping-0.2.egg-info
+/usr/share/pyshared/ping.py