23323112 发表于 2016-10-21 08:38:58

paramiko安装和使用

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
# 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 fileto %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

#ipaddress = 192.168.0.102;192.168.0.103
ipaddress = 74.63.229.*;69.50.220.*



页: [1]
查看完整版本: paramiko安装和使用