- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Paramiko学习之优雅代码的实现
在线学习好工作 /
Paramiko 学习之优雅代码的实现
1.消除硬编码
第一个就是它有硬编码的情况,什么是硬编码,什么是硬编码就是说在代码里
面,你用的一些变量它是写死的,比如说我们刚才调用connect APId 的时候它的,
ip 地址端口用户名和密码都是我们写死的,什么06,用户名,密码,
如果它的对端的这个端口它变了,或者说是密码用户名一般不会变。它的密码改
变我们是不是要去修改代码,如果在实际工作中这样是非常不方便的,而且是有
一定风险的,修改代码就意味着它可能是bug 产生的边缘。所以说我们最好把这
个可配置的代码,和变量分离开来。就是说消除硬编码的一个办法就是让它可配
置。
2.异常捕捉
其次就是异常的捕捉,我们可以看到刚开始我们想列了,那个设置hot key 机
制时候,它调用connect 方法,就抛出来一个sshaexception 这个异常,但是我们
并没有对它进行处理。这样的话就会在 实际的工作中它就非常的不好,甚至是
有一些风险,因为不捕获这个异常的话,可能你的代码,就没办法在执行下去了,
然后你写了这个软件可能就当掉了实际生产环境下,是一个非常严重的问题。
3.封装
另外就是进行一下封装,我们看到Paramiko 它是对这个,它其实就是对ssh
协议的一个封装,然而我们在实际的使用Paramiko 的过程中,可以针对自己项
目的需要。对它进行二次封装,就是说我封装成我们大家,一起,团队的人它更
方便的使用它,甚至它可以不知道Paramiko 这个的存在,而调用你封装的接口。
来进行一个更方便的操作。
那我们就看实际的过程中我们是怎样来解决这几个问题的,首先就是消除硬编
码的问题,我们引入另外一个ConfigParser 这个库,ConfigParser 就是可以把这个
配置很方便的读进来。
config = ConfigParser.ConfigParser()
然后它有一个read 的API 就是读取文件。
那现在我们就一起来建立一个文件,叫做config.ini
[ssh]
host=05
port=22
usr=allen
pwd=123
timeout=1.0
然后我们read 这个config.ini
config.read(‘config.ini’)
那么这些硬编码的地方,就可以换成对应的配置
client.connect(hostname= config.get(‘ssh’,’host’), port= config.getint(‘ssh’,’ port’),
username= config.get(‘ssh’,’ username’), password= config.get(‘ssh’,’ password’),
timeout= config.getfloat(‘ssh’,’ timeout’))
我们可以来运行看一下
这样我们把这些变量给替换成用这个配置来解析出来它实际的值。我们就是用
这个ConfigParser 来完成的,现在它运行的是非常的好,然后我们就把这些实际
的参数给用配置给它隐藏起来,如果将来我们配置一旦更改的时候我们只需要更
改这个config.ini 就可以,然后我们来看一下,如何进行异常的捕获。
首先这个connect 它会抛出这个异常的时候我们其实就应该用Python 的try 来
捕获它,然后用这个except Exception,e:可以把异常给打印出来。
try:
self.client.connect(hostname=self.host, port=self.port, username=self.usr,
password=self.pwd, timeout=self.timeout)
return True
except Exception,e:
print e
这个时候呢一旦开启的时候我们记得要把它给close 掉。避免造成资源的浪费
self.client.connect(hostname=self.host, port=self.port, username=self.usr,
password=self.pwd, timeout=self.timeout)
return True
except Exception,e:
print caught , e
t
您可能关注的文档
- OBDDの応用.pdf
- Office 365 安装部署手册.pdf
- Office在线编辑功能实现 DSOframer接口说明[精品].doc
- ofstream和ifstream详细用法.pdf
- Omi 循环遍历.pdf
- OmniTrax 精确定位埋地电缆探测系统.pdf
- OneNote 2010 迁移指南.pdf
- OOB-50自润滑导套石墨铜套滑板滑块 标准尺寸表.pdf
- OOB-50SW自润滑导套石墨铜套滑板滑块 标准尺寸表.pdf
- OpenBSD下DNS策略解析系统的实现.pdf
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
最近下载
- 《智能驾驶系统设计与实践》 全套课件第1--8章 智能驾驶系统概述---自动泊车系统设计与实践.pdf
- 供热工程负荷计算.ppt VIP
- 阜阳幼儿师范高等专科学校辅导员考试试题(2023).docx VIP
- 心理健康与职业生涯全套课件.ppt
- 2025年湖南省高考数学模拟试卷(附答案解析).pdf VIP
- 2025年春南方新课堂金牌学案四年级数学下册人教版答案.pdf VIP
- 2023年苏州职业大学单招职业适应性测试题库及答案解析word版.pdf VIP
- 人工智能导论-全套PPT课件.pptx
- (高清版)DB37∕T 4401-2021 养老机构分级护理服务规范.pdf VIP
- XX小学一年级春季新学期开学家长会PPT.pptx
文档评论(0)