Fabric代码请求主机

0 投票
1 回答
769 浏览
提问于 2025-04-17 12:01
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

函数 get_hostname 只有在你在 fab 的参数中指定它时才会被调用。如果你在 if __name__ == '__main__' 下调用它,结果可能和你想的不一样,因为 fabfile 和普通的 Python 脚本不一样。

你需要这样调用你的 fabfile:fab get_hostname run_cmd。为了让错误信息更一致,你可以使用 require 函数,像这样:

from fabric.api import require


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

撰写回答