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"
}
如果没有,你会认为最好的方法是什么?
答案 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])