您好,登錄后才能下訂單哦!
要在Linux上使用Python腳本監(jiān)控網(wǎng)絡(luò)服務(wù)質(zhì)量,你可以使用ping
命令和subprocess
庫來執(zhí)行ping操作并獲取結(jié)果
import subprocess
import time
def ping(host, timeout=2):
try:
result = subprocess.run(
["ping", "-c", "1", "-W", str(timeout), host],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
check=True,
)
return True
except subprocess.CalledProcessError:
return False
def monitor_network_quality(hosts, interval=60):
while True:
for host in hosts:
if ping(host):
print(f"{host} is reachable.")
else:
print(f"{host} is not reachable.")
time.sleep(interval)
if __name__ == "__main__":
hosts_to_monitor = ["8.8.8.8", "example.com"]
monitor_network_quality(hosts_to_monitor)
這個(gè)腳本定義了一個(gè)ping
函數(shù),它使用subprocess.run
執(zhí)行ping命令。如果ping成功,函數(shù)返回True,否則返回False。
monitor_network_quality
函數(shù)接受一個(gè)主機(jī)列表和一個(gè)監(jiān)控間隔(默認(rèn)為60秒)。它會(huì)無限循環(huán)地對(duì)每個(gè)主機(jī)執(zhí)行ping操作,并打印出主機(jī)是否可達(dá)的信息。
在__main__
部分,我們定義了一個(gè)要監(jiān)控的主機(jī)列表,然后調(diào)用monitor_network_quality
函數(shù)開始監(jiān)控。
請(qǐng)注意,這個(gè)腳本需要root權(quán)限才能運(yùn)行,因?yàn)樗褂昧薎CMP協(xié)議,而在某些系統(tǒng)上,只有root用戶才能發(fā)送和接收ICMP數(shù)據(jù)包。要以root權(quán)限運(yùn)行腳本,請(qǐng)?jiān)诮K端中輸入sudo python3 network_monitor.py
(假設(shè)腳本名為network_monitor.py
)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。