仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 407|回复: 7
打印 上一主题 下一主题

[CentOS(社区)] 来讲讲:python paramiko模块中设置履行敕令超时价

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小知识:CentOS并不是第一个提供商业支持的RHEL克隆版,其他企业例如Oracle也提供了基于RedHat的自己的企业Linux发布版。
常常应用paramiko对象对几百台装备停止治理,然则因为办事器自己或是收集缘由,有时前往值回不来,然后法式就看在那边一向期待,这个时刻后须要设置一个超时价。paramiko模块中履行敕令代码以下:
stdin,stdout,stderr=s.exec_command(command)
这个处所在模块中只要一个参数,paramiko默许在这个是其实不能设置超时价。
其实paramiko自己是可以在这个处所设置超时价的,只是默许情形下是没有这个选项的,须要在paramiko的装置目次中修正他的源代码,让他支撑,在代码中是有这个接口的。之所以他没有这个这个超时价,我想是由于开辟方斟酌有些有些敕令能够履行的时光比拟长,好比年夜文件的紧缩等,须要很长的时光能力履行完,超时价假如设置的话,有能够会中止敕令的履行,索性留下接口,其实不设置超时价。然则我们用这个模块批量的去操作多台装备的话,有时超时价是很有需要的。
修正paramiko源代码办法以下:
找到C:Python27Libsite-packagesparamiko目次,上面有个client.py文件,文件中找到这段代码:


  1. defexec_command(self,command,bufsize=-1):"""ExecuteacommandontheSSHserver.AnewL{Channel}isopenedandtherequestedcommandisexecuted.ThecommandsinputandoutputstreamsarereturnedaspythonC{file}-likeobjectsrepresentingstdin,stdout,andstderr.@paramcommand:thecommandtoexecute@typecommand:str@parambufsize:interpretedthesamewayasbythebuilt-inC{file()}functioninpython@typebufsize:int@return:thestdin,stdout,andstderroftheexecutingcommand@rtype:tuple(L{ChannelFile},L{ChannelFile},L{ChannelFile})@raiseSSHException:iftheserverfailstoexecutethecommand"""chan=self._transport.open_session()chan.exec_command(command)stdin=chan.makefile(wb,bufsize)stdout=chan.makefile(rb,bufsize)stderr=chan.makefile_stderr(rb,bufsize)returnstdin,stdout,stderr
复制代码

修正为:


  1. defexec_command(self,command,bufsize=-1,timeout=None):"""ExecuteacommandontheSSHserver.AnewL{Channel}isopenedandtherequestedcommandisexecuted.ThecommandsinputandoutputstreamsarereturnedaspythonC{file}-likeobjectsrepresentingstdin,stdout,andstderr.@paramcommand:thecommandtoexecute@typecommand:str@parambufsize:interpretedthesamewayasbythebuilt-inC{file()}functioninpython@typebufsize:int@return:thestdin,stdout,andstderroftheexecutingcommand@rtype:tuple(L{ChannelFile},L{ChannelFile},L{ChannelFile})@raiseSSHException:iftheserverfailstoexecutethecommand"""chan=self._transport.open_session()iftimeoutisnotNone:chan.settimeout(timeout)chan.exec_command(command)stdin=chan.makefile(wb,bufsize)stdout=chan.makefile(rb,bufsize)stderr=chan.makefile_stderr(rb,bufsize)returnstdin,stdout,stderr
复制代码

重要就修正了两个处所:
1、defexec_command(self,command,bufsize=-1,timeout=None)界说时加一个timeout=None;
2、在chan=self._transport.open_session()上面添加一个断定
iftimeoutisnotNone:
chan.settimeout(timeout)


那末在应用paramiko模块履行敕令时的代码以下:
stdin,stdout,stderr=s.exec_command(command,timeout=10)
如许就有一个超时价,履行敕令的超不时间为10s
小知识:得益于极为出色的稳定性,全球范围内无数著名网站均选用它,CentOS是异次元的服务器也是!
小妖女 该用户已被删除
沙发
发表于 2015-1-16 23:45:34 | 只看该作者

来讲讲:python paramiko模块中设置履行敕令超时价

Linux的成功就在于用最少的资源最短的时间实现了所有功能,这也是符合人类进化的,相信以后节能问题会日益突出。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-25 06:46:22 | 只看该作者
把这个问题放在其他Linux社区请求帮助也是一种选择。如果Linux得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。
若天明 该用户已被删除
地板
发表于 2015-2-8 07:27:43 | 只看该作者
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
admin 该用户已被删除
5#
发表于 2015-2-25 03:48:15 | 只看该作者
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
谁可相欹 该用户已被删除
6#
发表于 2015-3-7 20:14:59 | 只看该作者
生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的。
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-15 19:46:39 | 只看该作者
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
不帅 该用户已被删除
8#
 楼主| 发表于 2015-3-22 05:07:39 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 09:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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