kopfleer
Goto Top

If-Abfrage in VBS

...

Hallo,

ich habe folgende Abfrage probiert (die Variable single_ip beinhaltet die IP-Adresse, z.B. 172.31.137.110) :

if single_ip = "172.31.137.116" then
Wscript.echo("172er Netz")
else
Wscript.echo("192er Netz")
end if

Das funktioniert soweit. Ich möchte nun aber nicht gezielt auf EINE IP-Adresse vergleichen, sondern auf einen gesamten Bereich, z.B. 172.31.137.* .

Wie gestalte ich die Abfrage. Bitte um Hilfe eines Wissenden. Vielen Dank.

Tom

//EDIT

Konnte das Problem selbst lösen.

Dim strText As String

strText = "Auto, Motorrad, Fahrrad"

Dim strTeil As String
Wenn man das Wort "Auto" heraustrennen will, nimmt man am besten die "Left" Funktion. Diese Funktion nimmt 2 Argumente entgegen. Den Mustertext und die Anzahl der Zeichen, die herauskopiert werden sollen.

strTeil = Left(strText, 4)

Tom

Content-Key: 57604

Url: https://administrator.de/contentid/57604

Printed on: April 26, 2024 at 14:04 o'clock

Member: stiehl
stiehl Apr 25, 2007 at 19:26:07 (UTC)
Goto Top
und was machst du, wenn du die IP 172.31.137.1 hast? dann liefert dein befehl "172.31.1" zurück. du musst schon nach dem letzten in dem string vorkommenden punkt suchen und danach alles abschneiden. wie die funktion dazu heisst, weiss ich im moment allerdings auch nicht. oder du baust dir direkt nen regulären ausdruck face-wink
Member: KopfLeer
KopfLeer Apr 25, 2007 at 20:32:58 (UTC)
Goto Top
Hallo, ich verstehe nicht ganz wo Du das Problem siehtst. Wenn ich die Funktion strTeil = Left(strText,10) nutze, bleibt mir von dem ursprünglichen Wert (z.B. 172.31.137.100) genau 172.31.137 über. Diesen Wert vergleiche ich dann wieder per IF-Abfrage mit der ursprünglich ermittelten IP-Adresse - wenn das Ergebnis True ist, dann ist der Rechner aus diesem Netz, und zwar egal ob die IP-Adresse 172.31.137.1 oder 172.31.137.100 oder sonst was aus diesem Netzt ist - und das ist genau das was ich wissen will - ob der Rechner aus diesem Netz (maskiert mit 255..255.255.0) ist.

Ich verstehe nicht wie Du darauf kommst das mein Befehl 172.31.1 zurück liefert ???

Tom
Member: stiehl
stiehl Apr 25, 2007 at 20:52:17 (UTC)
Goto Top
ups, hatte irgendwie right() gelesen... face-smile

naja, für den Anwendungsfall ist es dann OK. Eleganter wäre es halt nur, nach nem Punkt zu trennen und nicht nach ner definierten Anzahl an Zeichen. Damit könntest du dann auch verschieden lange IP-Adressen untersuchen
Member: Biber
Biber Apr 25, 2007 at 20:54:03 (UTC)
Goto Top
Moin Kopfleer,

was stiehl richtigerweise meint ist, dass Dein Algorithmus wackelig ist, weil er fest verdrahtet 10 Zeichen vor dem letzten Token unterstellt.

Dabei kann theoretisch aus mal statt einer IP 172.31.137.xxx aich eine IP 10.10.1.xxx dabeisein.

Oder, um Dein Beispiel von oben noch mal zu bemühen:
'lastcommaDemo.vbs  
strText1 = "Auto, Motorrad, Fahrrad"  
wscript.echo "strText1: " & strText1  
wscript.echo "Left(strText1,4): " & Left(strText1,4)  
strText2 = "Motorrad, Fahrrad, Auto"  
wscript.echo "strText2: " & strText2  
wscript.echo "Left(strText2,4): " & Left(strText2,4)  

lastcommapos=InstrRev(strtext1, ",")  
wscript.echo "letztes Token Strtext1: " & Mid(StrText1,lastcommapos+1)  
lastcommapos=InstrRev(strtext2, ",")  

wscript.echo "letztes Token Strtext2: " & Mid(StrText2,lastcommapos+1)  
>cscript //nologo e:\lastCommaDemo.vbs
strText1: Auto, Motorrad, Fahrrad
Left(strText1,4): Auto
strText2: Motorrad, Fahrrad, Auto
Left(strText2,4): Moto
letztes Token Strtext1:  Fahrrad
letztes Token Strtext2:  Auto

--->wenn Du erst die Position des letzten Kommas in "Auto, Motorrad, Fahrrad" oder die Position des letzten Punkts in einer IP ermitteltst, dann wird es flexibler und allgemeiner verwendbar.

Gruss
Biber
Member: KopfLeer
KopfLeer Apr 25, 2007 at 20:57:12 (UTC)
Goto Top
Hi, ist mir später auch eingefallen das Du vielleicht von rechts gezählt haben könntest. Mit dem Punkt zu trennen (also nach dem dritten Octett) wäre natürlich noch eleganter. Aber in meinem Fall ist das so ausreichend. Tom
Member: KopfLeer
KopfLeer Apr 25, 2007 at 21:43:08 (UTC)
Goto Top
Hi Biber,
vielen Dank - einen großen Baumstamm für Dich face-wink . Die einfache Variante die ich oben geschrieben habe, habe ich zwar jetzt bereits in meinem Script verbaut, aber ich werde Deinem Vorschlag folgen und dementsprechend mein Script ändern - einfach nur weil es Spaß macht das "ordentlich" zu machen.

Aber es ist in meinem Fall eigentlich wirklich nicht nötig, da ich nur die Rechner mit dem Script erwischen will die 172.31.137.xxx als IP haben - alle anderen Rechner mit anderen IP's aus anderen Netzen interessieren mich nicht. Und die erreiche ich auch mit meiner Lösung sicher.

Ich habe es nun so gemacht gehabt :
single_ip = 172.31.137.14 (wird natürlich im Script ermittelt)
single_net = Left(single_ip,10)
if single_net = "172.31.137" then
Wscript.echo("Für Rechner die hierzu passen wird hier was gemacht")
else
single_net = Left(single_ip,7)
if single_net = "192.168" then
Wscript.echo("Rechner aus dem 192er Netz, die aber nicht interessieren.")
end if
end if

Viele Grüße

Tom
Member: Biber
Biber Apr 26, 2007 at 06:15:19 (UTC)
Goto Top
Moin Kopfleer,
einfach nur weil es Spaß macht das "ordentlich" zu machen.

FULL ACK. Du hast den Sinn und Zweck dieses Forums verstanden.

Grüße
Biber