通过脚本批量更新ECS一键式重置密码插件(Windows)
操作场景
弹性云服务器的离线重置密码功能依赖一键式重置密码插件。当因安全问题,弹性云服务器更新了一键式重置密码插件时,可参考本操作为单台弹性云服务器更新一键式重置密码插件。
本文介绍通过脚本为多台Windows ECS批量更新一键式重置密码插件的操作指导。
前提条件
约束与限制

若已配置yum内部源,可不需要绑定弹性公网IP。
操作步骤
- 以root用户登录执行机。
- 执行以下命令,安装批量脚本运行所需要的依赖。
- 执行以下命令,安装epel。
yum install epel-release -y
- 执行以下命令,安装ansible。
yum install ansible -y --skip-broken
执行ansible --version命令检查ansible是否安装成功。
如果因为yum源配置问题导致无法安装ansible,可以使用如下命令安装ansible:
yum install python3 python3-pip
pip3 install --upgrade pip
pip3 install ansible
- 执行以下命令,安装pip。
python3.6 -m pip install bcrypt==3.2.0 paramiko==3.3.1 cryptography==3.3.0 pywinrm PyYAML Jinja2 httplib2 six
若出现如图1所示报错信息,请执行以下操作。
- 执行以下命令,安装epel。
- 执行以下命令,参考表1,下载对应区域的Windows操作系统的一键式重置密码插件CloudResetPwdAgent.zip并完成完整性校验。
以“华北-北京四”区域的Windows操作系统为例:
wget https://cn-north-4-cloud-reset-pwd.obs.cn-north-4.myhuaweicloud.com/windows/reset_pwd_agent/CloudResetPwdAgent.zip
wget https://cn-north-4-cloud-reset-pwd.obs.cn-north-4.myhuaweicloud.com/windows/reset_pwd_agent/CloudResetPwdAgent.zip.sha256
完整性校验步骤,请参见获取并校验一键式重置密码插件完整性(Linux)的步骤4。
安装一键式重置密码插件对插件的具体放置目录无特殊要求,请您自定义。
- 执行以下命令,将对应OS架构的Windows版本的安装包下载到root目录下:
- 执行以下命令,将批量操作脚本下载到root目录下。
curl URL > ~/batch_update_log4j_version_for_windows.py
其中,URL为批量操作的执行脚本。
请根据云服务器所在区域选择脚本的下载地址:
- 华北-北京一:https://cn-north-1-cloud-reset-pwd.obs.cn-north-1.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 华北-北京四:https://cn-north-4-cloud-reset-pwd.obs.cn-north-4.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 华东-上海二:https://cn-east-2-cloud-reset-pwd.obs.cn-east-2.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 华南-广州:https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 中国-香港:https://ap-southeast-1-cloud-reset-pwd.obs.ap-southeast-1.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 亚太-曼谷:https://ap-southeast-2-cloud-reset-pwd.obs.ap-southeast-2.myhuaweicloud.com/windows/batch_update_resetpwd/batch_update_log4j_version_for_windows.py
- 执行以下命令,将更新插件脚本下载到root目录下。
curl URL > ~/update_log4j_version_for_resetpwdagent_windows.bat
其中,URL为更新插件脚本的下载地址。
请根据云服务器所在区域选择脚本的下载地址:
- 华北-北京一:https://cn-north-1-cloud-reset-pwd.obs.cn-north-1.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 华北-北京四:https://cn-north-4-cloud-reset-pwd.obs.cn-north-4.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 华东-上海二:https://cn-east-2-cloud-reset-pwd.obs.cn-east-2.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 华南-广州:https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 中国-香港:https://ap-southeast-1-cloud-reset-pwd.obs.ap-southeast-1.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 亚太-曼谷:https://ap-southeast-2-cloud-reset-pwd.obs.ap-southeast-2.myhuaweicloud.com/windows/batch_update_resetpwd/update_log4j_version_for_resetpwdagent_windows.bat
- 检查如下文件是否在root目录下。
- batch_update_log4j_version_for_windows.py
- update_log4j_version_for_resetpwdagent_windows.bat
- CloudResetPwdAgent.zip
- 7z*.exe
- 执行以下命令,新建并编辑host_list.txt,按i进入编辑模式。
将需要自动安装驱动的云服务器的相关信息填写到host_list.txt文件中。
填写Administrator用户的IP和密码,请严格按照每行“IP,用户密码”的格式填写,中间以英文逗号隔开。
示例:
192.168.1.10,'**********' 192.168.1.11,'**********'
- 执行以下命令,添加ansible配置文件。
touch /etc/ansible/ansible.cfg
- 运行批量执行操作脚本“batch_update_log4j_version_for_windows.py”。
- 执行如下命令,在“/root/logs/exec_origin.log”的最后一行查看运行结果日志。
vim /root/logs/exec_origin.log
若如下图所示,则表示运行成功。
图3 运行成功
后续处理
- 更新一键式重置密码插件后,如果无法通过弹性云服务器开机自动启动该插件,可以将其添加至开机启动项。具体方法请参见一键式密码重置插件启动失败时如何操作?。
- 一键式重置密码插件更新成功后,请勿删除重置密码进程CloudResetPwdAgent,否则,会导致一键式重装密码功能不可用。
- 云平台对一键式重置密码插件进行了升级,对于新创建的弹性云服务器,默认采用PIPE模式,不会占用端口。对于已创建云服务器,仍采用AUTO模式,随机占用31000~32999中的一个端口。占用端口的原则是:在该范围内,系统会按照自小到大的顺序,占用当前空闲的端口。