網(wǎng)站首頁 編程語言 正文
Python測網(wǎng)絡(luò)連通性、能否訪問某個網(wǎng)絡(luò)或者端口號<網(wǎng)絡(luò)檢測、ping主機、測試端口>
作者:別出BUG求求了 更新時間: 2023-11-11 編程語言一、ping命令及其使用
ping命令是在計算機網(wǎng)絡(luò)領(lǐng)域中用來測試目標(biāo)主機是否可達以及其延遲時間的命令。對于Python來說,我們可以通過subprocess模塊來實現(xiàn)執(zhí)行命令。下面是示例代碼:
import subprocess
def ping(host):
result = subprocess.run(
['ping', '-c', '3', '-W', '5', host],
capture_output=True,
encoding='utf8'
)
if result.returncode == 0:
return True, result.stdout
else:
return False, result.stderr
reachable, output = ping('www.google.com')
print(output)
以上代碼將執(zhí)行ping命令來檢測www.google.com是否可達,ping命令將執(zhí)行3次且等待5秒鐘,如果目標(biāo)主機可達,則函數(shù)將返回True和ping命令的輸出;否則將返回False和錯誤信息。
二、使用urllib和requests檢測是否連接到特定站點
urllib和requests是Python中最受歡迎和使用的HTTP網(wǎng)絡(luò)請求庫之一。我們可以使用這些庫來檢查是否連接到特定站點。下面是一個簡單的使用urllib的示例:
import urllib.request
def is_internet_available():
try:
urllib.request.urlopen('https://www.google.com')
return True
except:
return False
if is_internet_available():
print('Internet is available!')
else:
print('Internet is unavailable!')
以上代碼嘗試訪問Google網(wǎng)站,如果該網(wǎng)站可訪問,則將打印消息。否則將打印不可用消息。
以下是一個使用requests庫的示例,您可能會發(fā)現(xiàn)它更加具有可讀性:
import requests
def is_internet_available():
try:
requests.get('https://www.google.com')
return True
except:
return False
if is_internet_available():
print('Internet is available!')
else:
print('Internet is unavailable!')
與上面的代碼示例類似,此代碼嘗試訪問Google網(wǎng)站。如果該站點可用,則將打印消息。否則將打印不可用消息。
三、使用socket庫測試TCP/UDP端口的可用性
socket庫允許我們使用TCP或UDP協(xié)議在本地或遠程計算機上的特定端口測試可用性。我們可以使用如下示例代碼:
import socket
def is_port_open(ip_address, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ip_address, port))
if result == 0:
return True
else:
return False
if is_port_open('127.0.0.1', 80):
print('Port 80 is open!')
else:
print('Port 80 is closed!')
以上代碼使用socket庫測試本地計算機上的端口80。如果端口開放,則將打印Port 80 is open!;否則,將打印Port 80 is closed!。
同樣,我們可以使用該庫來測試TCP和UDP協(xié)議的遠程端口的可用性。
四、使用ping3庫實現(xiàn)更多ping功能
如果要在Python中執(zhí)行更加高級的ping命令,您可以使用ping3庫。ping3庫提供了許多高級功能,如單個數(shù)據(jù)包的ping、發(fā)現(xiàn)局域網(wǎng)內(nèi)的主機等。以下是示例代碼:
import ping3
# Ping a host
response_time = ping3.ping('127.0.0.1')
print(response_time)
# Ping a host with a custom timeout
response_time = ping3.ping('127.0.0.1', timeout=2)
print(response_time)
# Scan a local network for hosts that respond to ping
hosts = ping3.ping_scan('192.168.1.1/24')
print(hosts)
以上示例演示了如何使用ping3庫來執(zhí)行ping命令、設(shè)定自定義超時時間以及掃描局域網(wǎng)內(nèi)的主機。
五、使用multiping庫同時ping多個主機
如果你需要在Python中同時ping多個主機,可以使用multiping庫。這個庫使用了多線程來加快ping的速度。以下是示例代碼:
import multiping
# Ping multiple hosts
hosts = ['127.0.0.1', 'google.com', 'bing.com']
results = multiping.multi_ping(hosts)
for addr, rtt in results.items():
if rtt is None:
print('%s timeout' % addr)
else:
print('%s responded in %d ms' % (addr, rtt))
以上代碼將同時ping多個主機,并輸出結(jié)果。
原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/133806194
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-05-15 C++11:搞清楚萬能引用和右值引用
- 2022-06-02 C語言?隊列的實現(xiàn)全解析_C 語言
- 2022-06-08 HDFS免重啟掛載新磁盤_服務(wù)器其它
- 2022-08-16 Containerd容器運行yum安裝與二進制安裝_云其它
- 2022-09-02 Python?如何實時向文件寫入數(shù)據(jù)(附代碼)_python
- 2022-02-02 怎么樣判斷頁面是否在iframe框架里
- 2022-09-01 ASP.NET?Core通用主機的系統(tǒng)配置_實用技巧
- 2022-04-14 c語言的程序環(huán)境與預(yù)處理詳解_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支