網(wǎng)站首頁 編程語言 正文
Python測網(wǎng)絡(luò)連通性、能否訪問某個(gè)網(wǎng)絡(luò)或者端口號(hào)<網(wǎng)絡(luò)檢測、ping主機(jī)、測試端口>
作者:別出BUG求求了 更新時(shí)間: 2023-11-11 編程語言一、ping命令及其使用
ping命令是在計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域中用來測試目標(biāo)主機(jī)是否可達(dá)以及其延遲時(shí)間的命令。對于Python來說,我們可以通過subprocess模塊來實(shí)現(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是否可達(dá),ping命令將執(zhí)行3次且等待5秒鐘,如果目標(biāo)主機(jī)可達(dá),則函數(shù)將返回True和ping命令的輸出;否則將返回False和錯(cuò)誤信息。
二、使用urllib和requests檢測是否連接到特定站點(diǎn)
urllib和requests是Python中最受歡迎和使用的HTTP網(wǎng)絡(luò)請求庫之一。我們可以使用這些庫來檢查是否連接到特定站點(diǎn)。下面是一個(gè)簡單的使用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)站可訪問,則將打印消息。否則將打印不可用消息。
以下是一個(gè)使用requests庫的示例,您可能會(huì)發(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)站。如果該站點(diǎn)可用,則將打印消息。否則將打印不可用消息。
三、使用socket庫測試TCP/UDP端口的可用性
socket庫允許我們使用TCP或UDP協(xié)議在本地或遠(yuǎn)程計(jì)算機(jī)上的特定端口測試可用性。我們可以使用如下示例代碼:
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庫測試本地計(jì)算機(jī)上的端口80。如果端口開放,則將打印Port 80 is open!;否則,將打印Port 80 is closed!。
同樣,我們可以使用該庫來測試TCP和UDP協(xié)議的遠(yuǎn)程端口的可用性。
四、使用ping3庫實(shí)現(xiàn)更多ping功能
如果要在Python中執(zhí)行更加高級(jí)的ping命令,您可以使用ping3庫。ping3庫提供了許多高級(jí)功能,如單個(gè)數(shù)據(jù)包的ping、發(fā)現(xiàn)局域網(wǎng)內(nèi)的主機(jī)等。以下是示例代碼:
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è)定自定義超時(shí)時(shí)間以及掃描局域網(wǎng)內(nèi)的主機(jī)。
五、使用multiping庫同時(shí)ping多個(gè)主機(jī)
如果你需要在Python中同時(shí)ping多個(gè)主機(jī),可以使用multiping庫。這個(gè)庫使用了多線程來加快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))
以上代碼將同時(shí)ping多個(gè)主機(jī),并輸出結(jié)果。
原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/133806194
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-08-01 Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的全過程_Android
- 2023-10-10 前端的多種克隆方式和注意事項(xiàng)
- 2022-05-04 C語言中g(shù)etchar()的原理以及易錯(cuò)點(diǎn)解析_C 語言
- 2022-09-25 CSS-元素隱藏的兩種主要方式
- 2024-02-25 前端顯示的日期時(shí)間與數(shù)據(jù)庫日期時(shí)間不一致
- 2022-09-22 docker安裝Oracle數(shù)據(jù)庫
- 2021-11-22 Linux下Select多路復(fù)用實(shí)現(xiàn)簡易聊天室示例_C 語言
- 2023-01-11 Python?基于xml.etree.ElementTree實(shí)現(xiàn)XML對比示例詳解_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 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錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支