使用原始套接字的纯python icmp ping实现
pyping的Python项目详细描述
使用原始套接字的纯python ping实现。
注意,ICMP消息只能从以根用户身份运行的进程发送 (在Windows中,必须以“管理员”身份运行此脚本)。
马修·迪克森·考尔斯的原版。
用法
用作cli工具:
socketubs@socket-laptop [Pyping]: sudo pyping socketubs.net PYTHON-PING socketubs.net (92.243.5.143): 55 data bytes 241 bytes from socketubs.net (92.243.5.143): icmp_seq=0 ttl=55 time=64.5 ms 241 bytes from socketubs.net (92.243.5.143): icmp_seq=1 ttl=55 time=67.7 ms 241 bytes from socketubs.net (92.243.5.143): icmp_seq=2 ttl=55 time=66.6 ms ----socketubs.net PYTHON PING Statistics---- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip (ms) min/avg/max = 64.457/66.244/67.677 socketubs@socket-laptop [Pyping]: pyping --help
用作python库:
>>> import pyping >>> r = pyping.ping('socketubs.net') # Need to be root or >>> r = pyping.ping('socketubs.net', udp = True) # But it's udp, not real icmp >>> r.ret_code 0 >>> r.destination 'socketubs.net' >>> r.max_rtt '69.374' >>> r.avg_rtt '68.572' >>> r.min_rtt '67.681' >>> r.destination_ip '92.243.5.143'
待办事项
- 文档
- 重构core.py
- 测试
链接
- Sourcecode at GitHub: https://github.com/socketubs/Pyping
- Python Package Index: http://pypi.python.org/pypi/pyping/
历史记录
2012年6月5日
- 清理项目(通过Socketubs): -添加cli解析器 -可以用作python库 -添加到PYPI -一些修正 -清洁
2011年10月17日
- Bugfix如果主机未知
2011年10月12日
- 合并源代码并创建一个单独的githubrepository并添加一个简单的cli接口。
2011年9月12日
- 修正错误+清理由詹斯迪默。在ubuntu+windows 7上测试。
2011年9月6日
- Cleanup作者:马丁·法拉蒂奇: -恢复丢失的评论和文档。改进的功能:ping之间的固定时间,内部时间始终使用毫秒。澄清注释(例如,在校验和例程中) -在IP&ICMP头包/解包中使用未签名数据,除非另有必要。 -信号处理 -ping样式输出格式和统计信息
2011年8月3日
- 由扎克·威尔移植到PY3K。主要是通过2to3完成的;处理字节和字符串更改的小更改(校验和()中不再有ord(),因为>;源字符串<;实际上是字节,在send_one_ping()中为数据添加了.encode())。就这样。
2010年3月11日
- Samuel Stauffer的变化:
-将time.clock替换为默认的_timer,在Windows上设置为time.clock,在其他系统上设置为time.time。
2009年11月08日
- 由George Notaras修复,由Chris Hallman报告: -改进了与gnu/linux系统的兼容性。 -重新使用time.time()而不是time.clock()。2007实现仅在Microsoft Windows下有效。在gnu/linux上失败。time.clock()在两个OSes下的行为不同。
2007年6月30日
- 由Jens Diemer稍作重写:
-将套接字星号导入更改为普通导入
-将time.time()替换为time.clock()
-删除“return none”(或更改为仅“return”)
-在checksum()中,将“str”重命名为“source_string”
2000年12月4日
- 更改了struct.pack()调用以将校验和和ID打包为无符号。感谢杰罗姆·波因奇瓦尔的修复。
1997年12月16日
由于某种原因,当Salaris 2 .x在SPARC上运行时,校验和字节错误,但是它在Linux X86下工作。因为我不知道是什么问题,所以我将始终交换字节,然后执行htons()。
1997年11月22日
最初的黑客。做的不多,但与其试图猜测我(或其他人)将来想要什么功能,我只投入了我现在需要的。