python实现网络监控_python 网络监控主机

本文介绍了一个使用Python编写的批量IP检测脚本。该脚本能够读取包含多个IP地址的文件,通过多线程并发执行ping命令来检测每个IP是否可达,并记录不可达的IP及其检测时间。此工具适用于快速排查网络连通性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

importsubprocessimporttimeimportthreadingimportjsonfrom functools importwrapsfrom queue importQueue, Empty

THREAD_POOL_SIZE= 18

defcreate_ip():

with open('ip.txt', 'a+', encoding='utf-8') as f:for i in range(20):

f.write('127.0.0.{}\n'.format(i))defwrapper(func):

@wraps(func)def _timmer(*args, **kwargs):

start_time=time.time()

func(*args, **kwargs)

finish_time= time.time() -start_timeprint('共耗时{:.2f}秒'.format(finish_time))return_timmerdefrun_ping(ip):

ret_dic={}

result= subprocess.run('ping -n 1 -w 1 {}'.format(ip),

shell=True,

stdout=subprocess.DEVNULL)

result_code=result.returncode

ret_dic[ip]=result_codereturnjson.dumps(ret_dic)defprint_ping(ret):

ret_dic=json.loads(ret)for ip, ret_code inret_dic.items():if ret_code !=0:

with open('result.txt', 'a+', encoding='utf-8') as f:

f.write('{} 网络不通 {}\n'.format(

ip,

time.strftime('%Y-%m-%d %X')

))print('{} is offline'.format(ip))defworker(work_queue, result_queue):whileTrue:try:

ip= work_queue.get(block=False)exceptEmpty:break

else:try:

result=run_ping(ip)exceptException as e:

result_queue.put(e)else:

result_queue.put(result)finally:

work_queue.task_done()

@wrapperdefmain():print('正在网络检查,请稍候......')

work_queue=Queue()

result_queue=Queue()

with open('ip.txt') as f:for ip inf:

ip=ip.strip()

work_queue.put(ip)

threads=[

threading.Thread(target=worker, args=(work_queue, result_queue))for _ inrange(THREAD_POOL_SIZE)

]for thread inthreads:

thread.start()

work_queue.join()whilethreads:

threads.pop().join()while notresult_queue.empty():

result=result_queue.get()ifisinstance(result, Exception):raiseresult

print_ping(result)print('检查完毕!')if __name__ == '__main__':#create_ip()

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值