日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(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

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新