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()
此代码无法正常说:
找不到主机。请指定(单个)主机字符串以进行连接:
答案 0 :(得分:1)
除非你在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])