Board logo

标题: [讨论]在不能上互联网的内网中安装M$补丁的脚本 [打印本页]

作者: yzz163     时间: 2005-3-29 00:00    标题: [讨论]在不能上互联网的内网中安装M$补丁的脚本

希望高手们看看。
===========================
  我局机关局域网在建成后长期受系统漏洞和病毒攻击的困扰,致使网络经常瘫痪。为解决该问题,我们利用共享方式在通讯室的机器(访问方法:\\10.157.xx.xx)上实现了在局域网中自动安装系统补丁和最新病毒库的方案,下面是脚本文件的说明。

@echo off
cls
echo.
echo  ********************************
echo  *                              *  
echo  *  功能:在不能上互联网的内网中安装M$补丁的脚本      *
echo  *  限制:该版本只能用于 WINDOWS XP SP2 简体中文版,其他版 *
echo  *     本正在制作中。                  *
echo  *  制作人:余振中                     *
echo  *  e-mail:yuzhenzhong@163.net               *
echo  *  补丁时间:2005年3月18日                 *
echo  *                              *
echo  ********************************
echo.
rem 设置服务器IP及共享路径
set HotPatch=\\c02\hotfix\xp\sp2
rem 创建临时文件夹
set mhnet=%temp%\mhnet
rem @rmdir /S /Q %mhnet% 2>NUL 1>NUL
mkdir %mhnet%

rem 主程序开始
:Start
rem 检查配套文件完整性
rem call :AllFiles
rem 检查是否属于WINDOWS XP SP2系统
call :CheckSystem
rem 检查是否拥有管理员权限
call :CheckAdmin
echo.
pause
rem 开始升级系统
call :HotfixUp
rem 删除临时目录,清空变量
rmdir /S /Q %mhnet% 2>NUL 1>NUL
set mhnet=
set HotPatch=
goto :eof
exit
:ends
rem 主程序结束



rem *************************
rem *************************
rem 判断系统版本是否为WINDOWS XP SP2,否则退出
rem *************************
rem *************************
:CheckSystem
rem 先判断系统版本是否为WINDOWS NT系列,若为WIN98系列则退出
IF %OS%==Windows_NT (
rem 再次判断系统版本是否为SP2
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CSDVersion" >%mhnet%\banben.log
find "Service Pack 2" %mhnet%\banben.log >NUL
IF ERRORLEVEL 1 (
    cls
    echo.
    echo  注意:本程序只能用在 Windows XP SP2 版本的系统上。
    echo  请先升级到 Windows XP SP2,再运行本程序!!!
    pause
    exit
) else (
    echo 用户使用 Windows XP SP2 的系统,
)
) else (
rem 系统为win98系列.
cls
echo.
echo         运行错误!
echo.
echo  注意:本程序不能用在 %os% 系列版本的系统上。
pause
exit
)
goto :eof




rem *************************
rem *************************
rem 判断是否具有管理员权限,否则退出
rem *************************
rem *************************
:CheckAdmin
net user %username% > %mhnet%\ifadmin.log
rem 如果不是系统管理员
find "*Administrators " %mhnet%\ifadmin.log >NUL
IF ERRORLEVEL 1 (
  cls
  echo       运行出错!
  echo.
  echo 注意:用户不是系统管理员组成员 ,不能执行本程序!!!
  echo 请更换有足够权限的用户重新运行本程序。
  pause
  exit
  goto :eof
) else (
  echo 用户属于系统管理员组,可以执行本程序。
)
goto :eof



rem *************************
rem *************************
rem 将服务器上的共享补丁包目录映射为本地盘S,并逐一运行补丁包
rem *************************
rem *************************
:HotfixUp
net use S: %HotPatch%
S:
cls
echo     注意!不要关闭本程序,系统升级完毕后会自动退出。
echo   正在升级系统,请等待......
IF not EXIST %SystemRoot%\KB834707.log KB834707.exe /passive /norestart
IF not EXIST %SystemRoot%\KB867282.log KB867282.exe /passive /norestart
IF not EXIST %SystemRoot%\KB873333.log KB873333.exe /passive /norestart
IF not EXIST %SystemRoot%\KB873339.log KB873339.exe /passive /norestart
IF not EXIST %SystemRoot%\KB885250.log KB885250.exe /passive /norestart
IF not EXIST %SystemRoot%\KB885835.log KB885835.exe /passive /norestart
IF not EXIST %SystemRoot%\KB886185.log KB886185.exe /passive /norestart
IF not EXIST %SystemRoot%\KB887742.log KB887742.exe /passive /norestart
IF not EXIST %SystemRoot%\KB888113.log KB888113.exe /passive /norestart
IF not EXIST %SystemRoot%\KB890047.log KB890047.exe /passive /norestart
IF not EXIST %SystemRoot%\KB890175.log KB890175.exe /passive /norestart
IF not EXIST %SystemRoot%\KB891781.log KB891781.exe /passive /norestart
IF not EXIST %SystemRoot%\KB887472.log KB887472.exe /q
rem 修复一次运行多个补丁包而不重启系统可能造成的未决文件版本问题
Qchain.exe
rem 删除本地共享映射驱动器
C:
net use S: /Delete /Y
goto :eof


