A 824146 (MS03-039), illetve a 823980 (MS03-026) jelű biztonsági javítás telepítése Visual Basic parancsfájl segítségével távoli állomás-számítógépekre

Cikk azonosítója: 827227 - A cikkben érintett termékek listájának megtekintése.
Az összes kibontása | Az összes összecsukása

A lap tartalma

Összefoglaló

A cikk egy Patchinstall.vbs nevű Microsoft Visual Basic Scripting Edition parancsfájlt is tartalmaz. A parancsfájl bemutatja, hogy a hálózati rendszergazdák miként telepíthetik a 824146 (MS03-039) és a 823980 (MS03-026) jelű biztonsági javításokat Microsoft Windows NT, Windows 2000 és Windows Server 2003 alapú tartományi környezetben a Windows Management Instrumentation (WMI) parancsnyelvi lehetőségeinek kihasználásával olyan távoli állomás számítógépeken, amelyek nem rendelkeznek ezekkel a javításokkal. A Patchinstall.vbs parancsfájl argumentuma egy olyan fájlt (Ipfile.txt), amely bemenetként IP-címeket tartalmaz. A parancsfájl a távoli állomás-számítógép egy előre megadott útvonaláról (C:\Patchinst.exe) telepíti a 824146 (MS03-039) vagy a 823980 (MS03-026) jelű biztonsági javítást. További információt a 824146-os (MS03-039) biztonsági javításról a Microsoft Tudásbázis következő cikkében talál a cikk számára kattintva:
824146 MS03-039: Az RPCSS szolgáltatás puffertúlcsordulása rosszindulatú programok végrehajtására adhat lehetőséget a támadóknak
A 823980-as számú biztonsági javításról további információt a Microsoft Tudásbázis következő cikkében talál a cikk számára kattintva:
823980 MS03-026: Az RPC-felület puffertúlcsordulása programkód végrehajtására adhat lehetőséget
A rendszergazdák számára készült, a tárgyalt biztonsági javításokat nem tartalmazó számítógépeket a hálózat vizsgálatával azonosító eszközről további információt a Microsoft Tudásbázis következő cikkében talál a cikk számára kattintva:
827363 A 823980-as (MS03-026) és a 824146-os (MS03-039) számú biztonsági javítást nem tartalmazó gazdaszámítógépek azonosítása a KB 824146 keresőeszközzel

Megjegyzések

  • A 824146 és 823980 jelű biztonsági javítások sikeres telepítéséhez rendszergazdai jogosultságokkal kell rendelkeznie a távoli célszámítógépeken.
  • Patchinstall.vbs parancsfájl sikeres futtatásához a Microsoft Windows XP alapú célszámítógépeket Windows NT, Windows 2000 vagy Windows Server 2003 tartományba kell csatlakoztatni.
  • A Patchinstall.vbs parancsfájl a Windows Management Instrumentation (WMI) szolgáltatásait használja. A WMI a Distributed Component Object Model (DCOM) technológiára épül. Emiatt a Patchinstall.vbs parancsfájl nem fut le azokon a számítógépeken, melyeken a DCOM szolgáltatást letiltották a Microsoft Security Bulletin MS03-039 vagy MS03-026 jelű cikkében tárgyalt biztonsági rések elleni védelemre szolgáló megoldásként.
  • Azokon a számítógépeken, amelyeken futtatni kívánja a Patchinstall.vbs parancsfájlt, a 824146 vagy a 823980 biztonsági javításnak helyi mappában kell elhelyezkednie, és ezt a mappát a Patch_XP.exe (Windows XP esetén), Patch_W2K.exe (Windows 2000 esetén) vagy Patch_W2K3.exe (Windows Server 2003 esetén) névre kell átnevezni.
  • A Patchinstall.vbs parancsfájl módosításával más javítások is telepíthetők.

További információ

