首页 > 代码库 > paramiko安装和使用

paramiko安装和使用

paramiko介绍:

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。

安装过程省略

使用方法:

下面是两种使用paramiko连接到linux服务器的代码

方式一:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(,22,, )

上面的第二行代码的作用是允许连接不在know_hosts文件中的主机。

 

方式二:

t = paramiko.Transport((“主机”,”端口”))
t.connect(username = “用户名”, password = “口令”)

如果连接远程主机需要提供密钥,上面第二行代码可改成:

t.connect(username = “用户名”, password = “口令”, hostkey=”密钥”)
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、执行远程命令

#!/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、上传文件到远程

#!/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、从远程下载文件

#!/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、批量上传文件

[root@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的配置文件内容:

[IP]
#ipaddress = 192.168.0.102;192.168.0.103 
ipaddress = 74.63.229.*;69.50.220.*

paramiko安装和使用