Fabric 使用 SSH 密钥执行?

Fabric execute with SSH key?

如何在不使用 fab 实用程序的情况下执行命令?

测试用例

from fabric.api import execute, run


def hostname():
    return run('hostname')


if __name__ == '__main__':
    execute(hostname, my_env={'key_filename': 'public_key_path'},
            hosts='{user}@{ip}'.format(user='ubuntu', ip='ip address here'))

错误

TypeError: hostname() takes no arguments (1 given)

您的解决方案是正确的,以编程方式使用 execute 到 运行 任务。错误

TypeError: hostname() takes no arguments (1 given)

表示您的函数不接受参数,即 my_env.

只需修改为:

def hostname(my_env):
    return run('hostname')

它会起作用。

我一直在寻找答案一天。感谢提问者。 He/she给出提示。完整的解决方案是这样的:

execute(hostname, hosts="{ip}", my_env={'key_filename': '~/.ssh/{pub_key}.pem', 'user' : 'ec2-user'})

def hostname(my_env):
    return run('hostname')

经过测试,它适用于我的 AWS 实例。