Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';无法访问主机';成功回归_Python_Ping_Icmp - Fatal编程技术网

Python ';无法访问主机';成功回归

Python ';无法访问主机';成功回归,python,ping,icmp,Python,Ping,Icmp,我有下面一段Python代码,用于Ping多个地址 import subprocess as s import tkinter as tk from tkinter import * IPT.title("IP Ping Test Tool") canvas_IPT = Canvas(IPT, width=401, height=551) canvas_IPT.pack() Output_IP_Address_AN = Output_IP_Address[10] IPT_Disp

我有下面一段Python代码,用于Ping多个地址

import subprocess as s  
import tkinter as tk
from tkinter import *

IPT.title("IP Ping Test Tool")
canvas_IPT = Canvas(IPT, width=401, height=551)
canvas_IPT.pack()   

Output_IP_Address_AN = Output_IP_Address[10]

IPT_Display_AN = Label(IPT, text=Output_IP_Address_AN, anchor=W)
IPT_Display_AN_Window = canvas_IPT.create_window(150, 235, anchor = 'sw', window = IPT_Display_AN)

def IPT_Test():
    print("Test Initiated")

    AN_Sel_State = var4.get()
    if (AN_Sel_State == 1):
        if(s.call(["ping", Output_IP_Address_AN])==0):
                print("AvI Navi 'Ping' Sucessful")
                IPT_Display_AN = Label(IPT, text=(Output_IP_Address_AN, "Ok"),fg='green', anchor=W)
                IPT_Display_AN_Window = canvas_IPT.create_window(150, 235, anchor = 'sw', window = IPT_Display_AN)
        else:
                print("Avi Navi 'Ping' NOT Sucessful")
                IPT_Display_AN = Label(IPT, text=(Output_IP_Address_AN, "Failed"),fg='red', anchor=W)
                IPT_Display_AN_Window = canvas_IPT.create_window(150, 235, anchor = 'sw', window = IPT_Display_AN)

    IPT_Display_AN = Label(IPT, text=Output_IP_Address_AN, anchor=W)
    IPT_Display_AN_Window = canvas_IPT.create_window(150, 235, anchor = 'sw', window = IPT_Display_AN)

var4 = IntVar()
IPT_Test_AN = Checkbutton(IPT, text = "AVI/NAVI", justify=LEFT,width=15, indicatoron=0,
                                variable = var4, command=AN_Sel)
IPT_Test_AN_Window = canvas_IPT.create_window(20, 240, anchor = 'sw', window = IPT_Test_AN)

IPTest_Button = tk.Button(IPT, text = 'TEST', command = IPT_Test, background ="#01AEAC", width=20, height=3,)
在接收到数据包数据(成功)的情况下,这与预期一样有效,在“请求超时”(不成功)时也有效,但在“主机不可访问”时,它返回的结果是成功的

对此做了一些研究,我相信“主机不可访问”返回为==0,即使ping实际上没有成功(仍然不理解为什么会这样?)


如果是这种情况,当我的应用程序具有与成功Ping相同的退出状态时,如何排除“主机不可访问”显示成功?我不知道为什么会在您的本地出现这种情况,我在本地测试,当我有以下代码时,它对我有效:

...
if(s.call(["ping", "-c", "1", "-W", "4", Output_IP_Address_AN])==0):
     print("AvI Navi 'Ping' Sucessful")
...
我让ping发送1个包,超时时间为4秒

在local中,我运行以下命令来模拟主机不可访问的情况:

 sudo ip route add unreachable 1.0.0.3
然后使用上面的更改运行代码,
而不成功的是印刷。当输出IP地址被设置为1.0.0.3时,因为PING请求得到如下回复:

来自xx.xx.xx.xx的回复:无法访问目标主机

从技术上讲,这仍然是一个回答

因此,请尝试解析控制台输出,这可能会达到以下目的:

ping-c1-w4 ip地址| findstr/i“TTL”

这里有一个类似的问题:

读取命令的输出。
ping
首先不能正确编写脚本。您可能应该查看
fping
multiping
或friends。我们可以猜到
s
子流程的别名,但我猜不到其他别名。也许可以看一下创建@tripleee的指南。抱歉,我试图将代码示例保持在最低限度,我将编辑此帖子clarify@tripleeefping看起来很理想,但我使用的是windows而不是linux。此ping的结果用于更广泛程序中的其他功能,否则我将按照您的建议使用专用ping工具。我将使用您拥有的再次测试此功能。“-c”,“1”,“-W”,“4”在做什么?所以在我的测试场景中,我连接到一个设备。当设备配置正确时,我获得成功;当设备配置不正确时,我获得“主机不可访问”(返回成功);如果我拔下设备以太网,我获得“请求超时”,返回不成功