服务器重启后无法重新建立与远程服务器的连接#pythonScript

时间:2015-12-16 06:46:48

标签: python ssh fabric

我正在尝试自动化基于unix的系统。我有一个带有自动化脚本的python fabfile.py,它首先连接到远程服务器并运行脚本。在脚本之间我有一个命令,它要求系统重启。 此时,我正在失去与远程服务器的连接,无法重新建立连接。

--fabfile.py

//Import 

env.hosts = ['uname@host_ip']

def test() :

//here we run the commands

//calls reboot

//remaining commands

我可以在调用'reboot'命令后重新建立连接,以便我可以执行剩余的命令吗?

2 个答案:

答案 0 :(得分:0)

在这里工作的还有别的东西,而不是面料。

Fabric在程序上运行一切,这意味着;如果你有一个要运行的东西的列表,将按顺序运行它们,当没有更多的工作要做时,那么它之前就不会断开连接。如果您有连接丢弃,请检查您的连接,服务器或服务器ssh配置。举个例子:

SELECT @rowCount = COUNT(1)
FROM [table] 
WHERE
    ((GETDATE() BETWEEN StartTime AND EndTime) AND Active = @Active) 
    OR (NOT (GETDATE() BETWEEN StartTime AND EndTime) AND Active = @Active);

简单测试:

from fabric.api import run, task
from fabric.state import env

@task
def dev():
    """
    I REALLY like the environments done in a task and not global, its easier to override
    """
    env.hosts = ['10.99.0.2']
    env.user = 'vagrant'
    env.password = 'vagrant'
    env.key_filename = '~/.vagrant.d/insecure_private_key'

@task
def whoami():
    run('whoami')

@task
def echo(msg):
    run('echo "{}"'.format(msg))

或者没有你仍然可以像这样运行它,因为你从未硬编码它:

$ fab dev whoami echo:'hello world'
[10.99.0.2] Executing task 'whoami'
[10.99.0.2] run: whoami
[10.99.0.2] out: vagrant
[10.99.0.2] out: 

[10.99.0.2] Executing task 'echo'
[10.99.0.2] run: echo hello world
[10.99.0.2] out: hello world
[10.99.0.2] out: 


Done.
Disconnecting from 10.99.0.2... done.

请注意$ fab whoami echo:'hello world' -H 'vagrant@10.99.0.2','ubuntu@*****' --password vagrant -i ~/.ssh/*****.pem 任务未在此处运行。输出:

dev

答案 1 :(得分:0)

您可以使用time.sleep(t)(其中t的时间以秒为单位)暂停您的脚本,直到您重新启动的计算机重新启动为止。