0

代码如下。我会在这里解释。

我使用结构来检查 2 个服务器的挂载点状态。命令是

df -h /mnt

这个命令的问题是它可能永远挂在那里,所以结构代码将永远挂起。我认为一些超时机制可以解决这个问题。但我没有在织物文档上找到它。有没有关于这个的设置?

import fabric
from fabric import ThreadingGroup as Group

directory = '/mnt'
group = Group('server1', 'server2', user='someuser', connect_kwargs={'password':'somepassword'})
try:
    result = group.run("df -h %s" % directory)
except fabric.exceptions.GroupException as e:
    err = e
    pass
4

1 回答 1

2

选项 #1:使用 bash 超时来停止命令timeout 10 df -h

选项#2:使用run函数的timeout参数。timeout 以秒为单位指定,CommandTimeout如果命令超时,则会引发异常。

Group.run

Connection.run在所有成员连接上执行。

Connection.run

包装一个支持 SSH 的实现invoke.runners.Runner.run;有关详细信息,请参阅其文档。

于 2019-09-15T05:08:19.990 回答