莫问 发表于 2018-8-15 08:10:05

python 实用脚本

  1.用python实现一个查看某网段所有主机的状态(3秒实现)
  #vim ping.py
  import subprocess
  import threading
  def ping(host):
  result = subprocess.call(
  'ping -c2 %s &> /dev/null' % host,
  shell=True
  )
  if result == 0:
  print "%s:up" % host
  else:
  print "%s:down" % host
  if __name__ == '__main__':
  ips = ['172.40.55.%s' % i for i in range(1, 255)]
  for ip in ips:
  t = threading.Thread(target=ping, args=(ip,))
  t.start()
  # python mtping.py
  172.40.55.1:up
  172.40.55.66:up
  172.40.55.6:down
  172.40.55.114:up
  172.40.55.2:down
  172.40.55.3:down
  172.40.55.115:up
  。。。。。
  2.利用ssh实现多线程并发访问(可以同时创建删除,该密码等)
  # yum install -y python-paramiko
  #vim allhost.py
  import getpass
  import os
  import paramiko
  import sys
  import threading
  def remote_comm(host, passwd, comm, user='root'):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(host, username=user, password=passwd)
  stdin, stdout, stderr = ssh.exec_command(comm)
  out = stdout.read()
  err = stderr.read()
  if out:
  print '%s:\n%s' % (host, out),
  if err:
  print '%s:\n%s' % (host, err),
  ssh.close()
  if __name__ == '__main__':
  if len(sys.argv) != 3:
  print "Usage: %s ipfile 'command'" % sys.argv
  sys.exit(1)
  if not os.path.isfile(sys.argv):
  print "No such file:", sys.argv
  sys.exit(2)
  ipfile = sys.argv
  command = sys.argv
  pwd = getpass.getpass()
  with open(ipfile) as fobj:
  for line in fobj:
  ip = line.strip()
  t = threading.Thread(target=remote_comm, args=(ip, pwd, command))
  t.start()
  #vim ipaddr.txt
  192.168.4.1
  192.168.4.2
  192.168.4.3
  192.168.4.4
# python remote_comm.py ipaddr.txt tedu.cn 'useradd bob'
页: [1]
查看完整版本: python 实用脚本