# 通过脚本批量更新ECS一键式重置密码插件（Windows）
#### 操作场景
弹性云服务器的离线重置密码功能依赖一键式重置密码插件。当因安全问题，弹性云服务器更新了一键式重置密码插件时，可参考本操作为单台弹性云服务器更新一键式重置密码插件。
一键式重置密码插件的更新情况，请参见[一键式重置密码插件漏洞公告](https://support.huaweicloud.com/bulletin-ecs/ecs_bulletin_002.html)。
本文介绍通过脚本为多台Windows ECS批量更新一键式重置密码插件的操作指导。
#### 前提条件
- 准备好执行机，执行机需满足的条件请参见[约束与限制]。
- 需要提前准备待批量安装插件的云服务器的IP地址、Administrator用户的密码信息。
- 执行机应该与待更新机器在同一VPC下。
- 在执行完步骤[7]之后可以解绑eip。
 
 #### 约束与限制
需要选取一台操作系统为CentOS 8.2 (公共镜像)且已绑定弹性公网IP的云服务器作为执行机，且与待批量安装插件的弹性云服务器之间网络需要互通。
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
若已配置yum内部源，可不需要绑定弹性公网IP。
#### 操作步骤
1. 以root用户登录执行机。
2. 执行以下命令，安装批量脚本运行所需要的依赖。
   1. 执行以下命令，安装**epel** 。
      **yum install epel-release -y**
      
   
   2. 执行以下命令，安装**ansible** 。
      **yum install ansible -y** **--skip-broken**
      执行**ansible** **--version**命令检查ansible是否安装成功。
      ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
      如果因为yum源配置问题导致无法安装ansible，可以使用如下命令安装ansible：
      **yum install python3 python3-pip**
      **pip3 install --upgrade pip**
      **pip3 install ansible**
      
   
   3. 执行以下命令，安装**pip** 。
      **python3.6 -m pip install bcrypt==3.2.0 paramiko==3.3.1 cryptography==3.3.0 pywinrm PyYAML Jinja2 httplib2 six**
      若出现如[图1]所示报错信息，请执行以下操作。
      1. 执行以下命令，安装依赖： **dnf install python3-devel**
         
      
      2. 然后再次执行以下命令： **python3.6 -m pip install bcrypt==3.2.0 paramiko==3.3.1 cryptography==3.3.0 pywinrm PyYAML Jinja2 httplib2 six**
         
      
      
      图1报错信息   
      ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0000001293634910.png "点击放大") 
    
3. 执行以下命令，参考[表1](https://support.huaweicloud.com/usermanual-ecs/ecs_13_0117.html#ecs_13_0117__table127720513496)，下载对应区域的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）](https://support.huaweicloud.com/usermanual-ecs/ecs_13_0117.html#ecs_13_0117__section15564103103311)的步骤[4](https://support.huaweicloud.com/usermanual-ecs/ecs_13_0117.html#ecs_13_0117__li41930441931)。
   安装一键式重置密码插件对插件的具体放置目录无特殊要求，请您自定义。
   
4. 执行以下命令，将对应OS架构的Windows版本的安装包下载到root目录下：
   执行命令pwd确认当前路径是否为/root，若不是请切换至/root路径下。
   - 32位操作系统，x86架构： **wget https://www.7-zip.org/a/7z2107.exe '--no-check-certificate'**
     
   
   - 64位操作系统，x86架构： **wget https://www.7-zip.org/a/7z2107-x64.exe '--no-check-certificate'**
     
   
   - 64位操作系统，鲲鹏架构： **wget https://www.7-zip.org/a/7z2107-x64.exe '--no-check-certificate'**
     
     
5. 执行以下命令，将批量操作脚本下载到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>
    
6. 执行以下命令，将更新插件脚本下载到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>
    
7. 检查如下文件是否在root目录下。
   - batch_update_log4j_version_for_windows.py
   
   - update_log4j_version_for_resetpwdagent_windows.bat
   
   - CloudResetPwdAgent.zip
   
   - 7z\*.exe
    
8. 执行以下命令，新建并编辑host_list.txt，按i进入编辑模式。 **vi host_list.txt**
   将需要自动安装驱动的云服务器的相关信息填写到host_list.txt文件中。
   填写Administrator用户的IP和密码，请严格按照每行"**IP,用户密码**"的格式填写，中间以英文逗号隔开。
   示例：
   ```
   192.168.1.10,'**********'
   192.168.1.11,'**********'
   ```
   
9. 执行以下命令，添加ansible配置文件。 **mkdir -p /etc/ansible**
   **touch /etc/ansible/ansible.cfg**
   
10. 运行批量执行操作脚本"batch_update_log4j_version_for_windows.py"。
    **python3.6 batch_update_log4j_version_for_windows.py**
    图2运行脚本   
    ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0000001198253466.png "点击放大") 
11. 执行如下命令，在"/root/logs/exec_origin.log"的最后一行查看运行结果日志。 **vim /root/logs/exec_origin.log**
    若如下图所示，则表示运行成功。
    图3运行成功   
    ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0000001243866101.png "点击放大") 
 
#### 后续处理
- 更新一键式重置密码插件后，如果无法通过弹性云服务器开机自动启动该插件，可以将其添加至开机启动项。具体方法请参见[一键式密码重置插件启动失败时如何操作？](https://support.huaweicloud.com/ims_faq/ims_faq_0031.html)。
- 一键式重置密码插件更新成功后，请勿删除重置密码进程CloudResetPwdAgent，否则，会导致一键式重装密码功能不可用。
- 华为云对一键式重置密码插件进行了升级，对于新创建的弹性云服务器，默认采用PIPE模式，不会占用端口。对于已创建云服务器，仍采用AUTO模式，随机占用31000\~32999中的一个端口。占用端口的原则是：在该范围内，系统会按照自小到大的顺序，占用当前空闲的端口。
 
