[RegExp] Tracert hop informatie

Pagina: 1
Acties:

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 04-02 10:03
Wat heb ik?
1. Een bat file.
code:
1
cscript ..\scripts\tracert.vbs %1

2. Een vbs file.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
set args = Wscript.arguments
strUrl = args(0)

set objShell = CreateObject("WScript.Shell")
strOut=""

cmdarg="%comspec% /c tracert.exe -d " & strUrl
set objExCmd = objShell.Exec(cmdarg)

Do Until objExCmd.stdOut.AtEndOfStream
    strLine = objExCmd.stdOut.ReadLine()
    Set regEx = New RegExp
    regEx.Pattern = "[\f\n\r\v]+"
    regEx.Global = True
    regEx.Multiline = True
    strLine = regEx.Replace(strLine, "<end>")
    strComplete = Instr(strLine, "Trace complete.<end>")
    If strComplete = 0 THEN    
        WScript.echo strLine    
    End If
Loop

3. Een regular expression.
code:
1
/[^.]([1-9]\s.*)/s


Wat mis ik dan nog?
Een goed resultaat als de URL of pc waar je een tracert naar toe wilt uitvoeren eindigt met een cijfer.
Als dit het geval is krijg ik nl:
code:
1
2
3
5 Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. <end>
 Tracing route to pc5 [10.0.0.156]<end>
 over a maximum of 30 hops:
Hier heb ik een tracert naar pc5 gedaan waardoor hij de 5 van pc5 pakt omdat de regular expression als eerste een cijfer zoekt.

Ik wil dus alleen:
code:
1
2
3
4
5
6
7
1 <1 ms <1 ms <1 ms 10.0.0.140 <end>
  2 1 ms <1 ms <1 ms 81.18.168.41 <end>
  3 8 ms 8 ms 7 ms 81.18.169.1 <end>
  4 8 ms 8 ms 7 ms 81.18.163.25 <end>
  5 9 ms 8 ms 8 ms 62.212.80.37 <end>
  6 9 ms 9 ms 8 ms 62.212.80.65 <end>
...


Wie kan mijn regular expression de goede kant op gooien?
Of wie heeft dit vaker aangepakt? Op Google is het een ramp om een andere regexp te vinden.
Ben zelf aardig regexp n00b!

Twitter @cmeerbeek / Halo Waypoint Profile


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Zoek dan op een dubbele spatie gevolgd door een getal aan het begin van een regel. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 04-02 10:03
-NMe- schreef op dinsdag 08 augustus 2006 @ 12:33:
Zoek dan op een dubbele spatie gevolgd door een getal aan het begin van een regel. ;)
De aardbei troffee is voor mij _/-\o_
Regular expression aangepast naar:
code:
1
/\s\s[^.]([1-9]\s.*)/s


Thnx!

Twitter @cmeerbeek / Halo Waypoint Profile


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Zo is ie nog steeds niet waterdicht. Deze lijkt me iets beter:
code:
1
/^\s+([1-9]+\s.*)$/sm

Zo kunnen er ook grotere getallen dan 9 voor staan, en kan ie niet ergens midden op een regel matchen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.