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

A cikk fordítása A cikk fordítása
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

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com