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

[经验分享] python中paramiko模块的使用

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-8-14 11:38:04 | 显示全部楼层 |阅读模式
  paramiko是python一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接
  1、可以远程操作服务器文件
  例如:
  df:查看磁盘使用情况
  mkdir:创建目录
  mv/cp/mkdir/rmdir:对文件或目录进行操作
  /sbin/service/ xxxservice start/stop/restart:启动、停止、重启某服务
  netstat -ntl |grep 8080:查看8080端口的使用情况
  或者 nc -zv localhost :查看所有端口的使用情况
  find / -name XXX:查找某文件 等等
  2、可以实现远程文件的上传,下载(类似于ssh的scp功能)
  首先安装paramiko
  pip install paramiko
  但是安装paramiko需要先安装一个依赖包叫PyCrypto的模块。PyCrypto是python编写的加密工具包,支持的各种加密算法(主要有:MD2 128 bits;MD4 128 bits;MD5 128 bits;RIPEMD 160 bits;SHA1 160 bits;SHA256 256 bits;AES 16, 24, or 32 bytes/16 bytes;ARC2 Variable/8 bytes;Blowfish Variable/8 bytes;CAST Variable/8 bytes;DES 8 bytes/8 bytes ;DES3 (Triple DES) 16 bytes/8 bytes;IDEA 16 bytes/8 bytes ;RC5 Variable/8 bytes等等。)
  具体实例代码如下:
  1、实现简单的命令操作
DSC0000.gif

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3  4 import paramiko 5  6 #创建ssh对象 7 ssh = paramiko.SSHClient() 8  9 #允许连接不在know_host中的主机10 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())11 12 #连接服务器13 ssh.connect(hostname='192.168.1.1',port=22,username='user',password='pwd')14 15 #执行命令16 stdin, stdout, stderr = ssh.exec_command('cd home;ls -l')17 18 #执行结果19 #result = stderr.read() #如果有错误则打印20 result = stdout.read()21 print result22 #关闭连接23 ssh.close()

  2、实现远程上传

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Eric.yue 4  5 import paramiko,os 6  7 class Paramiko_put(object): 8     def __init__(self,local_dir,remote_dir): 9         self.host = '192.168.1.1'10         self.username = 'user'11         self.passwd = 'pwd'12         self.port = 2213         self.local_dir = local_dir14         self.remote_dir = remote_dir15         self.tt = None16 17     def pk_connect(self):18         self.tt = paramiko.Transport((self.host, self.port))19         self.tt.connect(username = self.username, password = self.passwd)20         try:21             return paramiko.SFTPClient.from_transport(self.tt)22         except Exception as e:23             print 'Connect error:',e24             exit()25 26     def put_file(self):27         sftp = self.pk_connect()28         files = os.listdir(self.local_dir)29         cnt = 030         for file in files:31             sftp.put(os.path.join(self.local_dir, file), os.path.join(self.remote_dir, file))32             cnt += 133 34         if cnt == len(files):35             print str(cnt) +' files put successful'36         else:37             print 'put failure'38 39     def __del__(self):40         self.tt.close()41 42 pk = Paramiko_put('/home/mywork/test/day8','/home/mywork/test/day8')43 pk.put_file()

  3、实现远程下载

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Eric.yue 4  5  6 import paramiko,os 7  8 class Paramiko_get(object): 9     def __init__(self,remote_dir,local_dir):10         self.host = '192.168.1.1'11         self.username = 'user'12         self.passwd = 'pwd'13         self.port = 2214         self.local_dir = local_dir15         self.remote_dir = remote_dir16         self.tt = None17 18     def pk_connect(self):19         self.tt = paramiko.Transport((self.host, self.port))20         self.tt.connect(username = self.username, password = self.passwd)21         try:22             return paramiko.SFTPClient.from_transport(self.tt)23         except Exception as e:24             print 'Connect error:',e25             exit()26 27     def get_file(self):28         sftp = self.pk_connect()29         files = sftp.listdir(self.remote_dir)30         cnt = 031         for file in files:32             sftp.get(os.path.join(self.remote_dir, file),os.path.join(self.local_dir, file))33             cnt += 134 35         if cnt == len(files):36             print str(cnt) +' files get successful'37         else:38             print 'get failure'39 40     def __del__(self):41         self.tt.close()42 43 pk = Paramiko_get('/home/inf/mywork/day8','/home/mywork/day8')44 pk.get_file()

  温馨提示:实现上传下载功能时要保证目录存在,有可操作权限哦!

运维网声明 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-551597-1-1.html 上篇帖子: Python中threading模块的join函数 下篇帖子: python中的reduce、lambda函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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