rem ----- this is the end of this batch file -------
作者: Climbing     时间: 2005-3-29 00:00
脚本写的是很好,但感觉没有必要,因为用微软的Software Update Service(即SUS)可以实现关键补丁的自动更新,而且是全自动(因为使用的就是微软的自动更新功能),当然SUS只能用于Windows 2000/XP/2003,不过现在还有多少人用Win9x呢?就算是用,Win9x基本上也不再需要打什么补丁了。建议你看一下这篇文章:http://www.cctips.com/show.aspx?id=78&cid=6
作者: yzz163     时间: 2005-3-29 00:00
微软的Software Update Service(即SUS)可以实现关键补丁的自动更新,而且是全自动(因为使用的就是微软的自动更新功能),===========可是微软的Software Update Service要钱呀。还要专门搞一台服务器。我想还不如用FreeDBS+Samba 全免费的无版权。
作者: Climbing     时间: 2005-3-30 00:00
SUS是免费的,我用了很长时间了。相对于你下载补丁和编写升级脚本的维护时间来说,一台服务器不算什么。
作者: yzz163     时间: 2005-3-31 00:00
SUS是免费的,我用了很长时间了。相对于你下载补丁和编写升级脚本的维护时间来说,一台服务器不算什么。====================1、SUS必须用WIN2000/2003 server。你认为维护一台WIN的服务器很简单吗?(每天要重启、每个月有好多补丁要打,就是这样还是不敢放松)我不信,M$的东西太烂,只适合普通用户做桌面。我不喜欢用它来做服务器。服务器还是FreeBSD\Linux\或其他商业的UNIX安全稳定可靠。2、如果你的网络只有20-30台机器,你认为这样规模的单位愿意买一台服务器来搞SUS吗?(写这个补丁脚本可以做成光盘发给他们在任何一台机器上win98或WINXP上共享即可)3、我想用FreeBSD+Samba做服务器,在上面完成给M$客户打补丁、病毒库升级。用FreeBSD做系统,所用软件不存在版权问题可免费使用。买一套WIN2000/2003 server要多少钱,只有用盗版。
作者: Climbing     时间: 2005-3-31 00:00
你自己如果愿意花这么多时间和精力维护补丁更新,我当然没有意见。虽然win2000/2003不是免费的,但sus确实是免费的。FreeBSD虽然是免费的,但照样需要占用一台并不免费的机器。其实成本都差不多。微软的系统也不象网上所宣传的那样那么差,毕竟它还是市场的主要占有者,我不想讨论Windows和Unix系统的优劣,因为讨论这个没有意义。现在的工具都在这里,你自己感觉怎么方便就怎么来。反正我觉得用SUS挺简单的,安装上后基本上就不再需要什么维护工具了,至多每个月打几个勾就完事。我觉得它极大的节省了我的时间和精力。
作者: yzz163     时间: 2005-3-31 00:00
微软的系统也不象网上所宣传的那样那么差,毕竟它还是市场的主要占有者,我不想讨论Windows和Unix系统的优劣,因为讨论这个没有意义。-----------------------我在很多单位(20-50台以下),他们的情况是:1、基本上用盗版M$的WIN98和XP,即便有些品牌机预装了正版但在系统无法启动后又被搞维修的(社会上请的)装上了盗版。2、100%的机器没有打补丁,病毒库是两三年前的!!!3、100%的机器有各种病毒(木马),有的机器有十机种,几百上千的文件被感染。系统奇慢。4、在单位上没有专人维护,或不愿干这种“吃力不讨好的事”。因此我想写这个补丁脚本可以做成光盘发给他们在任何一台机器上win98或WINXP上共享即可解决。
作者: Climbing     时间: 2005-3-31 00:00
这只是这些单位搞维护的人太差了,你不觉得中国使用计算机的人普遍太缺乏维护常识了吗?这就好象一个人开车却不知道如何保养车一样,这不是车的问题,而是人的问题。盗版不盗版的倒也无所谓,在中国,目前盗版是一个省钱的好途径。而且,就算是FreeBSD或者Linux甚至是AIX,如果缺乏维护和升级,照样也存在很多安全问题,它们只是因为市场占有率太低,所以才显得安全问题不太突出,如此而已。很久以前,网络上就有Win98和其它Windows系统的补丁合集,我自己也做过,但维护一个补丁集实在是太困难太费精力了,对此我深有体会。
作者: yzz163     时间: 2005-4-1 00:00
这只是这些单位搞维护的人太差了,你不觉得中国使用计算机的人普遍太缺乏维护常识了吗?
------------------------------
做Win98和其它Windows系统的补丁合集就是给广大的“不太懂计算机维护”的用户用。

