请求主机的 Fabric 代码
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除非您在 fab 参数中指定,否则不会调用函数
get_hostname
,在if __name__ == '__main__'
下调用它不会执行您认为的操作,因为fabfile 与通常的 python 脚本不同。您要做的就是像这样调用您的 fabfile:
fab get_hostname run_cmd
并且要获得更一致的错误,您可以使用 require 函数如下:The function
get_hostname
will not be called unless you specify it in the fab arguments, calling it underif __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: