Võrguühenduse kontrollimine

Allikas: Hinnavaatlus.ee Wiki
Mine navigeerimisribaleMine otsikasti

See sobib kasutamiseks siis kui mis iganes põhjustel ei ole võimalik võrguühenduse olemasolu operatsioonisüsteemi seirevahenditega seirata. Mõeldud kasutamiseks Microsoft'i operatsioonisüsteemis.

Käivitatava faili loomine

Selleks sobib näiteks Batch file Batch faili loomiseks on kõige sobivam lihtne tekstiredaktor. Näiteks kas notepad või edit. failis peab olema järgmine.

:: Pingib teenusepakkuja lüüsi lisab pingimise kellaaja ja kuupäeva ning kirjutab tulemused 
:: tekstifaili.
   
   ping [siia kirjuta oma teenusepakkuja lüüsi IP aadress] >> tulemus.txt
   date /T >> tulemus.txt
   time /T >> tulemus.txt

fail tuleb salvestada laiendiga .bat

Selle toimimist saab kontrollida käivitades faili kas käsurealt või failihaldurist.

Edukal käivitamisel peab tulemus.txt sisu välja nägema umbes selline :

   T 08.11.2005 
   09:58
   Pinging neti.ee [194.126.101.79] with 32 bytes of data:
   Reply from 194.126.101.79: bytes=32 time=10ms TTL=58
   Reply from 194.126.101.79: bytes=32 time=12ms TTL=58
   Reply from 194.126.101.79: bytes=32 time=13ms TTL=58
   Reply from 194.126.101.79: bytes=32 time=14ms TTL=58
   Ping statistics for 194.126.101.79:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
   Approximate round trip times in milli-seconds:
        Minimum = 10ms, Maximum = 14ms, Average = 12ms

Uuemate Windowside käsuinterpretaator on pisut võimekam. Järgenev CMD fail töötab kindlasti Windows 2K, XP ja 2K3 keskkonnas. NT4 keskkonnas võiks see asi teoreetiliselt t88tada, kuigi usutavasti ei ole seal seatud keskkonnamuutujaid %TIME% ja %DATE%. Sellisel juhult tuleb vastavad keskkonnamuutujad ise seada:

FOR /F "usebackq tokens=*" %%A IN (`DATE /T`) DO @SET KUUP=%%A

Seab muutuja KUUP väärtuseks käsu DATE väljundi. Kellaajaga tuleb toimida analoogiliselt. Soovitav on faili nimeks panna CMD, mitte BAT, sest siis teab Windows, et faili interpreteerimiseks tuleb kasutada laiendatud võimalustega käsuinterpretaatorit

@FOR /F "usebackq tokens=*" %%A IN (`ping -n 1 host-mida-tahame-pingida ^| sort`) DO @SET ANS=%%A
@ECHO %DATE% %TIME% "%ANS%"

Annab umbes seesuguse väljundi

P 11/13/2005 12:08:34,06 "Reply from 192.168.1.1: bytes=32 time<1ms TTL=255"

Sedasi satub iga vastus ilusasti koos kuupäeva ja kellaajaga oma reale ja seda faili on oluliselt mugavam töödelda. NB! kuna Windowsi tekstiparser on pehmelt öeldes "piiratud", siis ei tohiks ping käsu n-parameetrit muuta. Kui hosti soovitakse mitu korda pingida tuleks terve ülalviidatud koodilõik asetada käsuskripti (näiteks png.cmd) ja kutsuda välja teisest käsuskriptist FOR tsükli abil.

fail mpng.cmd

@FOR /L %%I IN (1,1,3) DO @PNG.CMD

fail png.cmd

@FOR /F "usebackq tokens=*" %%A IN (`ping -n 1 192.168.1.1 ^| sort`) DO @SET ANS=%%A
@ECHO %DATE% %TIME% "%ANS%" 

Kui me nüüd käivitame mpng.cmd ja suuname vastuse faili ans.txt

C:\mpng >> ans.txt

Siis saame tulemuseks umbes sellise sisuga faili:

P 11/13/2005 12:31:05,37 "Reply from 192.168.1.1: bytes=32 time<1ms TTL=255" 
P 11/13/2005 12:31:05,50 "Reply from 192.168.1.1: bytes=32 time<1ms TTL=255" 
P 11/13/2005 12:31:05,60 "Reply from 192.168.1.1: bytes=32 time<1ms TTL=255" 

On siililegi selge, et pingimiskordade arvu muudame me failis mpng mängides IN seti kolmanda parameetriga, mis hetkel omab väärtust "3". Samuti on soovitav näites toodud IP aadress vahetada selle IP aadressi vastu mida soovime pingida.

Windows 9x seeriaga on asi natukene keerukam. Kahjuks tuleb kasutada "häkki". Probleem on selles, et "klassikalise" command.com käsuinterpretaatori standardvahenditega ei ole võimalik käsu väljundit keskkonnamuutujasse saada. Selleks kasutatakse "vahefaili häkki", mida saab näha allpool, kuupäeva ja kellaaja määramisel ning pingi aja salvestamisel. Mida tuleb tähele panna - selle Batchi töö käigus luuakse jooksvasse kataloogi ajutised failid TEMPDTT1.BAT, TEMPDTT2.BAT (kui kasutada pingi aja lisavõimalust siis ka TEMPR.BAT ja REPLY.BAT). On ilmne, et Sinu poolt loodava batch faili nimi ei tohi nendega kattuda. Kõige arukam oleks oma "võrgukontrollijale" teha eraldi kataloog.

