我正在尝试一起使用 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")
最佳答案
不用担心密码,只需执行 ssh keygens 即可。在您要连接的主机之间共享 key ,您可以在远程主机上执行无密码 ssh 操作。
关于python - Fabric - 如何动态提供 ssh 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16921357/