我正在尝试自动化基于unix的系统。我有一个带有自动化脚本的python fabfile.py,它首先连接到远程服务器并运行脚本。在脚本之间我有一个命令,它要求系统重启。 此时,我正在失去与远程服务器的连接,无法重新建立连接。
--fabfile.py
//Import
env.hosts = ['uname@host_ip']
def test() :
//here we run the commands
//calls reboot
//remaining commands
我可以在调用'reboot'命令后重新建立连接,以便我可以执行剩余的命令吗?
答案 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
的时间以秒为单位)暂停您的脚本,直到您重新启动的计算机重新启动为止。