我们不能指望每个使用“计算机”的人都是维护高手。为了不让“病毒、木马”肆意蔓延,我才想做这个的。

[此贴子已经被作者于2005-4-1 8:14:08编辑过]



作者: Climbing     时间: 2005-4-3 00:00
不是只有系统维护高手才需要知道如何给系统打补丁,这是一个错误的认识。所以我说中国的计算机用户普遍素质较低。而打包补丁集可能是只有高手才做的事情,虽然并不复杂,但确实需要一些技巧。
作者: yzz163     时间: 2005-4-9 00:00
而打包补丁集可能是只有高手才做的事情,虽然并不复杂,但确实需要一些技巧。------------------------所以希望高手给点提示。另外:我们的内网必须和互联网物理隔离,不允许一台机器一会连互联网一会连内网。这种情况下如何用SUS?
作者: Climbing     时间: 2005-4-13 00:00
与internet物理隔离的机器我觉得根本不需要打补丁,因为没有感染蠕虫病毒的可能性,但既然感染了蠕虫病毒,说明还是有人违规连接Internet,针对这种情况,作为MIS部门就应该更不需要遵守这条规定,我所在的单位也是有这个规定的,我一直采取蔑视它的态度(当然,要搞好安全工作)。你可以在Internet上安装一台SUS服务器,由于SUS是自动下载关键更新到本地的,所以你可以只用它自动下载补丁程序,然后将补丁程序通过移动硬盘再复制到内网上,通过你前面所写的自动更新脚本升级内网的机器即可。
作者: yzz163     时间: 2005-4-16 00:00
与internet物理隔离的机器我觉得根本不需要打补丁,因为没有感染蠕虫病毒的可能性,但既然感染了蠕虫病毒,--------------------一些单位保证是与internet物理隔离(有VRV的监控软件可以保证),但是用户滥装软件,又没防病毒,网络还是感染了蠕虫病毒。我还是想做“物理隔离”的,因为上面要求必须这样。你可以在Internet上安装一台SUS服务器,由于SUS是自动下载关键更新到本地的,所以你可以只用它自动下载补丁程序,然后将补丁程序通过移动硬盘再复制到内网上,通过你前面所写的自动更新脚本升级内网的机器即可。-------------------------有没有其他方法?我看了一些资料,有些单位用的“网站镜像”不知是否能做到“物理隔离”。
作者: yzz163     时间: 2006-10-26 05:39

作者: electronixtar     时间: 2006-10-26 06:16
跟顶,联盟走题示范贴,^_^
作者: maya0su     时间: 2006-10-29 01:10
有意思
以前我也这样做过
我觉得
net use
xcopy
call
就可以解决问题,只是在服务器上,我们要做的只是及时更新补丁就可以了
作者: zhwvip     时间: 2006-10-29 01:24
我这里更新补丁 也是做的批处理更新
毕竟100多机器都让他从int updata
比较占用网速 还慢 不如下补丁到本地
在用批处理更新 也包括各地情况不同
不过我一般不用 net use虚拟硬盘
直接\\xxx.xxx.xxx.1连接
2中方法有什么优缺点吗?
作者: yzz163     时间: 2006-10-31 05:14
不过我一般不用 net use虚拟硬盘
直接\\xxx.xxx.xxx.1连接
2中方法有什么优缺点吗?
--------------------------------------------------

你试下就知道了。
用\\xxx.xxx.xxx.1方法有时不能正常复制文件(我这有WIN95/98/2K/XP),虚拟成本地盘后就没有问题了。
具体原因没有查明。