1 #-*- coding: utf- -*-   2 #批量操作linux服务器(执行命令,上传,下载)   3 #!/usr/bin/python   4 import paramiko   5 import datetime   6 import os   7 import threading   8 def ssh2(ip,username,privatekeyfile,keypwd,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         #privatekeyfile = "D:\\batch\\id_dsa_1024"  14         mykey=paramiko.DSSKey.from_private_key_file(filename=privatekeyfile,password=keypwd)  15         ssh.connect(hostname=ip,port=,username=username , pkey=mykey,timeout=)  16         for m in cmd:  17             stdin,stdout,stderr = ssh.exec_command(m)  18             #stdin.write("Y")   #简单交互,输入 ‘Y’  19             out = stdout.readlines()  20             # outerr = stderr.readlines()  21             #屏幕输出  22             for o in out:  23                 print o,  24             # for i in outerr:  25             #     print i,  26                 print '%s\tOK\n'%(ip)  27         ssh.close()  28     except Exception,ex:  29         print Exception,":",ex  30         print '%s\tError\n'%(ip)  31 def download(ip,username,privatekeyfile,keypwd,local_dir, remote_dir):  32    try:  33         paramiko.util.log_to_file('paramiko_download.log')  34         t = paramiko.Transport((ip,))  35         mykey=paramiko.DSSKey.from_private_key_file(filename=privatekeyfile,password=keypwd)  36         t.connect(username = username, pkey=mykey)  37         sftp = paramiko.SFTPClient.from_transport(t)  38         files = sftp.listdir(remote_dir)  39         for f in files:  40             print ''  41             print '############################'  42             print 'Beginning to download file  from %s  %s ' % (ip, datetime.datetime.now())  43             print 'Downloading file:', os.path.join(remote_dir, f)  44             sftp.get(os.path.join(remote_dir, f), os.path.join(local_dir, f))#下载  45             print 'Download file success %s ' % datetime.datetime.now()  46             print ''  47             print '############################'  48         t.close()  49    except Exception,ex:  50         print Exception,":",ex  51         print "connect error!"  52         print ip, "fail!"  53   54   55 def upload(ip, username,privatekeyfile, keypwd, local_dir, remote_dir):  56     try:  57         paramiko.util.log_to_file('paramiko_upload.log')  58         t = paramiko.Transport((ip, ))  59         mykey=paramiko.DSSKey.from_private_key_file(filename=privatekeyfile,password=keypwd)  60         t.connect(username = username, pkey=mykey)  61         sftp = paramiko.SFTPClient.from_transport(t)  62         files = os.listdir(local_dir)  63         for f in files:  64             print ''  65             print '############################'  66             print 'Beginning to upload file  to %s  %s ' % (ip, datetime.datetime.now())  67             print 'Uploading file:', os.path.join(local_dir, f)  68             sftp.put(os.path.join(local_dir, f), os.path.join(remote_dir, f))#上传  69             print 'Upload file success %s ' % datetime.datetime.now()  70             print ''  71             print '############################'  72         t.close()  73     except Exception,ex:  74         print Exception,":",ex  75         print "connect error!"  76         print ip, "fail!"  77   78   79 if __name__=='__main__':  80   #  cmd = ['ls -lh /export/servers/mysql/log/mysql.log']#你要执行的命令列表  81     cmds=open("D:\\batch\\cmds.txt") #从文件读取命令  82     cmd=cmds.readlines()  83     cmds.close()  84     username = "root"  #用户名  85     privatekeyfile = "D:\\batch\\id_dsa_all"  86     keypwd=""  87     #passwd = "xxxx"    #单台服务器时启用----------------------  88     #ip='192.168.12.19'  #单台服务器时启用----------------------  89     local_dir = "D:\\batch\\tmp"  #本地服务器目录  90     remote_dir = "/tmp/temp/" #远程服务器目录  91     #threads = []   #多线程  92     print "Begin......"  93     hosts=open("D:\\batch\\ip.txt") #本地服务器列表  94     host=hosts.readlines()  95     hosts.close()  96     for ip in host:  97         ip=ip.strip()  98         # b=threading.Thread(target=upload,args=(ip,username,privatekeyfile,keypwd,local_dir,remote_dir))  99         # b.start()          # c=threading.Thread(target=download,args=(ip,username,privatekeyfile,keypwd,local_dir,remote_dir))          # c.start()          a=threading.Thread(target=ssh2,args=(ip,username,privatekeyfile,keypwd,cmd))          a.start()

