zoukankan      html  css  js  c++  java
  • python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

     1 #-*- coding: utf-8 -*-
     2 #批量操作linux服务器(执行命令,上传,下载)
     3 #!/usr/bin/python
     4 import paramiko
     5 import datetime
     6 import os
     7 import threading
     8 def ssh2(ip,username,passwd,cmd):
     9     try:
    10         paramiko.util.log_to_file('paramiko________.log')
    11         ssh = paramiko.SSHClient()
    12         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    13         ssh.connect(ip,22,username,passwd,timeout=5)
    14         for m in cmd:
    15             stdin,stdout,stderr = ssh.exec_command(m)
    16             #stdin.write("Y")   #简单交互,输入 ‘Y’
    17             out = stdout.readlines()
    18             # outerr = stderr.readlines()
    19             #屏幕输出
    20             for o in out:
    21                 print o,
    22             # for i in outerr:
    23             #     print i,
    24                 print '%s OK '%(ip)
    25         ssh.close()
    26     except :
    27         print '%s Error '%(ip)
    28 def download(ip, username, passwd, local_dir, remote_dir):
    29    try:
    30         paramiko.util.log_to_file('paramiko_download.log')
    31         t = paramiko.Transport((ip,22))
    32         t.connect(username=username,password=passwd)
    33         sftp = paramiko.SFTPClient.from_transport(t)
    34         files = sftp.listdir(remote_dir)
    35 
    36 
    37         for f in files:
    38             print ''
    39             print '############################'
    40             print 'Beginning to download file  from %s  %s ' % (ip, datetime.datetime.now())
    41             print 'Downloading file:', os.path.join(remote_dir, f)
    42             sftp.get(os.path.join(remote_dir, f), os.path.join(local_dir, f))#下载
    43             print 'Download file success %s ' % datetime.datetime.now()
    44             print ''
    45             print '############################'
    46         t.close()
    47    except:
    48         print "connect error!"
    49 
    50 
    51 def upload(ip, username, passwd, local_dir, remote_dir):
    52     try:
    53         paramiko.util.log_to_file('paramiko_upload.log')
    54         t = paramiko.Transport((ip, 22))
    55         t.connect(username=username, password=passwd)
    56         sftp = paramiko.SFTPClient.from_transport(t)
    57         #files = sftp.listdir(remote_dir)
    58         files = os.listdir(local_dir)
    59         for f in files:
    60             print ''
    61             print '############################'
    62             print 'Beginning to upload file  to %s  %s ' % (ip, datetime.datetime.now())
    63             print 'Uploading file:', os.path.join(local_dir, f)
    64             sftp.put(os.path.join(local_dir, f), os.path.join(remote_dir, f))#上传
    65             print 'Upload file success %s ' % datetime.datetime.now()
    66             print ''
    67             print '############################'
    68         t.close()
    69     except:
    70         print "connect error!"
    71         print ip, "fail!"
    72 
    73 
    74 if __name__=='__main__':
    75 #  cmd = ['ls -lh /export/servers/mysql/log/mysql.log']#你要执行的命令列表
    76     cmds=open("D:\batch\cmds.txt") #从文件读取命令
    77     cmd=cmds.readlines()
    78     cmds.close()
    79     username = "root"  #用户名
    80     #passwd = "xxxx"    #单台服务器时启用----------------------
    81     #ip='192.168.12.19'  #单台服务器时启用----------------------
    82     local_dir = "D:\batch\tmp"  #本地服务器目录
    83     remote_dir = "/tmp/" #远程服务器目录
    84     #threads = []   #多线程
    85     print "Begin......"
    86     hosts=open("D:\batch\list.txt") #本地服务器列表
    87     host=hosts.readlines()
    88     hosts.close()
    89     for list in host:
    90         line = list.split()
    91         ip = line[0].strip()
    92         pwd = line[1].strip()
    93         # print ip,
    94         # print pwd,
    95         # b=threading.Thread(target=upload,args=(ip,username,pwd,local_dir,remote_dir))
    96         # b.start()
    97         a=threading.Thread(target=ssh2,args=(ip,username,pwd,cmd))
    98         a.start()
  • 相关阅读:
    如何自定义长连接策略
    知物由学 | 这些企业大佬如何看待2018年的安全形势?
    网易云易盾朱星星:最容易被驳回的10大APP过检项
    网易云易盾朱浩齐:视听行业步入强监管和智能时代
    知物由学 | 人工智能、机器学习和深度学习如何在网络安全领域中应用?
    知物由学 | 广告欺诈:如何应对数字广告里分羹者?
    知物由学 | 如何应对日益强大的零日攻击
    不再任人欺负!手游安全的进阶之路
    邪恶的三位一体:机器学习、黑暗网络和网络犯罪
    PAT 1053. Path of Equal Weight
  • 原文地址:https://www.cnblogs.com/zhuhongbao/p/3820452.html
Copyright © 2011-2022 走看看