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.*
原文地址:http://wenzengliu.blog.51cto.com/9378751/1863966