我正在尝试将Fabric,Django和Celery一起用于远程主机上的操作。
在我的情况下,远程主机将是动态的。
我猜Django和Celery的使用无关紧要,问题可以缩小到
我发现这段代码显示了如何使用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")
答案 0 :(得分:2)
无需担心密码,只需要使用密钥。在您要连接的主机之间共享密钥,您可以在远程主机上执行无密码的ssh操作。