A Patchinstall.vbs parancsfájl az alábbi feladatokat hajtja végre:
  • Beolvassa azon távoli állomás-számítógépek IP-címeinek listáját, melyeken telepíteni kívánja a 824146-os vagy 823980-as biztonsági javítást. A listát a parancsfájl egy ASCII formátumú szövegfájlból (Ipfile.txt) olvassa be, amely egy IP-címlistát tartalmaz (soronként egy IP-címmel). AzIpfile.txt fájl lehet például a KB824146 keresőeszköz által létrehozott Vulnerable.txt naplófájl.
  • Beolvassa a listában szereplő első IP-címet.
  • Megállapítja a célszámítógépen futó Windows rendszer verzióját.
  • A parancsfájlt futtató számítógép Z meghajtóját a célszámítógép C$ megosztásához rendeli.
  • A javítás megfelelő verzióját (a Windows XP, Windows 2000 vagy Windows Server 2003 rendszerre készült verziót) a Z meghajtó-hozzárendelés által a célszámítógép C:\Patchinst.exe elérési útvonalára másolja.
  • Telepíti a javítást, majd automatikusan újraindítja a célszámítógépet. Ehhez semmilyen felhasználói beavatkozásra nincs szükség, és párbeszédpanelek sem jelennek meg, amire a -q -f kapcsolók (felügyelet nélküli telepítési mód) adnak lehetőséget.
  • Megvárja a telepítés befejezését.
  • Megpróbálja törölni a célszámítógépen a C:\Patchinst.exe fájlt.
  • Megszűnteti a Z meghajtó-hozzárendelést.
  • Folytatja az eljárást a listában szereplő következő IP-címmel.
Fontos! A Microsoft javasolja, hogy a parancsfájlt hálózati környezetének megfelelően módosítsa, és a hálózati alkalmazása előtt megfelelő tesztkörnyezetben tesztelje.

A Patchinstall.vbs parancsfájl használatához illessze be az alábbiakban közreadott kódot egy Patchinstall.vbs nevű szövegfájlba, majd futtassa a parancsfájlt az alábbi parancssor szerint:
cscript patchinstall.vbs Ipfile.txt javítások_helyi_elérési_útja
A fenti parancsban az Ipfile.txt az azon távoli állomás-számítógépek IP-címeinek listáját tartalmazó szövegfájl, amelyeken telepíteni kívánja a 824146 vagy a 823980 jelű biztonsági javítást, a javítások_helyi_elérési_útja argumentum pedig a 824146 vagy a 823980 jelű biztonsági javítás átnevezett csomagjait – Windows XP esetén Patch_XP.exe, Windows 2000 esetén Patch_W2k.exe, míg Windows Server 2003 esetén Patch_W2k3.exe – tartalmazó mappa teljes elérési útja.

A Patchinstall.vbs parancsfájl

A Microsoft csak szemléltetési célból ad közre programozási példákat, és azokra sem közvetlen, sem közvetett jótállást nem vállal. Ebbe beleértendő a forgalomba hozhatóságra és az adott célra való megfelelőségre vonatkozó jótállás is. A cikk feltételezi, hogy az olvasó jártas a szemléltetésre szolgáló programozási nyelvben, valamint az eljárások létrehozására és a velük kapcsolatos hibakeresésre szolgáló eszközök használatában. A Microsoft támogatási szakemberei segítséget nyújthatnak egy-egy adott eljárás funkcionalitásának megértésében, de további funkcionalitás hozzáadása céljából nem módosítják a példákat, és nem készítenek az egyéni követelményeknek megfelelő eljárásokat.
' Patchinstall.vbs
' Telepítő parancsfájl az MS03-026 és MS03-039 jelű javításokhoz
' (c) Microsoft 2003
' v1.03 cl

on error resume next

const XP_Patch = "Patch_XP.exe"
const W2k_Patch = "Patch_W2k.exe"
const W2k_Patch = "Patch_W2k.exe"

