在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用Python實現快速Ping一個IP網段地址?

馬哥Linux運維 ? 來源:散盡浮華 2021 ? 作者:散盡浮華 2021 ? 2021-06-29 15:59 ? 次閱讀

ping 命令是我們檢查網絡中最常用的命令,作為網絡人員,基本上每天都會用到,可以很好地幫助我們分析和判定網絡故障;如果有 10 設備,100 臺設備,1000 臺設備怎么辦?一個個 ping 過去人都要瘋掉了,這種情況在大型網絡中我們有可能遇到,那怎么辦呢?我們今天來看下如何用 python 來實現批量 ping 測試主機。代碼如下:

#!/usr/bin/python3# -*- coding: utf-8 -*-import os

import argparse

import socket

import struct

import select

import time

ICMP_ECHO_REQUEST = 8 # Platform specific

DEFAULT_TIMEOUT = 0.1

DEFAULT_COUNT = 4class Pinger(object):

“”“ Pings to a host -- the Pythonic way”“”

def __init__(self, target_host, count=DEFAULT_COUNT, timeout=DEFAULT_TIMEOUT):

self.target_host = target_host

self.count = count

self.timeout = timeout

def do_checksum(self, source_string):

“”“ Verify the packet integritity ”“”

sum = 0

max_count = (len(source_string)/2)*2

count = 0

while count 《 max_count:

val = source_string[count + 1]*256 + source_string[count]

sum = sum + val

sum = sum & 0xffffffff

count = count + 2

if max_count《len(source_string):

sum = sum + ord(source_string[len(source_string) - 1])

sum = sum & 0xffffffff

sum = (sum 》》 16) + (sum & 0xffff)

sum = sum + (sum 》》 16)

answer = ~sum

answer = answer & 0xffff

answer = answer 》》 8 | (answer 《《 8 & 0xff00)

return answer

def receive_pong(self, sock, ID, timeout):

“”“

Receive ping from the socket.

”“”

time_remaining = timeout

while True:

start_time = time.time()

readable = select.select([sock], [], [], time_remaining)

time_spent = (time.time() - start_time)

if readable[0] == []: # Timeout

return

time_received = time.time()

recv_packet, addr = sock.recvfrom(1024)

icmp_header = recv_packet[20:28]

