python paramiko模块中设置执行命令超时值

在批量管理设备时,使用paramiko遇到因服务器或网络问题导致命令无响应的问题。虽然paramiko的`exec_command`默认不支持超时设置,但可以通过修改paramiko源代码在`client.py`中添加超时选项。方法包括在`def exec_command`中增加`timeout=None`参数,并在打开会话后设置通道超时。通过`s.exec_command(command, timeout=10)`,可设定10秒的命令执行超时限制。" 112752653,10541006,前后端联调测试与跨域解决方案,"['前端开发', '后端开发', 'Vue', 'Springboot', 'Shiro']
摘要由CSDN通过智能技术生成

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

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

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

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

修改paramiko源代码方法如下:

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

def exec_command(self, command, bufsize=-1):
    """
    Execute a command on the SSH server.  A new L{Channel} is opened and
    the requested command is executed.  The command&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值