#和Paramiko相关的网址
[plain]view plaincopyprint?
#http://docs.paramiko.org/en/1.13/api/keys.html paramiko帮助
[plain]view plaincopyprint?
#https://github.com/paramiko/paramiko paramiko源码
[plain]view plaincopyprint?
#http://nullege.com/codes/search/paramiko paramiko实例

python批量操作Linux服务器脚本,key登录(执行命令、上传、下载)(二)的更多相关文章

  1. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

     -*-          paramiko.util.log_to_file(         ssh = paramiko.SSHClient()          ssh.set_missing ...

  2. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

  3. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  4. linux服务器创建虚拟路径解决文件上传路径隔离问题

    需求环境 图片上传最简单的就是上传web项目下,这样图片与项目不可分离会产生很多不必要的影响.例如:重新部署项目需要把所有上传的图片再copy一份等. 图片与项目分离有好几种方式: 方式一.在linu ...

  5. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...

  6. Linux学习笔记:使用ftp命令上传和下载文件

    Linux中如何使用ftp命令,包括如何连接ftp服务器,上传or下载文件以及创建文件夹.虽然现在有很多ftp桌面应用(例如:FlashFXP),但是在服务器.SSH.远程会话中掌握命令行ftp的使用 ...

  7. linux使用命令上传下载文件 -- lrzsz

    之前都是用Xftp工具在本地和linux系统之间上传下载文件,最近觉得麻烦,因为平时用Xshell连接,要传输文件的时候还要额外使用别的工具,下面是lrzsz的安装和简单的使用过程: 详细的使用可以s ...

  8. Linux 普通用户拿到root权限及使用szrz命令上传下载文件

    1.如何拿到root权限 在shell里如果看到你的命令输入行最前面显示的是 $符号,说明目前账号只有系统的普通权限. 输入:sudo su 这时能看到shell的输入行最前面已经显示的是#号,说明已 ...

  9. ssh远程登录+查看系统版本+使用scp命令上传下载

    ssh远程登录命令简单实例   ssh命令用于远程登录上Linux主机.   常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh ...

随机推荐

  1. string类和stringBuilder类

    字符串是C#中的一种重要数据类型,在项目开发中,离不开字符串操作.C#提供了string类实现字符串操作.于Convert类相似,string类中方法有静态方法和非静态方法.注意,在C#中String ...

  2. jenkins2.0以后的版本提供自动部署和远程部署功能?

    metting result comment: 持续集成:dev上使用 持续部署:在dev/uat/prod上使用 1.指定时间自动构建--发布第二天挂了?每次构建需要重新编译?qa和uat使用同一套 ...

  3. JVM总结-垃圾回收

    Java 虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收.不过既然是自动机制,肯定没法做到像手动回收那般精准高效 [1] ,而且还会带来不少与垃圾回收实现相关的问题 ...

  4. int 操作

    int类型只能进行 +  -  *   /   %    //   ** # bit_length() 二进制长度

  5. 安全测试8_Web安全实战1(DVWA部署)

    1.渗透神器的打造(火狐浏览器的打造) Firebug HackBar(渗透插件) Tamper Data(抓包.截包.改包等功能) Proxy Switcher(代理设置) 2.PHP环境安装(ph ...

  6. TessorFlow学习 之 手写数字识别的搭建

    手写数字识别的搭建

  7. hwclock

    查看.设定硬件时钟.该时钟由主机板的晶振及相关电路提供,需要主机板氧化银电池提供动力. 通过命令 hwclock 访问硬件时钟获取时间信息.该命令可以显示当前时间.重新设置时间.读取系统时间.设定系统 ...

  8. android 开发 xml绘制shape与Selector与layer-list 一 基础篇

    首先我们先来了解状态效果 android:state_pressed=["true" | "false"]  按下状态 android:state_focuse ...

  9. 20165205 预习作业三 Linux安装及学习

    Linux安装及学习 安装Ubuntu 1)安装版本 在安装VirtualBox时选择了VirtualBox 5.2.6 platform package 安装Ubuntu时选择了Ubuntu 16. ...

  10. Javascript学习笔记5 - 滑动Slides

    开始之前:http://docs.jquery.com/ 是jQuery文档的网站, https://jsfiddle.net/是js的在线验证工具 在html中,有这几个标签: javascript ...