pip3 install icmplib
from icmplib import pin
ping(address, count=4, interval=1, timeout=2, id=None, source=None, family=None, privileged=True, **kwargs)
用系統的ping
import platform
import subprocess
def ping(host):
parameter = '-n' if platform.system().lower()=='windows' else '-c'
command = ['ping', parameter, '1', host]
response = subprocess.call(command)
if response == 0:
return True
else:
return False
print(ping("www.google.com"))
感謝大哥撥空回答
先說聲抱歉,是我表達的不清楚
補充說明一下
產品為router
在router mode與ip passthrough mode(IPPT)間切換,每一次切換完成後
去執行ping的動作
確保在切換完成後,網路是正常的
在我寫的def函式中,
是由roter切換到IPPT,再從IPPT切回router
以上為一個cycle
目前想要實現的是
從roter切換到IPPT後,做一次ping的判斷
若fail即停止
若pass則繼續切換回router後再次執行ping判斷,pass,則完成一次cycle
想判斷的位置就如上圖所示的位置
並不是在整個while迴圈完去執行ping
我自已也有參考網路上寫的ping方式,如下:
import os
def ping(host):
response = os.system("ping -c 1 " + host)
if response == 0:
return True
else:
return False
print(ping("www.google.com"))
但如果將此段加入,會有另外一個狀況
假設我需要測試100次
當我在第一次切換到IPPT時
就會顯示第一次結束
若整個cycle跑完
會變成第2次結束
實際上才執行一次完整的cycle而已
請問有辦法實現我想要的方式嗎
感謝!