最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)批量檢測ip地址連通性

 更新時間:2024年04月18日 09:18:19   作者:蝸牛其實也很努力  
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)批量檢測ip地址連通性并以json格式顯示(支持傳參單IP或者網(wǎng)段),感興趣的小伙伴可以了解下

實現(xiàn)代碼

 #########################################################################
 #    File Name: check_ip_test.py
 #    Author: eight
 #    Mail: 18847097110@163.com 
 #    Created Time: Thu 11 Apr 2024 08:52:45 AM CST
 #########################################################################
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-                                                                                                                                                                                                             
 import sys
 import ipaddress
 import subprocess
 import re
 import json
 
 
 # 處理單個IP 的ping請求
 def ping_ip(ip):
     try:
         output = subprocess.check_output(['ping', '-c', '1', ip], stderr=subprocess.STDOUT, universal_newlines=True, timeout=2)
         return output
     except (subprocess.CalledProcessError, subprocess.TimeoutExpired):
         return False
 
 
 # 處理網(wǎng)段的請求
 def scan_network(ip_network):
     result_list = []
     for ip in ipaddress.IPv4Network(ip_network, strict=False):
         ip_str = str(ip)
         result = ping_ip(ip_str)
         print(f"Begin Ping {ip_str}...")
         time_value = ping_test_match(ip_str)
         if result:
             #print(f"{ip_str} Network communication is normal.")
             if time_value:
                 result_list.append({'ip': ip_str, 'connection': True, 'time': f"{time_value} ms"})
             else:
                 result_list.append({'ip': ip_str, 'connection': True, 'time': '0ms'})
         else:
             #print(f"{ip_str} Network communication is not normal.")
             result_list.append({'ip': ip_str, 'connection': False})
     return result_list 
 
 
# 測試的請求及正則匹配time時間
 def ping_test_match(ip):
     try:
         ipaddress.IPv4Address(ip)
         #print("The entered address is valid. The connectivity check starts")
         ping_output = ping_ip(ip)
         if ping_output:
             #return "yes"
             time_match = re.search(r"time=([\d.]+) ms", ping_output)
             if time_match:
                 time_value = float(time_match.group(1))
                 return time_value
             else:
                 return None
         else:
             return None
     except ipaddress.AddressValueError:
         #print("The entered address is invalid")
         return None
             
 
 # 如果是單個IP,執(zhí)行第一條,因為利用此方法檢測ip是否是合法的,輸入網(wǎng)段則視為不合法,所以輸入網(wǎng)段會用except
 if __name__ == "__main__":
     ip = sys.argv[1]
     try:
         ipaddress.IPv4Address(ip)
         print(ping_test_match(ip))
     except ipaddress.AddressValueError:
         result_list = scan_network(ip)
         #print(json.dumps(result_list))
         for item in result_list:
             if "time" not in item:
                 item["time"] = "0ms"
         print(json.dumps(result_list))       

代碼詳解

模塊解釋:

  • sys:  模塊,用于訪問命令行參數(shù)等系統(tǒng)功能。
  • ipaddress: 模塊,用于處理 IP 地址和網(wǎng)絡(luò)。
  • subprocess: 模塊,用于執(zhí)行外部命令。
  • re:模塊,用于正則表達式匹配。
  • json: 模塊,用于 JSON 數(shù)據(jù)展示

代碼解釋:

ping_ip函數(shù)

1.接收一個 IP 地址作為參數(shù),執(zhí)行 ping 測試,使用 subprocess.check_output 函數(shù)來運行 ping 命令,然后返回命令的輸出。

2.如果 ping 命令執(zhí)行失?。ɡ?,由于超時或返回非零退出代碼),則會捕獲 subprocess.CalledProcessError 或 subprocess.TimeoutExpired 異常,并返回 False

scan_network函數(shù)

1.scan_network 函數(shù)接收一個 IP 網(wǎng)段作為參數(shù),然后遍歷該網(wǎng)段中的所有 IP 地址。

2.對于每個 IP 地址,調(diào)用 ping_ip 函數(shù)執(zhí)行 ping 測試,調(diào)用ping_test_match函數(shù)獲取time時間。

3.將結(jié)果存儲在 result 中。

