我正在尝试同时使用 Fabric、Django 和 Celery 在远程主机上进行操作。
在我的情况下,远程主机将是动态的。
我猜Django和Celery的使用无关紧要,问题可以缩小到
- 如何在单独使用 Fabric 时动态提供 SSH 密码。
我找到了这段代码,它展示了如何使用 Django 和 Celery 来做到这一点。
from fabric.api import hosts
from celery import task
@task()
def remote_celery_task():
username, host = get_host_details()
host_string = "%s@%s" % (username, host)
@hosts(host_string)
def fab_task():
run("ls")
execute(fab_task)
但它没有说明如何将 SSH 密码动态传递给 Fabric。我知道以这种方式提供密码并不安全,但我现在愿意牺牲安全性。
更新
当我将代码更改为
@hosts(host_string)
def my_fab_task():
env.password = testhost.SSH_password # is this the correct way ? its working for me
run("ls")