paramiko介绍:
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
安装过程省略
使用方法:
下面是两种使用paramiko连接到linux服务器的代码
方式一:
1
2
3
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(,22,, )
上面的第二行代码的作用是允许连接不在know_hosts文件中的主机。
方式二:
1
2
t = paramiko.Transport((“主机”,”端口”))
t.connect(username = “用户名”, password = “口令”)
如果连接远程主机需要提供密钥,上面第二行代码可改成:
1
t.connect(username = “用户名”, password = “口令”, hostkey=”密钥”)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import paramiko
#设置ssh连接的远程主机地址和端口
t=paramiko.Transport((ip,port))
#设置登录名和密码
t.connect(username=username,password=password)
#连接成功后打开一个channel
chan=t.open_session()
#设置会话超时时间
chan.settimeout(session_timeout)
#打开远程的terminal
chan.get_pty()
#激活terminal
chan.invoke_shell()
然后就可以通过chan.send('command')和chan.recv(recv_buffer)来远程执行命令以及本地获取反馈。
例如:
chan.send('pwd')
print chan.recv(65535)
1、执行远程命令
1
2
3
4
5
6
7
8
9
#!/usr/bin/python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")
print stdout.readlines()
ssh.close()
2、上传文件到远程
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python
import paramiko
t = paramiko.Transport(("某IP地址",22))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/tmp/test.txt'
localpath='/tmp/test.txt'
sftp.put(localpath,remotepath)
t.close()
3、从远程下载文件
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python
import paramiko
t = paramiko.Transport(("某IP地址",22))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/tmp/test.txt'
localpath='/tmp/test.txt'
sftp.get(remotepath, localpath)
t.close()
4、批量上传文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[iyunv@centos6 python]# vi paramiko-sftp-mulit-upload.py
#!/usr/bin/env python
import paramiko
import os
import datetime
from ConfigParser import ConfigParser
ConfigFile='config.ini'
config=ConfigParser()
config.read(ConfigFile)
hostname1=''.join(config.get('IP','ipaddress'))
address=hostname1.split(';')
print address
username='root'
password='itpschina123'
port=22
local_dir='/tmp/'
remote_dir='/tmp/test/'
if __name__=="__main__":
# try:
for ip in address:
t=paramiko.Transport((ip,port))
t.connect(username=username,password=password)
sftp=paramiko.SFTPClient.from_transport(t)
# files=sftp.listdir(dir_path)
files=os.listdir(local_dir)
print files
for f in files:
print '####################################################'
print 'Begin to upload file to %s ' % ip
print 'Uploading ',os.path.join(local_dir,f)
print datetime.datetime.now()
sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
print datetime.datetime.now()
print '####################################################'
t.close()
下面是config.ini的配置文件内容:
1
2
3
[IP]
#ipaddress = 192.168.0.102;192.168.0.103
ipaddress = 74.63.229.*;69.50.220.*
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com