非常运维
一体化终端安全管理系统自动安装脚本详解
作者:高玉涵
时间:2019.03.13 13:52
博客:blog.csdn.net/cg_i
演示:https://v.youku.com/v_show/id_XNDA5NzE1MDMzNg==.html?spm=a2h3j.8428770.3416059.1
我觉得,只要不投降,就是成功。
-马可《新喜剧之王》
懒人改变世界。
-佚名
头发越来越少了。
-高玉涵
前言
为什么要写此文
我所在的单位,地处豫南的一个小县城,有着32家分支机构,遍布在全县各乡镇,有些位于山区,最远的机构相距有60公里左右。近年来随着各项业务讯速发展,上线了很多信息系统软硬件设施,作为这一切背后的IT服务支撑运维人员,传统的人工运维方式,像遇到此次新系统上线,仅将应用软件,统一部署到各家机构的电脑、终端(将近有400多台设备),一个月的时间,除去安装系统,这种重复性操作,就是奔波辗转在各家机构的路上,在山区里转圈圈(情不自禁唱起来:爱的魔力转圈圈,想你想到心花努放黑夜白天...)。已经无法满足业务的发展需求,需要走流程化、标准化、自动化去构建运维体系,其中流程化与标准化是自动化的前提条件,自动化的最终目标是提高工作效率、释放人力资源、节约运营成本、提高业务服务质量等。
我是所在单位科技部门主管,属省内系统的基层科技人员,人力紧张时,身份在系统设计人员、网络管理员、运维支持、最终用户之间不停的变换。其实也只有在基层才能修炼出“十八般武艺”。机缘巧合的原因,2014年系统内,全省第一版系统定制标准,我有幸全程参与。回想当时,强制要求各厂家,开发并免费提供桌面管理系统,就是为了应对此次情况,为同行减少重复性操作,减轻工作负担,这是我的初衷。此文的意义在于,将我如何使用桌面管理系统、编写自动化系统配置、软件安装脚本,经验、思路方法做个梳理与总结,同时与大家分享。最终目的是为每个渴望实现自动化运维人员提供指导。
系统环境与需求
我所处的内网环境,大量使用WindowsXP、Windows7系统,因业务的特殊性,每次启动系统,C盘恢复到初次安装的状态(类式的特性还有很多,如禁用U盘、用户权限管理等)。
人工方式安装,重复性操作,过程繁琐枯燥,设备多工作量大,一天下来,几乎让人瘫倒,我制定了上图的表格,只为减少纰漏。急需一款“自动化”的控制程序,来完成上述指定工作。
安装包分析
如果你手头上是使用业界标准的安装包,那么你就走运了,它将提供一组丰富强大的命令参数,通过它你将可以控制安装过程的各个方面。现实是很多软件并没有遵循标准,软件安装还需要人工来完成。你也不用绝望,还是有很多技术(VBScript、AutoIT等),可以让计算机模拟“人”手动完成的一些固定操作,尤其是经常重复的一些操作。绝望的是,我手里的这个软件,安装界面采用的是非标准控件(图1-1),传统方法是获取不到控件信息,就无法用程序来操作它,模拟“人”执行安装操作。但我并没有放弃,通过展开安装包,发现了一些有用的东西(图1-2)。
(图1-1)
(图1-2)
通过研究RegClient.ini文件(图1-3),从注释中得知(厂家还算有点良心)将RegeditMode=1,ShowRegResult=0可以采用静默安装方式安装,这也为自动化安装提供了重要条件。
(图1-3)
细心的你也一定发现,采用这种安装方式,没有办法输入特定的注册信息。实践中,不输入注册信息,并不影响软件的正常使用,且软件有专属的后台管理系统,可登录到后台逐台或批量完善注册信息。期间,我也简单的研究了一下,通过逆向工程找到存放注册信息的数据文件,原想写一个根据IP地址所属机构,将特定信息写到注册文件中的程序,考虑到这是个一次性任务,部署任务有时限要求,当前,首要任务还是以部署为主,就作罢了。
编写自动化脚本
一、执行流程路(图1-4)
(图1-4)
二、脚本源码
(图1-5)
(图1-6)
inst.bat
cd\
cd c:\auto
call au.bat
Au.bat
@echo off
REM ******************************************************************************************
REM * Author: 高玉涵
REM * File: au.bat
REM * Date: 20190313
REM * Declare: 配合一体化安全系统自动化安装脚本
REM * 1.关闭无用用户,统一修改密码;
REM * 2.XP打永恒之蓝病毒补丁;
REM * 3.开启远程桌面;
REM * 4.设置虚拟内存;
REM * 5.添加NTP时间同步服务器;
REM ******************************************************************************************
ewfmgr c: -commitandDisable
ver|findstr /r/i "[版本 5.1.*]" > NUL && GOTO WindowsXP
ver|findstr /r/i "[版本 6.1.*]" > NUL && GOTO Windows7
:WindowsXP
net user "演练环境" /active:no
net localgroup administrators "其他用户" /delete
net user "综合前端系统" /passwordchg:no
REM "xxxxxxxxxxx",替换成你想设置的密码
net user "综合前端系统" "xxxxxxxxxxx"
net user "Administrator" "xxxxxxxxxxx"
call wannacry.bat
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "administrator" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "xxxxxxxxx" /f
GOTO COMMON
:Windows7
net user "Admin" "xxxxxxxxxxx"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "Admin" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "xxxxxxxxxx" /f
GOTO COMMON
:COMMON
REM 添加时间NTP
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 0 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 1 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 2 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 3 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 4 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 5 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 6 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers /v 7 /d 11.230.35.1 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters /v ntpserver /d 11.230.35.1,0x9 /t REG_SZ /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /d 0x12c /t REG_DWORD /f
REM 虚拟内存
wmic PageFileSet create name="D:\pagefile.sys", InitialSize="4096", MaximumSize="4096"
REM 开启远程桌面
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
REM 下次启动的脚本
reg add HKLM\software\microsoft\Windows\CurrentVersion\Run /v XPauto /t REG_SZ /d "c:\auto\yinst.bat" /f
shutdown -r -t 3 -c "第一次初始化完毕,请重启系统!"
yinst.bat
REM ******************************************************************************************
REM * Author: 高玉涵
REM * File: au.bat
REM * Date: 20190313
REM * Declare: 一体化安全系统自动化安装脚本
REM * 实测发现XP安装360后系统普遍卡、蓝屏,删除360安装包,不安装
REM ******************************************************************************************
@echo off
cd\
cd c:\auto
call cscript c:\auto\udisk.vbs
call "柜面终端安装包.exe"
@ECHO "开始安装一体化终端安全管理系统..."
cd 柜面终端安装包
ver|findstr /r/i "[版本 5.1.*]" > NUL && GOTO WindowsXP
ver|findstr /r/i "[版本 6.1.*]" > NUL && GOTO Windows7
:WindowsXP
REM 删除360安装包
del AddFile\360.exe
GOTO COMMCON
:Windows7
GOTO COMMCON
:COMMCON
call ClientRegist.exe
cd\
cd c:\auto
del.bat
wannacry.bat
@echo off
@REM XP安装永恒之蓝补丁
wmic qfe GET hotfixid|findstr /c:"KB4012598"
if %errorlevel% neq 0 (
call WindowsXP-KB4012598-x86-Custom-ENU.exe /quiet /norestart
)
udisk.vbs
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Author: 高玉涵
' Date: 20190313
' File: udisk.vbs
' Declare: 启用升腾终端USB设备卸载配置工具
' BUG: 简单模拟键盘输入,可能存在失败情况
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
Dim wsh,WindowTitle1, WindowTitle2, strAppName
WindowTitle2="USB设备卸载配置"
WindowTitle1="密码验证"
strAppName="""C:\Program Files\udskUnmountsrv\UsbConfig.exe"""
set wsh=WScript.CreateObject("WScript.Shell")
wsh.run strAppName
'密码验证窗口
do while (wsh.AppActivate(WindowTitle1) <> true)
WScript.Sleep 3000
loop
wsh.AppActivate(WindowTitle1)
WScript.Sleep 1000
wsh.SendKeys "{TAB}"
WScript.Sleep 1000
wsh.SendKeys "{TAB}"
WScript.Sleep 1000
‘xxxxx,为发送的密码
wsh.SendKeys "xxxxxxxx"
WScript.Sleep 1000
wsh.SendKeys "{ENTER}"
'配置主界面
do while (wsh.AppActivate(WindowTitle2) <> true)
'等待3秒
WScript.Sleep(3000)
loop
wsh.AppActivate(WindowTitle2)
WScript.Sleep 1000
wsh.SendKeys "%{K}"
WScript.Sleep 1000
wsh.SendKeys "%{F4}"
set wsh=NoThing
WScript.quit
Del.bat
@echo off
REM 清除开机自登录
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /f
reg delete HKLM\software\microsoft\Windows\CurrentVersion\Run /v XPauto /f
REM 清理文件
del c:\inst.bat /q
del c:\auto\au.bat /q
del c:\auto\wannacry.bat /q
del c:\auto\WindowsXP-KB4012598-x86-Custom-ENU.exe /q
del c:\auto\yinst.bat /q
del c:\auto\柜面终端安装包.exe /q
rd c:\auto\柜面终端安装包 /s/q
REM 开启还原系统
ewfmgr c: -enable
shutdown -r -t 3 -c "安装完毕,请重启系统!"
最后,将所有脚本文件和安装包,封装成可自解压的压缩包(绝对路径),设置解压后运行inst.bat批处理文件。至此,一个自动化安装包制作完成。您只需要在目标计算机上执行这个封装包,即可实现自动化安装的目地。具体如何操作,可根据您最习惯的方式。比如我是通过“桌面管理”程序推送下去(参见视频),这里就不在赘叙了。