paramiko 批量上传 下载 和批量执行命令脚本分享

一:批量执行命令

复制代码
 1 [root@80sa script]# cat ssh.py 
 2 #!/usr/bin/env python
 3 #coding:utf-8
 4 
 5 import paramiko
 6 
 7 file = open("iplist.txt","r")
 8 all = file.readlines()
 9 cmd = raw_input("Please input cmd:")
10 for ip in all:
11     print ip,
12         port = 51022
13     username = "zhangly"
14     password = "123456"
15 
16     #创建SSH连接日志文(只保留前一次连接的详细日志 以前的日志会自动被覆盖)
17     paramiko.util.log_to_file('/script/ssh_connect_last.log')
18     ssh = paramiko.SSHClient()
19 
20     #读取know_host
21     ssh.load_system_host_keys()
22 
23     #允许连接不在know_hosts文件中的主机
24     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
25 
26     #建立SSH连接并执行命令
27     ssh.connect(ip,port,username,password)
28     stdin,stdout,stderr = ssh.exec_command(cmd)
29 
30     #打印标准输出
31     print stdout.read(),
32         print "-"*70
33     ssh.close()
复制代码

 

二:批量上传下载

复制代码
 1 [root@80sa script]# cat get.py 
 2 #!/usr/bin/env python
 3 #coding:utf-8
 4 
 5 import paramiko,sys
 6 import os
 7 import datetime
 8 
 9 def public():
10     """Public is a public function。"""
11     print "="*70
12 
13 
14 local_dir = '/tmp'
15 remote_dir = '/tmp/upload'
16 
17 file = open("iplist.txt","r")
18 all = file.readlines()
19 
20 for ip in all:
21     print ip,
22         port = 51022
23     username = "zhangly"
24     password = "123456"
25 
26     t = paramiko.Transport((ip,port))
27         t.connect(username=username,password=password)
28         sftp = paramiko.SFTPClient.from_transport(t)
29         files = sftp.listdir(remote_dir)
30         print files
31 
32         try:     
33             for f in files:
34                     #print "-"*70
35                     #print f,
36                         public()
37                     print "Beginning to download file from %s %s" % (ip,datetime.datetime.now())
38      
39                     #os.path.join(remote_dir,f)将分离的各个部分组成一个路径
40                     print "Downloading file:",os.path.join(remote_dir,f) 
41                     sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))  
42                     #sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
43                     print "Download file sucess %s" % datetime.datetime.now()
44                     #print "#"*70
45            except:
46                 public()
47         print "Download error,Give up other download!"
48                 sys.exit()
49     t.close()
复制代码
复制代码
 1 [root@80sa script]# cat upload.py 
 2 #!/usr/bin/env python
 3 #coding:utf-8
 4 
 5 import paramiko,sys
 6 import os
 7 import datetime
 8 
 9 def public():
10     """public is a public function。"""
11     print "="*70
12 
13 
14 local_dir = '/tmp/upload/'
15 remote_dir = '/tmp/upload/'
16 
17 file = open("iplist.txt","r")
18 all = file.readlines()
19 
20 for ip in all:
21     print ip,
22         port = 51022
23     username = "zhangly"
24     password = "123456"
25 
26     t = paramiko.Transport((ip,port))
27         t.connect(username=username,password=password)
28         sftp = paramiko.SFTPClient.from_transport(t)
29         files = os.listdir(local_dir)
30         print files
31 
32         try:     
33             for f in files:
34                     #print f,
35                         public()
36                     print "Beginning to upload file from %s %s" % (ip,datetime.datetime.now())
37                     print "Uploading file:",os.path.join(local_dir,f) 
38                     sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
39                     print "Upload file sucess %s" % datetime.datetime.now()
40            except:
41                 public()
42         print "Upload error,Give up other upload!"
43                 sys.exit()
44     t.close()
复制代码

生产环境最新调试批量下载脚本:

复制代码

复制代码
 1 #!/usr/bin/env python
 2 #coding:utf-8
 3 
 4 import paramiko,sys
 5 import os,sys
 6 import datetime
 7 
 8 def public():
 9     """Public is a public function"""
10     print "="*70
11 
12 #debug = sys.argv[1]
13 #local_dir = '/data/log/'
14 remote_dir = '/data/logs/Debuglog'
15 iplist_dir = '/data/log/iplist.txt'
16 
17 file = open(iplist_dir,"r")
18 all = file.readlines()
19 
20 for ip in all:
21         ip = ip.strip()
22     #print ip,
23         if os.path.exists(ip):
24             print """%s directory is already exist!"""%(ip)
25     else:
26            print ip,"%s directory will be created"%(ip)
27         os.makedirs(ip),
28                 
29     port = 510
30     username = "zhangly"
31     password = "www.80sa.org"
32 
33     t = paramiko.Transport((ip,port))
34         t.connect(username=username,password=password)
35         sftp = paramiko.SFTPClient.from_transport(t)
36         files = sftp.listdir(remote_dir)
37         print files
38 
39         try:     
40             for f in files:
41                     #print "-"*70
42                     #print f,
43                         public()
44                     print "Beginning to download remote log file from %s %s" % (ip,datetime.datetime.now())
45      
46                     print "Downloading remote log file:",os.path.join(remote_dir,f),"to local directory %s" % ip
47                     sftp.get(os.path.join(remote_dir,f),os.path.join(ip,f))  
48                     #sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
49                     print "Download remote log file sucess %s" % datetime.datetime.now()
50                     #print "#"*70
51            except:
52                 public()
53         print "Download error,Give up other download!"
54                 sys.exit()
55     t.close()
复制代码

 

 
复制代码
posted @   study-notes  阅读(509)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示