成都集团网站设计推荐,网站的评测系统怎么做的,少儿编程scratch,快速百度通过python 获取当前局域网内存在的ip 通过ipconfig /all 命令获取局域网所在的网段
通过arp -d *命令清空当前所有的arp映射表
循环遍历当前网段所有可能的ip与其ping一遍建立arp映射表
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.3.%i
通过arp -a命令读取缓存的映射表…通过python 获取当前局域网内存在的ip 通过ipconfig /all 命令获取局域网所在的网段
通过arp -d *命令清空当前所有的arp映射表
循环遍历当前网段所有可能的ip与其ping一遍建立arp映射表
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.3.%i
通过arp -a命令读取缓存的映射表获取所有与本机连接的设备的Mac地址。import os
import re
import time
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED
import psutil# 逻辑cpu个数
count psutil.cpu_count()
print(cpu个数,str(count))
import pandas as pd
def get_net_segment():with os.popen(arp -a) as res:for line in res:line line.strip()if line.startswith(接口):net_segment re.findall((\d\.\d\.\d)\.\d, line)[0]breakreturn net_segment
def ping_net_segment_all(net_segment):# for i in range(1, 255):# os.system(fping -w 1 -n 1 {net_segment}.{i})# 多线程并发 5个线程时耗时是30秒8个线程是28秒with ThreadPoolExecutor(max_workers4) as executor:for i in range(1, 255):executor.submit(os.popen, fping -w 1 -n 1 {net_segment}.{i})
def get_arp_ip_mac():header Nonelist1 []#os.system(arp -a temp11.txt)with os.popen(arp -a) as res:for line in res:line line.strip() if not line or line.startswith(接口):continueif header is None: header re.split( {2,}, line.strip())line1 re.split( {2,}, line.strip())list1.append(line1)df pd.DataFrame(list1,columnsheader)return df
def ping_ip_list(ips, max_workers4):print(正在扫描在线列表)with ThreadPoolExecutor(max_workersmax_workers) as executor:future_tasks []for ip in ips:future_tasks.append(executor.submit(os.popen, fping -w 1 -n 1 {ip}))wait(future_tasks, return_whenALL_COMPLETED)
if __name__ __main__:# 是否进行初始扫描init_search True #Falseif init_search:print(正在扫描当前网段所有ip预计耗时1分钟....)ping_net_segment_all(get_net_segment())last Nonewhile 1:df get_arp_ip_mac()df df.loc[df.类型 动态, [Internet 地址, 物理地址]]if last is None:print(当前在线的设备)print(df)else:online df.loc[~df.物理地址.isin(last.物理地址)]if online.shape[0] 0:print(新上线设备)print(online)offline last[~last.物理地址.isin(df.物理地址)]if offline.shape[0] 0:print(刚下线设备)print(offline)time.sleep(5)ping_ip_list(df[Internet 地址].values)last df