@ECHO OFF
:: Koodis on kasutatud materjale siit http://www.robvanderwoude.com/index.html
:: Muutuja HOST - sisesta host mida soovid pingida

SET HOST=192.168.1.1

:: Recursion
IF NOT "%3"=="" GOTO SecondTime
:: Create temporary batch file
> TEMPDTT1.BAT ECHO @PROMPT %0 $D $T
:: Do _N_O_T_ replace "COMMAND /C" with CALL in the next line
> TEMPDTT2.BAT COMMAND /C TEMPDTT1.BAT
TEMPDTT2

:SecondTime
DEL TEMPDTT?.BAT
SET DOW=%1
SET DATE=%2
SET TIME=%3

SET CONNECT=vastab
PING -n 1 %HOST% | FIND "TTL=" > NUL
IF ERRORLEVEL 1 SET CONNECT=ei vasta
ECHO %DATE% %TIME% Host %HOST% %CONNECT%

Mis annab umbes sellise tulemuse

11-13-2005 20:01:51.73 Host 192.168.1.1 vastab

või

11-13-2005 20:03:05.99 Host 192.168.1.17 ei vasta

Kui me soovime ka pingi aega näha, siis tuleb veel natukene "trikitada". Vahefaili häki kasutamisel on kõik ilus ainult senikaua, kuni meie väljundisse sattuv soga ei sisalda märke mis on command.com jaoks eritähendusega (<>|?* jms.). Paraku, PING käsu tarvitamisel just sedasi võibki juhtuda. Näide:

C:\DOCUME~1\offf>ping 192.168.1.1
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time<1ms TTL=255

Nagu me näeme, satub kiire ühenduse korral väljundisse märk "<" mis on command.com jaoks eritähendusega ja seesugust rida enam käsureana tarvitada ei saa. Appi tuleb parameeter -l millega seatakse paketi suurust. Kui kohtvõrgu või ülikiire ühenduse korral paketisuurus piisavalt suureks ajada, läheb pingi aeg piisavalt suureks ja < märki ei kasutata.

C:\DOCUME~1\offf>ping -n 1 -l 65500 192.168.1.1
Pinging 192.168.1.1 with 65500 bytes of data:
Reply from 192.168.1.1: bytes=65500 time=13ms TTL=255

See parameeter tuleb igaühel ise katseliselt paika ajada, sest mõned hostid võivad turvakaalutlustel keelduda väga suurele ICMP paketile vastamast (ping käsku saab ka kuritarvitada, ühenduse blokeerimiseks). Igal juhul, kui asendada ülal toodud koodis 4 viimast rida (SET -- ECHO) järgneva koodiga:

SET PKTSIZE=65500
PING -n 1 -l %PKTSIZE% %HOST% | FIND "Reply" > TEMPR.BAT 
>> REPLY.BAT ECHO SET REPLY=%%5 %%6
CALL TEMPR.BAT
IF NOT "%REPLY%"=="" ECHO %DATE% %TIME% Reply form %HOST% %REPLY%
IF "%REPLY%"=="" ECHO %DATE% %TIME% %HOST% no reply 
DEL REPLY.BAT
DEL TEMPR.BAT

Saame me sellise vastuse

11-13-2005 20:00:50.05 Reply form 192.168.1.1 time 13ms

Või sellise vastuse, kui meie pingile ei vastata

11-13-2005 20:00:50.05  192.168.1.17 no reply

Loomulikult saab neid tekste oma maitse kohaselt redigeerida.

Faili perioodiline käivitamine

Perioodiliseks käivitamiseks on mõistlik kasutada Windowsi operatsioonisüsteemis olevat Task Sheduleri. Kiirtee seadistaja leidmiseks ja käivitusrutiini loomiseks on järgmine Start menüü > programs > Accessories > System tools > Scheduled Tasks > Add Scheduled Task.

Käivitatavaks programmiks on eelnevalt loodud Batch fail. Detailne seadistamine sõltub kasutatavast operatsioonisüsteemist ning sellega tutvumiseks on soovitav kasutada operatsioonisüsteemi spikrit (help).

Praktilised näpunäited

Teenusepakkuja lüüsi pingimine on soovitatav selle pärast, et kui te pingite suvalist hosti internetis ei ole tulemuseks mitte see kas teie ühendus on töökorrast vaid kas see host on töökorras. Samuti ei pruugi see anda ka ikkagi reaalseid tulemusi kuna tegelikuses on teenusepakkuja arvutivõrgu infrastruktuur keerulisem ning viga võib olla ka tekkinud peale esimest lüüsi. Testi liiga tihe käivitamine pika ajajooksul (näiteks iga minuti tagant) ei pruugi anda soovitud tulemusi ning võib hoopis vähendada võrguühenduse läbilaskevõimet või operatsioonisüsteemi jõudlust.

Autor: silverk