4.最后,根據(jù) ping 測試的結(jié)果和 ping 時間,它向 result_list 中添加一個字典,該字典包含 IP 地址、連接狀態(tài)和 ping 時間

ping_test_match函數(shù)

1.調(diào)用 ping_ip 函數(shù)的結(jié)果

2.利用正則匹配  time字段

if __name__ == "__main__":

1.獲取傳參

2.如果是單個 IPv4 地址,則執(zhí)行單個 IP 地址的 ping 測試,并打印結(jié)果。

3.如果無法轉(zhuǎn)換為 IPv4 地址,則將輸入視為 IP 網(wǎng)段,并執(zhí)行ping測試,將結(jié)果以 JSON 格式打印

效果

執(zhí)行命令必須傳參,否則會報錯

執(zhí)行某個網(wǎng)段的測試

到此這篇關(guān)于Python實現(xiàn)批量檢測ip地址連通性的文章就介紹到這了,更多相關(guān)Python檢測ip連通性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python進行文件對比的方法

    python進行文件對比的方法

    在本篇內(nèi)容里小編給分享了關(guān)于python進行文件對比的方法和步驟,需要的朋友們可以學習下。
    2018-12-12
  • python中字符串的編碼與解碼詳析

    python中字符串的編碼與解碼詳析

    這篇文章主要給大家介紹了關(guān)于python中字符串的編碼與解碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python?Socket無限發(fā)送接收數(shù)據(jù)方式

    python?Socket無限發(fā)送接收數(shù)據(jù)方式

    這篇文章主要介紹了python?Socket無限發(fā)送接收數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python調(diào)用攝像頭顯示圖像的實例

    python調(diào)用攝像頭顯示圖像的實例

    今天小編就為大家分享一篇python調(diào)用攝像頭顯示圖像的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法

    一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法

    這篇文章主要介紹了一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python簡潔優(yōu)雅的推導(dǎo)式示例詳解

    Python簡潔優(yōu)雅的推導(dǎo)式示例詳解

    這篇文章主要給大家介紹了關(guān)于Python簡潔優(yōu)雅的推導(dǎo)式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python結(jié)合turtle簡單開發(fā)一個煙花小工具

    Python結(jié)合turtle簡單開發(fā)一個煙花小工具

    這篇文章主要為大家詳細介紹了Python如何利用turtle模塊實現(xiàn)的簡單的煙花效果展示小工具,文章的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-12-12
  • 用python + openpyxl處理excel2007文檔思路以及心得

    用python + openpyxl處理excel2007文檔思路以及心得

    最近要幫做RA的老姐寫個合并excel工作表的腳本……源數(shù)據(jù)是4000+個excel 工作表,分布在9個xlsm文件里,文件內(nèi)容是中英文混雜的一些數(shù)據(jù),需要從每張表中提取需要的部分,分門別類合并到多個大的表里。
    2014-07-07
  • Python類的詳細定義與使用案例(實例講解)

    Python類的詳細定義與使用案例(實例講解)

    這篇文章主要給大家介紹了關(guān)于Python類的詳細定義與使用案例的相關(guān)資料,在Python中類表示具有相同屬性和方法的對象的集合,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • Python項目中安裝OpenAI庫簡單易懂的解決方案

    Python項目中安裝OpenAI庫簡單易懂的解決方案

    openAI庫是OpenAI官方提供的Python SDK,旨在幫助開發(fā)者輕松調(diào)用OpenAI的API,實現(xiàn)自然語言處理(NLP)、圖像生成、代碼補全等AI功能,這篇文章主要介紹了Python項目中安裝OpenAI庫簡單易懂的解決方案,需要的朋友可以參考下
    2026-03-03

最新評論

忻州市| 防城港市| 乌拉特前旗| 封开县| 长春市| 哈密市| 农安县| 长海县| 天津市| 崇文区| 旬阳县| 三台县| 洛南县| 古丈县| 峨眉山市| 苗栗县| 个旧市| 南华县| 雷波县| 伊金霍洛旗| 东宁县| 凤庆县| 冕宁县| 右玉县| 德昌县| 牙克石市| 个旧市| 广宗县| 光山县| 天柱县| 黔西| 深圳市| 静宁县| 孝感市| 中超| 东乡| 镇江市| 淅川县| 信宜市| 峨眉山市| 沿河|