九日 2022-07-18 19:02 采纳率: 66.7%
浏览 41
已结题

python问题ping

python通过调用ping命令,判断liansuodian列表内局域网ip地址是否通,如果通的话,获取延时信息、丢包信息、平均延时等相关返回信息,并通过判断延时时间,延时时间超过10秒预警,将预警信息取出负给一个列表取值。不通的话取不通的ip地址,将不通地址付给一个列表。每隔10分钟自动循环执行一次。
我现在写的,如果多个不通的话,只有第一个会提取ip地址,随后就跳出循环了,请问怎样写才可以达到我上边提出的需求。请指点 谢谢,感激不尽


# *--coding=utf-8--*

import os
import subprocess

import re

import content as content
from pythonping import ping


liansuodian = ['193.168.46.254','193.168.46.115','193.168.13.254','193.168.16.254','172.16.10.44']

for i in liansuodian:
    command = os.popen("ping -n 1 " + i)
    pin = command.read()

    # print(pin)
    if "请求超时" in pin:
        p = i
        print(p)
        # print("NO")

    else:
        bytime = re.findall(r'时间=(\w)', pin, re.M)
        print(bytime)







  • 写回答

4条回答 默认 最新

  • 九日 2022-07-19 13:09
    关注
    
    # *--coding=utf-8--*
    
    import os
    import subprocess
    
    import re
    
    import content as content
    from pythonping import ping
    
    
    liansuodian = ['193.168.46.254','193.168.46.115','193.168.13.254','193.168.16.254','172.16.10.44']
    
    _listY = []
    _listN = []
    for i in liansuodian:
        command = os.popen("ping -n 1 " + i)
        pin = command.read()
    
        # print(pin)
        if "请求超时" in pin:
            p = i
            _listN.append(p)
            diushi = re.findall(r'丢失 = (\w+)*', pin, re.M)
            print(p,diushi,'网络不通')
    
    
    
        else:
            p = i
            _listY.append(p)
            bytime = re.findall(r'时间=(\w)', pin, re.M)
            diushi = re.findall(r'丢失 = (\w+)*', pin, re.M)
            print(p,bytime,diushi,'网络正常')
            # print(diushi)
    
    
    
    
    
    
    
    

    输出结果:
    D:\Python\Python39\python.exe D:/project/Python/lianxi/01.py
    193.168.46.254 ['3'] ['0'] 网络正常
    193.168.46.115 ['1'] 网络不通
    193.168.13.254 ['5'] ['0'] 网络正常
    193.168.16.254 ['3'] ['0'] 网络正常
    172.16.10.44 [] ['0'] 网络正常

    ip列表里应该有2个是不通的ip,一个是193.168.46.115,一个是172.16.10.44。
    193.168.46.115判断网络不通正常,但是172.16.10.44,却不知道为什么明明不通,却提示网络正常。请问究竟应该怎样修改啊?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 修改了问题 7月19日
  • 修改了问题 7月18日
  • 展开全部

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。