设为首页 收藏本站
查看: 913|回复: 0

[经验分享] paramiko安装和使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-21 08:38:58 | 显示全部楼层 |阅读模式
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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-289134-1-1.html 上篇帖子: Python配合SCP实现文件批量下发 下篇帖子: python3中实现客户端与服务端交互发送文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表