type, code, checksum, packet_ID, sequence = struct.unpack(

“bbHHh”, icmp_header

if packet_ID == ID:

bytes_In_double = struct.calcsize(“d”)

time_sent = struct.unpack(“d”, recv_packet[28:28 + bytes_In_double])[0]

return time_received - time_sent

time_remaining = time_remaining - time_spent

if time_remaining 《= 0:

return

def send_ping(self, sock, ID):

“”“

Send ping to the target host

”“”

target_addr = socket.gethostbyname(self.target_host)

my_checksum = 0

# Create a dummy heder with a 0 checksum.

header = struct.pack(“bbHHh”, ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)

bytes_In_double = struct.calcsize(“d”)

data = (192 - bytes_In_double) * “Q”

data = struct.pack(“d”, time.time()) + bytes(data.encode(‘utf-8’))

# Get the checksum on the data and the dummy header.

my_checksum = self.do_checksum(header + data)

header = struct.pack(

“bbHHh”, ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1

packet = header + data

sock.sendto(packet, (target_addr, 1))

def ping_once(self):

“”“

Returns the delay (in seconds) or none on timeout.

”“”

icmp = socket.getprotobyname(“icmp”)

try:

sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)

except socket.error as e:

if e.errno == 1:

# Not superuser, so operation not permitted

e.msg += “ICMP messages can only be sent from root user processes”

raise socket.error(e.msg)

except Exception as e:

print(“Exception: %s” %(e))

my_ID = os.getpid() & 0xFFFF

self.send_ping(sock, my_ID)

delay = self.receive_pong(sock, my_ID, self.timeout)

sock.close()

return delay

def ping(self):

“”“

Run the ping process

”“”

for i in range(self.count):

print (“Ping to %s.。。” % self.target_host,)

try:

delay = self.ping_once()

except socket.gaierror as e:

print (“Ping failed. (socket error: ‘%s’)” % e[1])

break

if delay == None:

print (“Ping failed. (timeout within %ssec.)” % self.timeout)

else:

delay = delay * 1000

print(“Get pong in %0.4fms” % delay)

if __name__ == ‘__main__’:

alive = []

host_prefix = ‘192.168.242.’

for i in range(1, 255):

host = host_prefix + str(i)

pinger = Pinger(target_host=host)

delay = pinger.ping_once()

if delay == None:

print(“Ping %s 失敗,超時2秒” % host)

else:

print(“ping %s = %s ms” % (host, round(delay * 1000, 4)))

alive.append(host)

# time.sleep(0.5)

測試如下:

8b6ab878-d895-11eb-9e57-12bb97331649.gif

原文鏈接:www.yjsec.com/2020/11/07
編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 主機
    +關注

    關注

    0

    文章

    1013

    瀏覽量

    35324
  • Ping
    +關注

    關注

    0

    文章

    69

    瀏覽量

    16068
  • 代碼
    +關注

    關注

    30

    文章

    4837

    瀏覽量

    69121
  • python
    +關注

    關注

    56

    文章

    4811

    瀏覽量

    85075

原文標題:用 Python 實現快速 Ping 一個 IP 網段地址!

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    突破跨網段通訊問題:不同網段PLC設備如何通訊?

    不能直接通信的,需要特殊的配置或ip地址轉換器(耦合器)設備來實現通信,不同網段的PLC通訊需要跨網段耦合器。用過捷米特功能模塊JM-ETH
    的頭像 發表于 12-10 11:55 ?424次閱讀
    突破跨<b class='flag-5'>網段</b>通訊問題:不同<b class='flag-5'>網段</b>PLC設備如何通訊?

    無需修改設備IP實現網段訪問的解決方案

    數字化、網絡化改造造成困擾。 在有組網設備存在IP地址端沖突且無法修改網段時,可通過物通博聯網段耦合器(NAT網關),將車間生產設備的IP
    的頭像 發表于 12-09 17:16 ?301次閱讀
    無需修改設備<b class='flag-5'>IP</b><b class='flag-5'>實現</b>跨<b class='flag-5'>網段</b>訪問的解決方案

    網段IP耦合器實現工業設備快速接入物聯網平臺

    在現代工業自動化領域,隨著設備數量的不斷增加和網絡結構的日益復雜,跨網段通信成為了亟需解決的問題。設備間的通信往往受限于其IP地址所在的
    的頭像 發表于 09-27 10:52 ?345次閱讀
    跨<b class='flag-5'>網段</b><b class='flag-5'>IP</b>耦合器<b class='flag-5'>實現</b>工業設備<b class='flag-5'>快速</b>接入物聯網平臺

    工業NAT網關實現不同網段IP轉換成同一網段

    的無縫通信,讓不同網段IP的設備能夠相互訪問,物通博聯提供基于工業NAT網關的解決方案,能夠將不同網段IP地址轉換成同
    的頭像 發表于 09-23 15:24 ?344次閱讀
    工業NAT網關<b class='flag-5'>實現</b>不同<b class='flag-5'>網段</b><b class='flag-5'>IP</b>轉換成同<b class='flag-5'>一網段</b>

    如何利用python和API查詢IP地址

    Python中,直接查詢IP地址的地理位置或詳細信息(如所屬國家、城市等)通常需要依賴外部API服務,因為Python標準庫本身不提供直接查詢IP
    發表于 08-28 11:55

    使用Python進行Ping測試

    在網絡工程中,Ping測試是種常用的網絡診斷工具,用于檢查網絡連接的可達性和響應時間。Ping測試通過向目標主機發送ICMP(Internet Control Message Protocol
    的頭像 發表于 08-12 17:56 ?610次閱讀
    使用<b class='flag-5'>Python</b>進行<b class='flag-5'>Ping</b>測試

    Ping測試在不同網段通信中的準確性

    不同網段之間的通信順暢與否能影響網絡的整體性能和業務的正常運行。Ping 測試作為種常用的網絡診斷工具,被廣泛用于檢測網絡連接的可達性。然而,在沒有三層交換路由功能的網絡中,跨網段
    的頭像 發表于 07-31 16:15 ?392次閱讀

    網段 IP 地址通信故障分析

    本文深入探討了在網絡環境中,跨網段 IP 地址通信故障的原因,重點闡述了路由設置不正確所引發的無法正常通信問題。通過實際案例分析和理論研究,詳細介紹了故障的表現、影響及有效的解決策略,為保障網絡的穩定高效通信提供了有力的理論支持
    的頭像 發表于 07-29 13:52 ?405次閱讀
    跨<b class='flag-5'>網段</b> <b class='flag-5'>IP</b> <b class='flag-5'>地址</b>通信故障分析

    NAT網關如何修改PLC的IP地址實現網段訪問

    IP無法修改給企業帶來越多越多困擾。 對此,物通博聯提供基于NAT(網段隔離器)的解決方案,適用于生產網絡對 PLC、HMI、CNC、DCS、MES等網絡通訊和數據采集,兼有跨網段隔離和IP
    的頭像 發表于 07-18 17:38 ?518次閱讀
    NAT網關如何修改PLC的<b class='flag-5'>IP</b><b class='flag-5'>地址</b><b class='flag-5'>實現</b>跨<b class='flag-5'>網段</b>訪問

    路由器ip地址沖突怎么解決

    當兩路由器的IP地址發生沖突時,會導致網絡連接不穩定或無法連接。以下是解決兩路由器IP地址
    的頭像 發表于 07-09 11:35 ?6620次閱讀

    NAT網關實現工業設備網段隔離,解決IP沖突問題

    在制造業工廠中,存在大量已經提前布設好的通信網絡,通過實現設備聯網數據采集,可以實現設備的遠程監控與遠程控制,從而為高效率生產帶來各種智能應用。但在新設備聯網時,往往會遇見IP地址段沖
    的頭像 發表于 06-20 14:11 ?637次閱讀
    NAT網關<b class='flag-5'>實現</b>工業設備<b class='flag-5'>網段</b>隔離,解決<b class='flag-5'>IP</b>沖突問題

    網段IP耦合器是什么?跨網段IP耦合器的功能作用

    通過別的網段訪問,網絡耦合器能夠解決跨網段訪問的問題。 車間多個設備,如果具有相同的IP地址,則可以統成同
    的頭像 發表于 04-18 09:25 ?526次閱讀

    網段隔離器如何實現IP隔離轉換配置

    推出具備IP隔離和NAT轉換功能的網段隔離器,適用于生產網絡對 PLC、HMI、CNC、DCS、MES等網絡通訊和數據采集,兼有跨網段隔離和IP轉換的功能。比如車間多個設備,如果有不同
    的頭像 發表于 03-29 10:54 ?832次閱讀
    <b class='flag-5'>網段</b>隔離器如何<b class='flag-5'>實現</b><b class='flag-5'>IP</b>隔離轉換配置

    IP轉換網關(網段隔離網關)是什么?有什么功能

    IP轉換網關(網段隔離網關),解決NAT轉換和設備聯網問題,快速實現設備上網與實時通信。 IP轉換網關(
    的頭像 發表于 03-11 17:43 ?911次閱讀
    <b class='flag-5'>IP</b>轉換網關(<b class='flag-5'>網段</b>隔離網關)是什么?有什么功能

    通過網段隔離器實現NAT轉換與跨網段訪問

    需要我們采用種方法來解決中間的這段空窗期。 這時,NAT(網絡地址轉換)發揮出重要的作用,將內部網絡中的私有IP地址轉換為公共IP
    的頭像 發表于 02-18 17:28 ?513次閱讀
    通過<b class='flag-5'>網段</b>隔離器<b class='flag-5'>實現</b>NAT轉換與跨<b class='flag-5'>網段</b>訪問
    主站蜘蛛池模板: 性满足久久久久久久久 | 操你啦网站 | 国产亚洲片 | 天天天天做夜夜夜夜 | 天天综合网天天做天天受 | 午夜视频免费在线观看 | 天天躁狠狠躁狠狠躁夜夜躁 | 国产农村妇女毛片精品久久久 | 一个色亚洲| 丁香花在线影院观看在线播放 | 狠狠干2021 | 极品色天使在线婷婷天堂亚洲 | 看真人一级毛片 | 一区视频在线 | 日本午夜大片a在线观看 | 三级在线观看免播放网站 | 男女午夜免费视频 | 中文字幕国产一区 | 色天使亚洲综合在线观看 | 日韩孕交 | 日本特黄特色大片免费播放视频 | 日韩特黄毛片 | 五月天婷婷亚洲 | 成人影院免费观看 | 国产99在线播放免费 | 男人j进入女人j在线视频 | 国产精品三级在线观看 | 亚洲性人人天天夜夜摸 | 一级片在线免费观看 | 欧美色欧美亚洲高清在线观看 | 国内一国产农村妇女一级毛片 | 亚洲一区二区三区中文字幕 | 亚洲一区二区欧美 | 午夜剧场刺激性爽免费视频 | 欧美日韩一区二区三区毛片 | 伊人久久99 | 国产精品久久久久久久牛牛 | 又黄又湿又爽吸乳视频 | www四虎影视 | 国产三级a三级三级天天 | 欧美一级高清黄图片 |