1 Star 0 Fork 0

hpchao / ReportIP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
PingIP.py 1.41 KB
一键复制 编辑 原始数据 按行查看 历史
hpchao 提交于 2017-11-18 17:36 . 初始化
from subprocess import Popen, PIPE
import myConfig
import sys, io
import platform
# 传入ip地址,调用 cmd ping, 返回 Popen 对象
# 指定ping的stdout通过管道写入设定的buffer中
def __invoke_ping(addr,ipv=6):
# windows 的参数和linux下不同
if 'Windows' in platform.system():
cmd=myConfig.PingCMD
if 'Linux'==platform.system():
if ipv==6:
cmd=myConfig.Ping6CMDLinux
else:
cmd=myConfig.PingCMDLinux
cmd.append(addr)
ret = 0
try:
ret = Popen(cmd, bufsize=1024, stdout=PIPE)
except ValueError:
print('error occur in invoke_ping: ' + addr)
return ret
# 简单地通过 ping 回显信息检查是否在线
def __check_online(popen_obj):
sb = str(popen_obj.communicate()[0], encoding=myConfig.PingEncodeing)
echo = sb.split('\n')
ip='0'
ms='0'
if len(echo) >= 3:
if 'Windows' in platform.system():
ip = echo[2].split(' ')[1]
ms = echo[2].split('=')[-1]
if 'Linux' == platform.system():
if '(' in echo[0]:
ip = echo[0].split('(')[1].split(')')[0]
ms = echo[1].split('=')[-1]
if len(ms)>6:
ms='0'
return ip.strip(),ms.strip()
def Get_Ping_Echo(addr,ipv=6):
'''
Ping指定ip并返回结果
:param addr:地址
:param ipv:ip版本,4 或者 6
:return:
'''
ret = __invoke_ping(addr,ipv)
ms=0
ip=0
if ret!=0:
ip,ms=__check_online(ret)
else:
print(u'执行命令出现错误')
return ip.strip(':'),ms
Python
1
https://gitee.com/hpch/ReportIP.git
git@gitee.com:hpch/ReportIP.git
hpch
ReportIP
ReportIP
master

搜索帮助