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 实例。
如何在不使用 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 实例。