博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)...
阅读量:5124 次
发布时间:2019-06-13

本文共 3168 字,大约阅读时间需要 10 分钟。

 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\tOK\n
'%(ip)
25         ssh.close()
26     except :
27         print 
'
%s\tError\n
'%(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()

转载于:https://www.cnblogs.com/zhuhongbao/p/3820452.html

你可能感兴趣的文章
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>