前一阵因为windows SMB协议漏洞,手动给windows打补丁,累觉不爱。


研究后找出简单方法,使用ansible进行批量化操作,避免人工的繁杂。


windows补丁下载网站

https://www.catalog.update.microsoft.com/Search.aspx


下载一个KB4025337,得到链接:

$ wget 
http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/07/windows6.1-kb4025337-x64_c013b7fcf3486a0f71c4f58fc361bfdb715c4e94.msu



使用ansible命令将这个补丁复制到C盘

$ ansible win_group -m win_copy -a "src=/ms补丁/windows6.1-kb4025337-x64.msu dest=c:\ "

win_group是定义在hosts中的主机组


cmd中执行的命令如下:

wusa c:\windows6.1-kb4025337-x64_.msu /quiet /norestart /log

wusa命令解析如下:

windows主机群批量打补丁_第1张图片

变更到ansible,我们需要调用win_shell命令

$ ansible win_group -m win_shell -a "wusa c:\windows6.1-kb4025337-x64.msu /quiet /norestart /log"

  • 至于为何不使用win_command模块的原因如下

  • The given command will be executed on all selected nodes. It will not be processed through the shell, so variables like $env:HOME and operations like "<", ">", "|", and ";" will not work (use the win_shell module if you need these features).


  • 最后附上windows安装成功的日志记录,和已经安装完成补丁列表的截图

windows主机群批量打补丁_第2张图片

windows补丁安装列表:

wKiom1lnWsrAy_KgAAAeD39WXJI478.png-wh_50

后续有个设想,把这个操作全程作为自动化,看看自己需要多长时间才能完成。