请求主机的 Fabric 代码

发布于 2025-01-01 00:19:54 字数 385 浏览 1 评论 0原文

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

这段代码不起作用,它说:

未找到主机。请指定用于连接的(单个)主机字符串:

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

This code is not working it is saying:

No hosts found. Please specify (single) host string for connection:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟火散人牵绊 2025-01-08 00:19:54

除非您在 fab 参数中指定,否则不会调用函数 get_hostname,在 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])

The function get_hostname will not be called unless you specify it in the fab arguments, calling it under if __name__ == '__main__' will not do what you think it does because a fabfile is not like a usual python script.

What you have to do is call your fabfile like this: fab get_hostname run_cmd and to have a more consistent error you can use require function like this:

from fabric.api import require


def run_cmd():
    require('hosts', provided_by=[get_hostname])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文