python批量上传 服务器_python批量操作Linux服务器脚本,key登录(执行命令、上传、下载)(二)...

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服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

【POJ】1739 Tony's Tour

http://poj.org/problem?id=1739 题意:n×m的棋盘,'#'是障碍,'.'是空白,求左下角走到右下角且走过所有空白格子的方案数.(n,m<=8) #include & ...

jqurey 遍历 div内的所有input单选复选按钮并判断是否选中及Attr(checked)无效的解决

关于页面前面标签

  • @{ foreach (var item in vote) { if (!string.IsNullOrEmpty(item.Img)) {
  • Java学习-037-JavaWeb&lowbar;006 -- JSP 动作标识 - include

    这个动作是指在当前的页面中包含一个或多个 JSP 页面或者 HTML 文件,语法:

    xml规范及xml解析

    http://www.cnblogs.com/wang-meng/p/5374498.html 1,XML基础介绍 xml的概念: XML 指可扩展标记语言(EXtensible Markup Lan ...

    Android 实时文件夹

    实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件.要创建一个实时文件夹,必须要有两个方面的支持. 1,要定义一个用来创建实时文件夹的Activity. 2,所指定数 ...

    201521123113《Java程序设计》第10周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集异常.多线程 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? fi ...

    使用ftp软件上传下载php文件时换行丢失bug(全部变为一行)

    文章来源:http://www.piaoyi.org/computer/ftp-php-r-n-bug.html 正 文: 在使用ftp软件上传下载php源文件时,我们偶尔会发现在本地windows下 ...

    English trip EM2-LP-4B At School Teacher&colon;Russell

    课上内容(Lesson) Where is Loki a student?  Loki is in Meten, BaobaoStreet, Chengdu. What is he studying? ...

    AndroidStudio制作底部导航栏以及用Fragment实现切换功能

    前言 大家好,给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢 学习目标 AndroidStudio制作底部导航栏以及用Fragment实现切换 ...

    centos 修改文件权限

    给脚本添加可执行权限: chmod -R 777 filename.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值