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()
这段代码没有正常工作,它显示了:
没有找到主机。请指定一个(单个)主机字符串以进行连接:
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])