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

时间:2017-10-27 17:28:07

标签: python fabric

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"
}

如果没有,你会认​​为最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

创建一个列表,其键是实际主机,值是每个键的密码;然后,在您的任务中,使用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])