chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用Python實(shí)現(xiàn)快速Ping一個(gè)IP網(wǎng)段地址?

馬哥Linux運(yùn)維 ? 來源:散盡浮華 2021 ? 作者:散盡浮華 2021 ? 2021-06-29 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

#!/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 失敗,超時(shí)2秒” % host)

else:

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

alive.append(host)

# time.sleep(0.5)

測(cè)試如下:

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 主機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    1043

    瀏覽量

    36323
  • Ping
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    16675
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72234
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

    88942

原文標(biāo)題:用 Python 實(shí)現(xiàn)快速 Ping 一個(gè) IP 網(wǎng)段地址!

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    網(wǎng)段隔離器實(shí)現(xiàn)靜態(tài)NAT網(wǎng)絡(luò)通信

    在許多網(wǎng)絡(luò)場(chǎng)景中,不同網(wǎng)段之間需要進(jìn)行通信,但又要保證各網(wǎng)段的相對(duì)獨(dú)立性和安全性。如果缺少網(wǎng)絡(luò)規(guī)劃與網(wǎng)段隔離,會(huì)使網(wǎng)絡(luò)面臨巨大的安全風(fēng)險(xiǎn),各類網(wǎng)絡(luò)攻擊更容易傳播。而靜態(tài)NAT能夠在實(shí)現(xiàn)
    的頭像 發(fā)表于 08-16 13:44 ?465次閱讀

    編程軟件連接PLC出現(xiàn)IP沖突時(shí)如何解決?

    般來說,每個(gè)PLC都有自己的IP地址,用以和其他設(shè)備進(jìn)行通信。而如果同網(wǎng)絡(luò)出現(xiàn)相同IP的設(shè)備,就會(huì)導(dǎo)致
    的頭像 發(fā)表于 07-31 17:08 ?656次閱讀
    編程軟件連接PLC出現(xiàn)<b class='flag-5'>IP</b>沖突時(shí)如何解決?

    NAT網(wǎng)關(guān)與網(wǎng)段隔離器有什么區(qū)別

    NAT網(wǎng)關(guān)與網(wǎng)段隔離器在網(wǎng)絡(luò)通信中扮演不同角色, NAT網(wǎng)關(guān)的核心功能是地址轉(zhuǎn)換與端口復(fù)用,側(cè)重解決IP資源短缺和跨網(wǎng)段通信問題;網(wǎng)段隔離器
    的頭像 發(fā)表于 07-16 15:19 ?301次閱讀

    NAT網(wǎng)關(guān)實(shí)現(xiàn)網(wǎng)段訪問與設(shè)備統(tǒng)管理

    在出廠時(shí)預(yù)設(shè)了固定的IP地址,更改成本較高,工期也較長(zhǎng),亟待高效可靠的解決方案。 物通博聯(lián)推出的NAT網(wǎng)關(guān)適用于生產(chǎn)網(wǎng)絡(luò)對(duì)PLC、HMI、CNC、DCS、MES等網(wǎng)絡(luò)通訊和數(shù)據(jù)采集,兼有跨網(wǎng)段隔離和
    的頭像 發(fā)表于 06-21 15:41 ?595次閱讀
    NAT網(wǎng)關(guān)<b class='flag-5'>實(shí)現(xiàn)</b>跨<b class='flag-5'>網(wǎng)段</b>訪問與設(shè)備統(tǒng)<b class='flag-5'>一</b>管理

    TECS OpenStack資源池虛擬機(jī)網(wǎng)絡(luò)二層地址無法互通的問題處理

    某運(yùn)營(yíng)商TECS OpenStack使用主機(jī)overlay SDN方案組網(wǎng),運(yùn)維人員在創(chuàng)建虛擬機(jī)測(cè)試虛擬機(jī)網(wǎng)絡(luò)狀態(tài)時(shí)發(fā)現(xiàn)問題:在其中臺(tái)主機(jī)上創(chuàng)建兩臺(tái)同網(wǎng)段虛擬機(jī),虛擬機(jī)之間二層地址無法Pin
    的頭像 發(fā)表于 06-12 09:28 ?478次閱讀
    TECS OpenStack資源池虛擬機(jī)網(wǎng)絡(luò)二層<b class='flag-5'>地址</b>無法互通的問題處理

    網(wǎng)段通訊終極指南讓不同網(wǎng)段PLC設(shè)備實(shí)現(xiàn)無障礙對(duì)話

    直接通信的,需要特殊的配置或ip地址轉(zhuǎn)換器(耦合器)設(shè)備來實(shí)現(xiàn)通信,不同網(wǎng)段的PLC通訊需要跨網(wǎng)段耦合器。用捷米特功能模塊JM-ETH-NA
    的頭像 發(fā)表于 04-23 09:49 ?603次閱讀
    跨<b class='flag-5'>網(wǎng)段</b>通訊終極指南讓不同<b class='flag-5'>網(wǎng)段</b>PLC設(shè)備<b class='flag-5'>實(shí)現(xiàn)</b>無障礙對(duì)話

    網(wǎng)段隔離器實(shí)現(xiàn)網(wǎng)段PLC數(shù)據(jù)通信

    在工廠自動(dòng)化生產(chǎn)中,不同生產(chǎn)環(huán)節(jié)的PLC處于不同網(wǎng)段,實(shí)現(xiàn)網(wǎng)段PLC數(shù)據(jù)通信對(duì)提升生產(chǎn)協(xié)同性至關(guān)重要。網(wǎng)段隔離器憑借自身特性,可有效解決這
    的頭像 發(fā)表于 04-18 15:15 ?506次閱讀
    <b class='flag-5'>網(wǎng)段</b>隔離器<b class='flag-5'>實(shí)現(xiàn)</b>多<b class='flag-5'>網(wǎng)段</b>PLC數(shù)據(jù)通信

    工廠無線局域網(wǎng)WIFI如何跨網(wǎng)段訪問多個(gè)PLC?

    通訊,三菱PLC則不能與上位機(jī)通信,就會(huì)導(dǎo)致上位機(jī)中的監(jiān)控系統(tǒng)得不到數(shù)據(jù)來源,相關(guān)的監(jiān)控、控制與管理等應(yīng)用也無法實(shí)現(xiàn)。 通過接入物通博聯(lián)PLC網(wǎng)絡(luò)耦合器,可以將不同網(wǎng)段IP地址統(tǒng)
    的頭像 發(fā)表于 12-31 14:34 ?934次閱讀
    工廠無線局域網(wǎng)WIFI如何跨<b class='flag-5'>網(wǎng)段</b>訪問多個(gè)PLC?

    ISP與IP地址

    才能接入互聯(lián)網(wǎng),與其他設(shè)備進(jìn)行通信和數(shù)據(jù)傳輸。這是前提也是基礎(chǔ)。 ? ISP通常使用DHCP來為用戶提供IP地址的動(dòng)態(tài)分配。當(dāng)設(shè)備連接到ISP的網(wǎng)絡(luò)時(shí),DHCP服務(wù)器會(huì)自動(dòng)從IP地址
    的頭像 發(fā)表于 12-27 10:41 ?761次閱讀

    CIDR的IP地址分配與管理

    傳統(tǒng)IP地址分類,也就是ABC類等。但是,有種情況,“如果個(gè)公司可能被分配了
    的頭像 發(fā)表于 12-26 10:01 ?792次閱讀

    突破跨網(wǎng)段通訊問題:不同網(wǎng)段PLC設(shè)備如何通訊?

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

    無需修改設(shè)備IP實(shí)現(xiàn)網(wǎng)段訪問的解決方案

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

    怎么綁定IP地址和MAC地址

    本篇文章主要說說怎么在本地計(jì)算機(jī)上綁定IP和MAC地址以及通過路由器綁定IP和MAC地址,并且這兩者綁定可以解決什么問題。 ? 先來說說怎
    的頭像 發(fā)表于 12-01 22:48 ?2260次閱讀

    網(wǎng)段訪問網(wǎng)關(guān)有什么功能及作用

    網(wǎng)絡(luò)通訊和數(shù)據(jù)采集,兼有跨網(wǎng)段隔離和IP轉(zhuǎn)換的功能。車間多個(gè)設(shè)備,如果有不同網(wǎng)段IP地址,則可以統(tǒng)
    的頭像 發(fā)表于 11-21 14:33 ?988次閱讀
    跨<b class='flag-5'>網(wǎng)段</b>訪問網(wǎng)關(guān)有什么功能及作用

    知道IP地址有什么用?

    IP地址等于你家的地址,如果有必要情況,相關(guān)部門是可以根據(jù)IP地址找到你的。這種地址也是唯
    的頭像 發(fā)表于 11-21 10:53 ?1092次閱讀