HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Csoportos ping


Példaprogram letöltése

2515 bájt

A TCP/IP hálózatok egyik legalapvetőbb parancssori teszteszköze a ping utasítás. Előnye, hogy gyakorlatilag az összes operációs rendszer alatt változatlan formában használható, ahol telepítve van a protokoll. Talán a népszerűsége okán bekerült a Windows XP WMI (Windows Management Instrumantation) szolgáltatásába és immár programokból, szkriptekből is elérhető. Az alábbiakban mutatunk egy példát, hogy kell VB szkriptekben haszálni és miként lehet több gépet is tesztelni egyetlen utasítás kiadásával.

Cikkünkhöz mellékeltük az alábbi szkriptet "ping.vbs" néven. Indítása a parancssori CSCRIPT.EXE-vel javasolt a sok felbukkanó ablak elkerülése végett. Könnyítésként írtunk egy batch fájlt, ami ellátja ezt a feladatot.
Az új osztály neve: Win32_PingStatus. Feladata, hogy ICMP üzenetek küldésével mérje a válaszidőket. Ha nem érkezik válasz, a célgép nem elérhető, tűzfal mögött helyezkedik el és blokkolva van az ilyen irányú forgalom vagy nincs telepítve a TCP/IP protokoll. Ha érkezik válasz, de lassan, akkor valószínűleg valamilyen hálózati hibával vagy túlterheltséggel kell számolnunk.
Készítsünk egy szkriptet, amelyben a megadott gépeket "megpingeljük", mérjük a válaszidőket és a végén készítünk egy egyszerű statisztikát, hogy hány gép volt elérhető és mennyi nem. A szkript jól használható kisebb hálózatok gyors teszteléséhez.
Elsőként adjuk meg az ellenőrizendő gépek neveit, pontosvesszővel elválasztva.
ComputerList= "localhost;dorothy;zeusz"
A "Split" függvénnyel bontsuk fel az előző sztringet gépnevekre, második paraméterként az elválasztó karaktert kell megadni.
aComputer = split(ComputerList, ";")
Inicializálunk két változót: az egyik (yes) fogja tárolni a sikeresen elért gépek számát, a másik (no), pedig a nem elérhetőkét.
yes=0
no=0
Egy ciklussal végignézzük az összes megadott gépet. Meghívjuk a Win32_PingStatus osztályt és lekérjük az összes gép ping statisztikáját. A kérés címe az "address" tulajdonság, ami lehet gépnév és IP cím is.
For Each Computer in aComputer
 Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & Computer & "'")
Következik még egy ciklus az adatok feldolgozására. Ha a "StatusCode" tulajdonságban nem nulla érték szerepel vagy nincs értéke (IsNull), akkor valamilyen hiba lépett fel. Ekkor növeljük a "no" változó értékét: a gép nem elérhető.
  For Each objStatus in objPing
   If IsNull(objStatus.StatusCode) or objStatus.StatusCode <> 0 Then 
    WScript.Echo Computer & " nem elérhető"
    no=no+1
Ellenkező esetben válaszolt a célgép a ping parancsra. Írassuk ki a válaszidőt milliszekundumban. Ez a "ResponseTime" tulajdonságban tárolódik. Végül növeljük a "yes" változó értékét.
   else 
    WScript.Echo Computer & " válasz:" & objStatus.ResponseTime & " ms OK"
    yes=yes+1
   end If
  Next
Next
Jelenítsük meg a statisztikát: összesen annyi gépet ellenőriztünk, amennyi a "yes" és "no" változók összege. Ebből sikeresen válaszolt a "yes"-ben szereplő számú gép és sikertelenül a "no"-ban szereplők.
WScript.Echo "------ Statisztika -------" 
WScript.Echo "Ellenőrizve: " & yes+no 
WScript.Echo "Válaszolt: " & yes
WScript.Echo "Nem válaszolt: " & no

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 632. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |