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

pyping的Python项目详细描述


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

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

马修·迪克森·考尔斯的原版。

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

用法

用作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
  • 测试

贡献

Fork此回购协议针对GitHubsend请求。谢谢您。

历史记录

2012年6月5日

  • 清理项目(通过Socketubs): -添加cli解析器 -可以用作python库 -添加到PYPI -一些修正 -清洁

2011年10月17日

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日

最初的黑客。做的不多,但与其试图猜测我(或其他人)将来想要什么功能,我只投入了我现在需要的。

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

推荐PyPI第三方库


热门话题
使用导入范围函数下载文件时发生java错误   java是否提供内置的静态字符串。比较方法?   添加“再次播放?”Java中我的随机数猜测游戏的功能   java在tomcat 8中配置JPDA   编译器构造Java:检查编译时是否存在给定的方法名   当RedistreLimiter阻止请求时,java Spring云网关全局筛选器未执行   java无法将带有Gradle的单片Spring Boot应用程序转换为多模块   Eclipse(IDE)如何在没有公共类的情况下在Java中运行main方法?   用Java上传Youtube帖子   没有css和javascript的html Java httpGet页面正文   具有相同哈希代码的java Equal对象不会映射到HashMap中的相同值   字符串格式在Java中如何向数字中添加左填充的零?   java表示XML/DOM对象中attributesvalues或textnodes上的“条件”   JavaSpringJPA根据从POST请求体获取的列和值查询数据库   java BouncyCastle编码差异   java从intellij idea中提取运行命令   java类型、属性、实例和值之间的关系   java除了一个复选框外,屏幕上没有显示任何内容