使用原始套接字的纯python icmp ping实现。

python-ping的Python项目详细描述


使用原始套接字的纯python ping实现。

注意,ICMP消息只能从以根用户身份运行的进程发送 (在Windows中,必须以“管理员”身份运行此脚本)。

来自Matthew Dixon Cowles

的原始版本
  • python ping团队的copyleft 1989-2011,请参见AUTHORS了解更多详细信息。
  • 许可证:gnu gpl v2,请参见LICENSE了解更多详细信息。

用法

~/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界面
  • 使用输出解析器添加“supprocess ping”

贡献

Fork this repoGitHubsend pull requests上。谢谢您。

修订历史

2011年10月12日

合并源并创建单独的github存储库:

添加一个简单的cli界面。

2011年9月12日

Jens Diemer的错误修复+清理 使用ubuntu+windows 7进行测试

2011年9月6日

Cleanup by Martin Falatic. 恢复丢失的评论和文档。改进的功能:恒定的时间间隔 pings,内部时间始终使用毫秒。澄清注释 (例如,在校验和程序中)。在IP&ICMP头中使用未签名数据 包装/拆箱,除非另有必要。信号处理。ping样式输出 格式化和统计。

2011年8月3日

由扎克·威尔移植到PY3K。主要由2to3完成;对 处理字节与字符串的变化(校验和中不再有ord(),因为 >;source_string<;实际上是字节,已将.encode()添加到中的数据 发送一个)。就这样。

2010年3月11日

Samuel Stauffer的变化: 将time.clock替换为默认的计时器,该计时器设置为 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()在the two OSes下的行为不同。

2007年5月30日

rewrite by Jens Diemer

  • 将套接字星号导入更改为普通导入
  • 将time.time()替换为time.clock()
  • 删除“return none”(或更改为“return”(仅限返回)
  • 在checksum()中,将“str”重命名为“source_string”

2000年12月4日

将struct.pack()调用更改为将校验和和ID打包为 未签名的。感谢杰罗姆·波因奇瓦尔的修复。

1997年11月22日

最初的黑客。做的不多,但不是去猜测 我(或其他人)将来想要什么样的功能,我只有 把我现在需要的东西放进去。

1997年12月16日

由于某些原因,当 这是在Solaris 2 .x上运行的,但它的工作原理是正确的。 Linux x86。既然我不知道怎么了,我就把 字节总是然后做一个htons()。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?