2016-05-23 6 views
3

Локальная среда Ведущий: CentOS 7, Python 3.5.1, Fabric3 (1.11.1.post1)
Remote Environment Ведущий: CentOS 7Почему мой удаленный хост возвращает код ошибки -1, когда я использую функцию reboot()?

fibfile:

def fuc(): 
    reboot() 

Баш:

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() 
+0

Вы получаете оболочку на удаленном хосте после выполнения: следующую команду: «хостом SSH -l корень», а затем введите пароль? – Yaron

+0

Нет. Я тестирую фибальный файл только с одним api: reboot() также получаю fatalerror выше. Ткань может войти в систему с паролем, который я установил в команде fab. –

+0

[GitHub issue] (https://github.com/fabric/fabric/issues/1488) –

ответ

4

Я считаю подобный вопрос при использовании анзибль: link

Я думаю, что верхний ответ правильный:

reboot is shutting down the server so quickly that the server is tearing down the SSH connection.

shutdown -r now возвращает ту же фатальную ошибку:

sudo() received nonzero return code -1 while executing 'shutdown -r now'!

shutdown -r +1 успех возвращения:

out: Shutdown scheduled for Mon 2016-05-23 14:16:48 UTC, use 'shutdown -c' to cancel.

Но отключение может только задержать по крайней мере одну минуту. Таким образом, мы можем подождать только минуту или проигнорировать ошибку.

2

У меня возникла проблема с некоторыми новыми виртуальными машинами. Я думаю, что они закрылись слишком быстро, как сказал Джон Старк.

Чтобы исправить это, я игнорирую ошибку и предупреждение, как это.

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

Вы можете поместить сеанс оболочки в фоновом режиме, который спит в течение 1 секунды затем выполняет команду reboot. Должно быть сделано без использования команды nohup из-за nohup issue. Я использую tmux ...

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