我可以为每个服务器更改pwd,但为每个from env对象更改不同的pwd吗?

2024-05-08 03:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

from fabric.api import env, task, run

env.passwords = {
    'avirgovic@host1.at:22': '5rFVChuEYp0cpuUjeg20',
    'avirgovic@host.com:22': 'cxvxxd410!@--/w'
}
env.hosts = ['host1.at', 'host2.com']
env.user = "avirgovic"


@task
def change_passwords():
    run("change password command")

我想更改多个服务器实例的密码。但是我不想将所有对象都更改为同一个对象(我的代码段可以做到这一点)。是否有方法定义某个对象并将其用作集合提示。例如:

new_pwd_host_map = {
    "host1": "sfhsd554rwere",
    "host2": "dsfhgsdkg^^&516"
}
如果不是,你认为做这件事的最好方法是什么?p>

Tags: 对象方法runfromenvcomhosttask
1条回答
网友
1楼 · 发布于 2024-05-08 03:29:50

创建一个列表,其密钥为实际主机,值为每个主机的密码;然后,在您的任务中,使用env.host作为密钥来获取该特定主机的新密码。比如:

env.hosts = ['host1.com', 'host2.com']

new_passwords = {
    'host1.com': 'somepass',
    'host2.com': 'someotherpass'
}

@task
def changepass():
    sudo('change password command ' + new_passwords[env.host])

相关问题 更多 >