当我使用fabric reboot()时,为什么我的远程主机返回错误代码-1?

时间:2016-05-23 07:54:47

标签: python linux bash fabric

本地主机环境:CentOS 7,Python 3.5.1,Fabric3(1.11.1.post1)
远程主机环境:CentOS 7

fibfile:

def fuc():
    reboot()

bash:

fab -f fibfile.py -H host -u root -p password

远程主机确实重启但返回了fatalError:

sudo() received nonzero return code -1 while executing 'reboot'!

现在我使用warn_only来防止失败:

fabfile:

def test():
    with settings(warn_only=True):
        reboot()

3 个答案:

答案 0 :(得分:4)

使用ansible时发现了类似的问题:link

我认为最佳答案是正确的:

  

reboot正在关闭服务器,以至于服务器正在拆除SSH连接。

shutdown -r now返回相同的致命错误:

  

sudo()在执行'shutdown -r now'时收到非零返回码-1!

shutdown -r +1返回成功:

  

out:关闭计划于2016-05-23 14:16:48 UTC,请使用'shutdown -c'取消。

但关机只能延迟至少一分钟。 所以我们只能选择等待一分钟或忽略错误。

答案 1 :(得分:4)

我开始遇到一些新虚拟机的问题。正如Jon Stark所说,我认为他们确实关闭得太快了。

要修复它,我会忽略错误和警告,就像这样。

with settings(hide('warnings'),
              warn_only=True,
             ):
    sudo("shutdown -r now")

答案 2 :(得分:1)

您可以将shell会话放入后台休眠1秒钟然后执行reboot命令。由于nohup issue,必须在不使用nohup命令的情况下完成。我使用tmux ...

reboot(command='tmux new-session -d "sleep 1; reboot;"')