介绍
小编这次要给大家分享的是Python如何实现批量平操作,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
在日常的工作中,我们通常会有去探测目标主机是否存活的应用场景,单个的服务器主机可以通过计算机自带的DOS命令来执行,但是业务的存在往往不是单个存在的,通常都是需要去探测C段的主机(同一个网段下的存活主机),这样使用DOS来进行操作是不可取,探测的速度太慢了,不满足实际需要。一般批量的操作需要使用脚本进行一键部署执行,本文主要通过使用Python语言来实现批量平的操作(使用多线程实现Python批量处理)
Python版本:Python3
使用的第三方库:子流程日志、线程、队列
日志导出模块功能:
def set_logging_format ():=logging.INFO logging.basicConfig(水平, 格式=& # 39;% & # 39;(消息), 文件名=& # 39;ping_host.log& # 39; filemode=& # 39; w # 39; ) 控制台=logging.StreamHandler () console.setLevel (logging.INFO) 格式化程序=logging.Formatter(& # 39; %(消息)& # 39;) console.setFormatter (formatter) logging.getLogger (& # 39; & # 39;) .addHandler(控制台) 多线程实现批量操作: 线程=[] THREAD_NUM=20 user_iput=输入(& # 39;请输入modren: & # 39;) 如果user_iput==& # 39; addr # 39;: IP_L=IP_LIST 如果user_iput==& # 39;文件# 39;: IP_L=IP_QUEUE 因为我在范围(THREAD_NUM): t=线程。线程(目标=ping_IP args=(IP_L,)) threads.append (t) 因为我在范围(THREAD_NUM): 线程[我].start () 因为我在范围(THREAD_NUM): 线程(我). join ()
完整代码部分:
导入子流程 导入日志 进口日期时间 导入的时间 进口线程 从队列进口队列 导入系统 #实现日志导出 def set_logging_format ():=logging.INFO logging.basicConfig(水平, 格式=& # 39;% & # 39;(消息), 文件名=& # 39;ping_host.log& # 39; filemode=& # 39; w # 39; ) 控制台=logging.StreamHandler () console.setLevel (logging.INFO) 格式化程序=logging.Formatter(& # 39; %(消息)& # 39;) console.setFormatter (formatter) logging.getLogger (& # 39; & # 39;) .addHandler(控制台) #将需要萍连接的IP加入队列 def insert_ip_queue (ip_list_path): IP_QUEUE=队列() 张开(ip_list_path & # 39; " # 39;) f: 在f.readlines ip (): IP_QUEUE.put (ip) f.close () 返回IP_QUEUE def IP_list (): ip_list=队列() 因为我在范围(1255): ip=& # 39; 192.168.1强生# 39;+ str(我) ip_list.put (ip) 返回ip_list #打印(IP_list ()) #打印(IP_list ()) #定义萍函数 def ping_IP (IP_QUEUE): 虽然不是IP_QUEUE.empty (): ip=IP_QUEUE.get () .strip (& # 39; \ n # 39;) #打印(ip) res=subprocess.call(& # 39; 1000年ping - w - n 1% & # 39;%的ip, stdout=subprocess.PIPE shell=True) #打印(res) 如果res==0: h=subprocess.getoutput(& # 39;平# 39;+ & # 39;& # 39;+ ip) #打印(h) 如果& # 39;TTL=& # 39;h: res=(& # 39;网络可以正常连通平均延时=% & # 39;% h.split(& # 39;平均=& # 39;)[1]) 其他: res=& # 39;网络连接失败! & # 39; 今天=datetime.datetime.now () .strftime (“% Y - % m - H % d %: % m: % S") logging.info (“% s IP=% s % s"%(今天,ip, res)) def main (): set_logging_format () ip_list_path=& # 39;。/hostip.txt& # 39; IP_QUEUE=insert_ip_queue (ip_list_path) IP_LIST=IP_LIST () 线程=[] THREAD_NUM=20 user_iput=输入(& # 39;请输入modren: & # 39;) 如果user_iput==& # 39; addr # 39;: IP_L=IP_LIST 如果user_iput==& # 39;文件# 39;: IP_L=IP_QUEUE 因为我在范围(THREAD_NUM): t=线程。线程(目标=ping_IP args=(IP_L,)) threads.append (t) 因为我在范围(THREAD_NUM): 线程[我].start () 因为我在范围(THREAD_NUM): 线程(我). join () if __name__==& # 39; __main__ # 39;: main ()
看完这篇关于Python如何实现批量平操作的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。