Python如何实现批量平操作

  介绍

小编这次要给大家分享的是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如何实现批量平操作的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

Python如何实现批量平操作