If right(ucase(wscript.FullName),11)="WSCRIPT.EXE" then
     wscript.echo "HIBA: Ezt a parancsfájlt a cscript parancsértelmezővel kell futtatni, például: 'cscript " & wscript.scriptname & "'."
     wscript.quit 0
end if

' HASZNÁLAT
if wscript.arguments.count <> 2 then
     wscript.echo "Használat: cscript " & wscript.scriptname & " <IpFile.txt> <javítások_helyi_elérési_útja>" & vbCrLf & vbCrLf & _
     "  A <javítások_helyi_elérési_útja> argumentum az alábbi fájlokat tartalmazó mappa teljes elérési útja kell legyen:" & vbCrLf & _
     "      " & XP_Patch & vbCrLf & _ 
     "      " & W2k_Patch & vbCrLf & _ 
     "      " & W2k3_Patch
     wscript.quit
end if

ipFile = wscript.arguments(0)
localPathToPatches = wscript.arguments(1)

set onet = createobject("wscript.network")
set ofs = createobject("scripting.filesystemobject")

' Az ipfile elérhetőségének ellenőrzése
set oipFile = ofs.opentextfile(ipFile, 1, false)
if (Err.Number <> 0) then
     wscript.echo "Nem nyitható meg a következő fájl: " & ipFile
     wscript.quit
end if

' A záró \ karakter hozzáadása, ha hiányzik.
if right(localPathToPatches, 1) <> "\" then
     localPathToPatches = localPathToPatches & "\"
end if

' Figyelem! A cim_datafile változó nem támogatja az UNC elérési útvonalakat,
' így mindent meghajtó-hozzárendeléssel kell kezelni.
if left(localPathToPatches, 2) = "\\" then
     wscript.echo "A <javítások_helyi_elérési_útjának_meghajtójele> nem lehet UNC elérési útvonal. Csatlakoztasson egy helyi meghajtót az elérési úthoz."
     wscript.quit
end if

exeWinXP = ofs.getfile(localPathToPatches + XP_Patch).name
exeW2k = ofs.getfile(localPathToPatches + W2k_Patch).name
exeW2k3 = ofs.getfile(localPathToPatches + W2k3_Patch).name

' A javítások elérhetőségének ellenőrzése
if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then
     wscript.echo "Nem találhatók a javításokat tartalmazó fájlok."
     wscript.echo "Ellenőrizze, hogy a <javítások_helyi_elérési_útja> mappában megtalálható-e az alábbi fájlok mindegyike:" & vbCrLf & _
     "      " & XP_Patch & vbCrLf & _ 
     "      " & W2k_Patch & vbCrLf & _ 
     "      " & W2k3_Patch
     wscript.quit
end if


set osvcLocal = getobject("winmgmts:root\cimv2")

' A hibakezelési kód mindig abban a függvényben található, amely a hibát generálhatja.
on error resume next

