使用原始套接字实现的纯Python ICMP ping。
项目描述
使用原始套接字实现的纯Python ping。
注意,ICMP消息只能由作为root运行的进程发送(在Windows中,您必须以“管理员”身份运行此脚本)。
原始版本来自 Matthew Dixon Cowles
用法
~/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
待办事项
重构ping.py
创建一个CLI界面
添加“子进程ping”,带有输出解析器
贡献
在GitHub上分支此存储库 并 发送拉取请求。谢谢。
修订历史
2011年10月12日
合并源代码并创建单独的GitHub存储库
添加简单的CLI界面。
2011年9月12日
错误修复和清理由Jens Diemer完成。在Ubuntu + Windows 7上测试。
2011年9月6日
由 Martin Falatic 清理。 恢复了丢失的注释和文档。改进功能:ping 之间的时间恒定,内部时间始终使用毫秒。澄清了注释(例如,在校验和例程中)。除非必要,否则在 IP & ICMP 头的打包/解包中使用无符号数据。信号处理。Ping 样式输出格式和统计。
2011年8月3日
由 Zach Ware 转移到 py3k。大部分是通过 2to3 完成的;还对字节与字符串的变化做了小的修改(由于 >source_string< 实际上是字节,所以 checksum() 中不再使用 ord(),在 send_one_ping() 中的数据添加了 .encode())。就这么多。
2010年3月11日
Samuel Stauffer 的修改:将 time.clock 替换为 default_timer,在 Windows 上设置为 time.clock,在其他系统上设置为 time.time。
2009年11月8日
George Notaras 的修正,由 Chris Hallman 报告
提高了与 GNU/Linux 系统的兼容性。
本版本中的更改
重新使用 time.time() 而不是 time.clock()。2007 年的实现仅在 Microsoft Windows 上工作。在 GNU/Linux 上失败。time.clock() 在两个操作系统下的行为不同。
2007年5月30日
Jens Diemer 的小 重写
将 socket 星号导入改为正常导入
将 time.time() 替换为 time.clock()
删除“return None”(或改为“return”)
在 checksum() 中将“str”重命名为“source_string”
2000年12月4日
将 struct.pack() 调用更改为将校验和和 ID 打包为无符号。感谢 Jerome Poincheval 的修复。
1997年11月22日
初始修改。没有做很多事情,但与其猜测我(或其他人)将来想要哪些功能,我只想放进去我现在需要的。
1997年12月16日
由于某种原因,当在 Solaris 2.X for SPARC 下运行时,校验和字节顺序错误,但在 Linux x86 下运行正确。由于我不知道具体是什么问题,我将始终交换字节,然后进行 htons()。
项目详情
python-ping-2011.10.12.1d8e600.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d1cb352cb9062792ab66265121a11bfc8a15842f4224abc31f4432d10d4fd56 |
|
MD5 | b70415548abccd98318da7aa98462d53 |
|
BLAKE2b-256 | 7e8dcd50c435c9f0b2b5529b598336b87672e6b82f2a41e2a2e3e750f2997532 |