Код фабрики, запрашивающий хосты - PullRequest
0 голосов
/ 31 января 2012
from fabric.api import env, sudo
def get_hostname():
    env.hosts = ['user@host_ip']
    env.passwords = {'user@host_ip': 'password'}
    hostname = run_cmd('hostname')
    print hostname


def run_cmd(cmd):
    return sudo(cmd)


if __name__ == '__main__':
    get_hostname()

Этот код не работает, он говорит:

Хосты не найдены.Пожалуйста, укажите (одну) строку хоста для подключения:

1 Ответ

1 голос
/ 31 января 2012

Функция get_hostname не будет вызываться, если вы не укажете ее в аргументах fab, вызов ее в if __name__ == '__main__' не будет делать то, что вы думаете, потому что fabfile не похож на обычный скрипт на python.

То, что вам нужно сделать, это вызвать ваш файл fabfile следующим образом: fab get_hostname run_cmd, и для получения более последовательной ошибки вы можете использовать требуют функцию, подобную этой:

from fabric.api import require


def run_cmd():
    require('hosts', provided_by=[get_hostname])
...