while not oipFile.atEndOfStream
     ip = oipFile.ReadLine()
     wscript.echo vbCrLf & "Csatlakozás a következő IP-címhez: " & ip & "..."

     Err.Clear
     set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2")

     if (Err.Number <> 0) then
          wscript.echo vbCrLf & "Nem sikerült kapcsolódni a következő IP-címhez: " & ip & "..."
     else

          exeCorrectPatch = detectOSPatch(osvcRemote)
          if (exeCorrectPatch <> "") then
               ' Telepítés a távoli számítógépen.
               wscript.echo "A következő javítás telepítése: " & exeCorrectPatch & "..."

               onet.mapnetworkdrive "z:", "\\" & ip & "\C$"
               set osourceFile = osvcLocal.get("cim_datafile=""" & replace(localPathToPatches, "\", "\\") & exeCorrectPatch & """")
               ret = osourceFile.Copy("z:\\Patchinst.exe")

               if (ret <> 0 and ret <> 10) then
                    ' Hiba történt, de annak típusa nem "a fájl már létezik".
                    wscript.echo "Nem sikerült a másolás a következő címre: " & ip & " – a hiba: " & ret
               else
                    set oprocess = osvcRemote.Get("win32_process")
     
                    	' A telepítés elkezdése felhasználói beavatkozás nélkül, és az újraindítás kényszerítése a folyamat végén.
                    ret = oprocess.create("c:\\Patchinst.exe -q -f")
                    if (ret <> 0) then
                         wscript.echo "Folyamatindítási hiba a következő IP-címen: " & ip & ": " & ret
                    else
                         ' A már átmásolt fájlra való hivatkozás tárolása.
                         set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")

                         ' Megvárja a telepítés befejezését.
                         for waitTime = 0 to 120     ' Várakozás a telepítés befejezésére legfeljebb 2 percig
                              wscript.Sleep 1000     ' Egy másodpercnyi várokazás.
                              ' Az ideiglenes fájl törlése, amint az felszabadult.
                              if (odestFile.Delete() = 0) then
                                   exit for
                              end if
                         next ' Különben újabb ciklus, a várakozás folytatása...

                         wscript.echo "A telepítés sikeresen befejeződött."

                    end if     ' A folyamat létrehozása sikerült
               end if     ' A másolás sikerült.

               onet.removenetworkdrive "z:", true
          end if      ' A parancsfájl tudja, mely javítást kell telepíteni.
     end if ' Folytatás a következő, majd az azt követő IP-címmel... 
wend

oipFile.close()

' Tisztítás, a meghajtó-hozzárendelés eltávolítása (az ellenőrzés most szükséges, mivel lehet, hogy a csatlakoztatás meg sem történt).
if ofs.folderexists("z:\") then
     onet.removenetworkdrive "z:", true
end if

wscript.echo vbCrLf & "A javítás telepítése befejeződött. Kilépés."

function detectOSPatch(osvcRemote)

     set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")
     ' Mindig csupán egyetlen példány kerül visszaadásra (a jelenleg aktív operációs rendszeré), függetlenül attól, hogy az alábbi egy foreach ciklus:
     for each objOperatingSystem in oOSInfo

          if (objOperatingSystem.OSType <> 18) then
               ' Győződjön meg arról, hogy a számítógép Windows NT alapú.
               wscript.echo "A(z) " & ip & " címen nem Windows XP, Windows 2000 vagy Windows 2003 Server számítógép található."
          else
               if (objOperatingSystem.Version = "5.0.2195") then
                    ' Windows 2000 SP2, SP3, SP4.
                    if (objOperatingSystem.ServicePackMajorVersion = 2) or (objOperatingSystem.ServicePackMajorVersion = 3) or _
			(objOperatingSystem.ServicePackMajorVersion = 4) then
                         systemType = exeW2k
                    end if

               elseif (objOperatingSystem.Version = "5.1.2600") then
                    ' Windows XP RTM, SP1.
                    if (objOperatingSystem.ServicePackMajorVersion = 0) or (objOperatingSystem.ServicePackMajorVersion = 1) then
                         systemType = exeWinXP
                    end if

               elseif (objOperatingSystem.Version = "5.2.3790") then
                    ' Windows Server 2003 RTM
                    if (objOperatingSystem.ServicePackMajorVersion = 0) then
                         systemType = exeW2k3
                    end if
               end if

               if (systemType = "") then 
                    ' A számítógép Windows NT alapú, de a rajta lévő szervizcsomag érvénytelen.
                    wscript.echo "A javítás nem telepíthető a következő IP-címre: " & ip & " –- nem támogatott operációs rendszer verzió: " & objOperatingSystem.Caption & " SP" & _
				objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"
               end if
          end if

     next

     detectOSPatch = systemType

end function

Tulajdonságok

Cikk azonosítója: 827227 - Utolsó ellenőrzés: 2005. augusztus 9. - Verziószám: 5.4
A cikkben található információ a következő(k)re vonatkozik:
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
Kulcsszavak: 
kbinfo KB827227
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.

Visszajelzés küldése