设为首页 加入收藏

TOP

python paramiko模块中设置执行命令超时值
2014-11-24 07:14:58 来源: 作者: 【 】 浏览:0
Tags:python paramiko 模块 设置 执行 命令 时值

经常使用paramiko工具对几百台设备进行管理,但是由于服务器本身或是网络原因,有时返回值回不来,然后程序就看在那里一直等待,这个时候后需要设置一个超时值。paramiko模块中执行命令代码如下:


stdin, stdout , stderr = s.exec_command(command)


这个地方在模块中只有一个参数,paramiko默认在这个是并不能设置超时值。


其实paramiko本身是可以在这个地方设置超时值的,只是默认情况下是没有这个选项的,需要在paramiko的安装目录中修改他的源代码,让他支持,在代码中是有这个接口的。之所以他没有这个这个超时值,我想是因为开发方考虑有些有些命令可能执行的时间比较长,比如大文件的压缩等,需要很长的时间才能执行完,超时值如果设置的话,有可能会中断命令的执行,索性留下接口,并不设置超时值。但是我们用这个模块批量的去操作多台设备的话,有时超时值是很有必要的。


修改paramiko源代码方法如下:


找到C:\Python27\Lib\site-packages\paramiko目录,下面有个client.py文件,文件中找到这段代码:


修改为:


主要就修改了两个地方:


1、def exec_command(self, command, bufsize=-1,timeout = None)定义时加一个timeout = None;


2、在chan = self._transport.open_session()下面添加一个判断


if timeout is not None:


chan.settimeout(timeout)



那么在使用paramiko模块执行命令时的代码如下:


stdin, stdout , stderr = s.exec_command(command, timeout=10)


这样就有一个超时值,执行命令的超时时间为10s


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇String字符常量池和intern() 下一篇使用OpenGL的glBindTexture()函数..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)