域部署下的脚本应用实践。
2014-11-17 23:54
309 查看
公司上个月需要部署 360企业版,替换原有的杀毒软件。
360官方随提供了域部署工具。该脚本控制器需要在域服务器一直开启。在两个部门测试的过程中发现,偶尔有一些电脑域登录后未能自动安装企业版。并且能安装企业版的电脑,也需要经过下载、验证、安装客户端,三个流程,过程有将近10分钟。
最后选择自己尝试编写域部署脚本。
原理图:
备注:所谓域部署,可执行文件(本文使用.bat 批处理文件)置于域服务器的netlogon文件夹中,再在每个用户在域服务器上的“环境文件”栏目写上脚本名称,这样域用户每次域登录就会自动执行该脚本。
在编写并测试域脚本的过程中,发现:直接运行远程共享文件夹中的360企业版的离线安装包安装是最快的(约2分钟)。
离线安装包却并不具备 识别终端是否有安装360企业版的功能(趋势的安装程序会先识别用户有无安装趋势)。 所以我在 域脚本'360e.bat'中,加入了判断终端是否安装了360企业版的 判断语句--无论是xp还是win7的64位、32位都能识别。
脚本初型:
if exist '%systemdrive%\Program Pile\360\360safe\360EntClient' exit
if exist '%systemdrive%\Program Pile (x86)\360\360safe\360EntClient' exit 192.168.2.xxx\360ent\setup.exe
第一句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(32位win7和xp用); 第二句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(64位win7用); 最后一句是执行360离线安装包安装; ( 备注:‘%systemdrive%’为系统盘,若直接使用'C:'替代‘%systemdrive%’,则不能正确识别系统安装在D盘、E盘的系统。)
因为这个‘360EntClinet’是企业版有别于360个人版的文件夹,所以用此为判断参考点。
勉强克服了识别识别客户端是否安装了360企业版的困难。
第二个困难是域脚本偶尔失效的问题,由于权限问题,我只能修改放在主域服务器脚本里,辅助域服务器的修改,小组长基于安全考虑,暂不让我修改(已做好备份的前提下)。 这个问题卡了我很久,最终使用gpresult /v命令证明终端域登录时有时是向辅助域服务器领取登陆脚本,小组长才让我把‘360.bat’部署到辅助域服务器,不再出现域脚本失效的情况。
最后一个问题,我是这上一周末想到的----对于已经把360个人版安装到其他盘(非系统盘)的终端(360企业版默认安装到C盘,或者安装到已经安装了360个人版的分区),系统盘永远不存在‘360EntClinet’文件夹。 这个文件夹将会出现在本来安装了360个人版的其他分区中。 如此一来,域脚本对于部分已经把360个人版安装到其他分区的终端失效,需要调整。
后来在网上查阅,我发现,可以用存在于注册表的软件信息判别是否有安装某个软件。
于是我查找注册表中360企业版的注册消息。经过对比,发觉xp、win7的32位和64位系统中,都存在 这个注册信息在此位置。
后来我把域部署脚本‘360.bat’修改成如下:
@reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\|find /i "360EntClientSvc">nul 2>nul
@if %errorlevel%==0 exit
\\192.168.2.xxx\360ent\setup.exe
‘@’用于隐藏脚本信息,以免被员工看见,被加以破解。
‘%errorlevel%’为软件返回信号,0为前面的语句执行正确。
至此,360企业版的域部署才妥善完成,部署过程顺利完成。
(欢迎交流)
360官方随提供了域部署工具。该脚本控制器需要在域服务器一直开启。在两个部门测试的过程中发现,偶尔有一些电脑域登录后未能自动安装企业版。并且能安装企业版的电脑,也需要经过下载、验证、安装客户端,三个流程,过程有将近10分钟。
最后选择自己尝试编写域部署脚本。
原理图:
备注:所谓域部署,可执行文件(本文使用.bat 批处理文件)置于域服务器的netlogon文件夹中,再在每个用户在域服务器上的“环境文件”栏目写上脚本名称,这样域用户每次域登录就会自动执行该脚本。
在编写并测试域脚本的过程中,发现:直接运行远程共享文件夹中的360企业版的离线安装包安装是最快的(约2分钟)。
离线安装包却并不具备 识别终端是否有安装360企业版的功能(趋势的安装程序会先识别用户有无安装趋势)。 所以我在 域脚本'360e.bat'中,加入了判断终端是否安装了360企业版的 判断语句--无论是xp还是win7的64位、32位都能识别。
脚本初型:
if exist '%systemdrive%\Program Pile\360\360safe\360EntClient' exit
if exist '%systemdrive%\Program Pile (x86)\360\360safe\360EntClient' exit 192.168.2.xxx\360ent\setup.exe
第一句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(32位win7和xp用); 第二句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(64位win7用); 最后一句是执行360离线安装包安装; ( 备注:‘%systemdrive%’为系统盘,若直接使用'C:'替代‘%systemdrive%’,则不能正确识别系统安装在D盘、E盘的系统。)
因为这个‘360EntClinet’是企业版有别于360个人版的文件夹,所以用此为判断参考点。
勉强克服了识别识别客户端是否安装了360企业版的困难。
第二个困难是域脚本偶尔失效的问题,由于权限问题,我只能修改放在主域服务器脚本里,辅助域服务器的修改,小组长基于安全考虑,暂不让我修改(已做好备份的前提下)。 这个问题卡了我很久,最终使用gpresult /v命令证明终端域登录时有时是向辅助域服务器领取登陆脚本,小组长才让我把‘360.bat’部署到辅助域服务器,不再出现域脚本失效的情况。
最后一个问题,我是这上一周末想到的----对于已经把360个人版安装到其他盘(非系统盘)的终端(360企业版默认安装到C盘,或者安装到已经安装了360个人版的分区),系统盘永远不存在‘360EntClinet’文件夹。 这个文件夹将会出现在本来安装了360个人版的其他分区中。 如此一来,域脚本对于部分已经把360个人版安装到其他分区的终端失效,需要调整。
后来在网上查阅,我发现,可以用存在于注册表的软件信息判别是否有安装某个软件。
于是我查找注册表中360企业版的注册消息。经过对比,发觉xp、win7的32位和64位系统中,都存在 这个注册信息在此位置。
后来我把域部署脚本‘360.bat’修改成如下:
@reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\|find /i "360EntClientSvc">nul 2>nul
@if %errorlevel%==0 exit
\\192.168.2.xxx\360ent\setup.exe
‘@’用于隐藏脚本信息,以免被员工看见,被加以破解。
‘%errorlevel%’为软件返回信号,0为前面的语句执行正确。
至此,360企业版的域部署才妥善完成,部署过程顺利完成。
(欢迎交流)
相关文章推荐
- SCA概念与应用实践(8.Tuscany中使用Domain Manager部署)
- Lotus Domino和Sametime应用部署最佳实践
- 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践
- Docker实践 - 使用maven插件自动部署web应用至Docker容器的tomcat
- Pinpoint - 应用性能管理(APM)平台实践之部署篇
- WebSphere Application Server 环境配置与应用部署最佳实践
- Docker实践-使用maven插件自动部署web应用至Docker容器的tomcat
- Cordova--将应用部署在服务器端的实践
- shell脚本--部署应用到tomcat并启动tomcat
- 互联网应用上线后,别忘记实现部署这些运维监控脚本
- 【Ruby on Rails Tutorial笔记】将第一个Rails应用部署到 Heroku实践遇到的问题及解决过程记录
- Websphere Application Server 环境配置与应用部署最佳实践
- 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践
- linux服务器批量部署应用系统shell脚本(Tomcat/jetty)
- J2EE应用部署(二):实践篇
- Linux服务器应用部署前的优化脚本
- Shell脚本实现应用自动安装部署
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- 部署应用的小脚本