Windows - Webhely fájljainak automatikus cseréje

forráskód letöltése
Webszerver üzemeltetők gyakran találkoznak azzal a feladattal, hogy egy bizonyos időpontban meg kell változtatniuk a teljes website tartalmát. Az ok lehet tartalmi vagy gyökeres megjelenésbeli váltás, de lehet másik helyre költözés is. A váltás általában valamilyen előre beharangozott dátumhoz kötődik, ami nem kizárt, hogy egyik hónapról, vagy évről a másikra váltáskor, éjfélkor következik be. De ki szeret éjfélkor a munkahelyén lenni, főleg szilveszterkor? Sokkal jobb megoldást ajánlunk: automatizáljunk...
Mellékelten megtalálhatók az alábbi szkiptek:
"ChangeRootDir.vbs" - C:\inetpub\newWWWRoot-ra módosítja egy 1-es számú webhely gyökérkönytárát.
"ChangeDefaultDoc.vbs" - Az Index.html és Index2.html fájlokat adja meg az 1-es számú webhely alapértelmezett dokumentumainak.
A cikkben foglaltak végrehajtására rendszergazdai jogosultságra van szükség.
Egy website több fájlból tevődik össze, ezek egy meghatározott alkönyvtárban található állományokat, mappákat és azok almappáit jelentik. A kiindulópontot gyökérnek is nevezik. Nézzük az IIS (Internet Information Services) hol tárolja a gyökér elérési útját: nyissuk meg a webszerveren a Felügyeleti eszközök > Internet szolgáltatáskezelő (Administrative Tools > Internet Services Manager) MMC konzolt. Kattintsunk a faszerkezetben egy webhelyre a jobboldali egérgombbal és válasszuk a "Tulajdonságok" ("Properties") menüt. Lépjünk a "Kezdőkönyvtár" ("Home Directory") oldalra és nézzük meg a "Helyi elérési út" ("Local Path") melletti mező tartalmát. Mi a website csere legegyszerűbb módja? Ha elkészítjük az új webhelyet, elhelyezzük egy másik mappában és átírjuk e mező tartalmát úgy, hogy az új helyre mutasson. A kérdés már csak az lehet, hogy változtassuk meg az útvonalat. Például egy ADSI szkripttel. A Windows Scripting Host (WSH) rendkívül hatékony eszköz lehet egy programozói vénával megáldott rendszergazda számára. Az ilyen és ehhez hasonló feladatok 2-3 programsorral megoldhatók. Nézzük hogyan:
Szükségünk lesz némi alapismeretre mielőtt nekilátnánk: az IIS webszolgáltatására "W3SVC" néven lehet hivatkozni, az FTP-re "MSFTPSVC" néven és így tovább. Minden szolgáltatásnak van saját azonosítója. Ez többek között az eseménynaplózásban és a szkript hivatkozásokban is megjelenik. A Windows 2000 Server a Windows 2000 Professional-el ellentétben több webhely kezelését is lehetővé teszi. A különböző webhelyekre számokkal lehet hivatkozni: az elsőre: 1-el, a másodikra 2-vel és így tovább. De melyik az első, második, stb. webhely? Egyszerűen nézzük meg a fenti felügyeleti konzol faszerkezetét és fentről lefelé haladva számozzuk meg őket - felül található az 1-es számú. Szkriptünk első sora tehát így alakul:

Set WebServerRootObj = GetObject("IIS://server/W3SVC/1/Root")
Ahol a "server" jelenti az IIS-t futtató kiszolgáló nevét (név helyett IP címet is megadhatunk), ebből következik, hogy nem csak a webszerveren, hanem távolról is használhatjuk. A programsort lefordítva: kapcsolatot teremtettünk a "server" nevű gép 1-es webhelyén futó webszolgáltatás gyökerével. Most már fennáll a lehetőség, hogy számos tulajdonságok lekérjünk, megváltoztassunk és metódusokat futtassunk. A "Path" tulajdonság tárolja a tulajdonságablak fenti mezőjében található elérési utat. Megváltoztatni a "Put" metódus meghívásával lehet. Két paramétert kell megadnunk, az egyik: hogy mit, a másik: hogy mire akarunk cserélni. Legyen az új elérési út: "C:\inetpub\newWWWRoot":
 WebServerRootObj.Put "Path","C:\inetpub\newWWWRoot"
Még nem vagyunk kész, ugyanis a változtatást el kell tárolni az IIS metaadatbázisában a "SetInfo" metódus meghívásával:
  WebServerRootObj.SetInfo
Egyik website-ról a másikra való átállás történhet úgy is, hogy vannak közös dokumentumok és nem a teljes könyvtárszerkezetet kell megváltoztatni, hanem csak a nyitó oldalt, például "Index.html"-ről, "Default.html"-re. Ebben az esetben a szkriptet néhány ponton módosítani kell: Nem a "Path", hanem a "DefaultDoc" tulajdonság módosítását kell elvégeznünk. A webhely tulajdonságlapjának "Dokumentumok" ("Documents") oldalán található lista elemeiről van szó. Opcionálisan több dokumentum megadására is van lehetőség, ha az egyik nem elérhető, akkor jön a következő, stb. A teljes szkript így néz ki:
Set WebServerRootObj = GetObject("IIS://server/W3SVC/1/Root")
 WebServerRootObj.Put "DefaultDoc","Index.html,Index2.html"
  WebServerRootObj.SetInfo
Futtatása után a dokumentumok listája "Index.html" és "Index2.html" elemekből fog állni.
A szkripteket futtassuk a szükséges időpontban a "Feladatütemező" ("Scheduled tasks") segédprogrammal.