[Batch] Ermitteln, ob eine Zeichenfolge eine gültige IP-Adresse ist
Hallo zusammen,
ich möchte mit nativen Batch unter Windows 2000 ermitteln, ob die allein in einer Zeile einer Text-Datei stehende beliebige Zeichenfolge (zB. aaa.bbb.ccc.ddd) einer gültigen IP-Adresse entspricht.
Dabei kann diese Adresse alle denkbaren gültigen Werte annehmen, die für IP-Adressen der Version 4 möglich sind.
Die mögliche(n) Lösung(en) sollen wirklich nur natives Batch für Windows 2000 sein.
Beispiel aus einer solchen Datei:
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
127.0.0.1
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
127.0.0.1
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Beliebiger Text auch mit Sonderzeichen
Danke.
ip-finder
Antwort schreiben
Antwort 1 von Ralfman vom 20.08.2020, 12:26 Options
Wenn es immer um die 127.X.X.X geht kannst Du ohne weiteres mit dem Befehl find arbeiten, und das Ergebnis in eine Beliebige Datei zum Weiterverarbeiten schicken.
Ralf
Antwort 2 von ip-finder vom 20.08.2020, 12:34 Options
@Ralfman:
Zitat aus meinem Thread:
Zitat:
Dabei kann diese Adresse alle denkbaren gültigen Werte annehmen, die für IP-Adressen der Version 4 möglich sind.
Gruß
ip-finder
Antwort 3 von pAiNiNveRtEr vom 20.08.2020, 12:50 Options
du kannst dir auch die hände auf den rücken binden und mit den füßen essen....
nur mit "native batch" geht das nich
Antwort 4 von Ralfman vom 20.08.2020, 12:51 Options
Dann mal sorum gefragt:
Was willst Du genau?
Die Momentane IP Adresse ermitteln und in eine Textdatei Schreiben um diese anschließend auszuwerten?
Hast Du ein Serverprotokoll laufen aus dem Du die ZUgriffs IP Adressen Auslesen willst?
Was genau steckt hinter Deiner Anfrage?
Was Du vorhast ist sicherlich mit einer for Schleife möglich - ich Persönlich stehe mit dem for befehl allerdings auf Kriegsfuß.
Daher Verrate uns mal worum es genau geht, wo die Textdatei herkommt, und was der Zweck des ganzen ist.
Ralf
Antwort 5 von ip-finder vom 20.08.2020, 13:40 Options
@Ralfman
diese Textdatei ist vorhanden, auf deren Gestaltung habe ich keinen Einfluss. Die Adressen sollen später, so sie gültig sind, in eine neue .txt-Datei geschrieben werden.
Gruß
ip-finder
Antwort 6 von nina92 vom 20.08.2020, 15:15 Options
was verstehst du denn unter "gültiger" IP addresse ?
willst du ein kleines programm schreiben, das die 4 teile der IP addresse auf wertebereich 1-255 überprüft ?
Antwort 7 von Ralfman vom 20.08.2020, 15:26 Options
Ich Versteh das ganze auch noch nicht so ganz, wo kommt denn die Textdatei her?
In der Zeit in der Du Antwortest Bastel ich mal ein bischen ;-)
Ralf
Antwort 8 von ip_finder vom 20.08.2020, 15:36 Options
@nina92
genau... es soll geprüft werden, ob die einzelnen Blöcke dem gültigen Wertebereich angehören; somit wäre diese Zeichenfolge eine gültige IP-Adresse.
@Ralfman
es handelt sich dabei um die Ausgabedatei eines Programms
Gruß
ip-finder
Antwort 9 von Ralfman vom 20.08.2020, 16:09 Options
Noch 'ne frage, stehen im "Beliebiger Text auch mit Sonderzeichen" auch irgendwelche Zahlen?
Antwort 10 von Ralfman vom 20.08.2020, 16:12 Options
Ok, versuch mal folgendes:
finfstr [1-9].[1-9].[1-9].[1-9] Die_zu_Durchsuchende_Datei.txt
Ralf
Antwort 11 von Ralfman vom 20.08.2020, 16:13 Options
findstr [1-9].[1-9].[1-9].[1-9] Die_zu_Durchsuchende_Datei.txt
Natürlich. Da hat sich wieder ein Tippfehler eingeschlichen :-)
Antwort 12 von ip-finder vom 20.08.2020, 16:20 Options
@ Ralfman
Zitat:
[...] stehen im "Beliebiger Text auch mit Sonderzeichen" auch irgendwelche Zahlen?
In diesem beliebigen Text steht wirklich alles (un)mögliche: Zahlen, normale Zeichen, Sonderzeichen.
Gruß
ip-finder
Antwort 13 von Ralfman vom 20.08.2020, 16:58 Options
OK, aber solange imBeliebigen text nicht eine IP Adresse Steht, sollte findstr Funktionieren.
[1-9] = die zu suchenden Zeichen,
. = ein Platzhalter, also ein Beliebiges Zeichen.
Also wird eine IP Adresse nach dem Muster Zahl(192)Zeichen(.)Zahl(168)Zeichen(.)Zahl(178)Zeichen(.)Zahl(1) gesucht (das beispiel währ eine Fritz.Box).
es werden alle gefundenen Strings aufgelistet die dem Suchmuster entsprechen. mir ist schon klar das der findstr Befehl auf ungewöhnliche weise *Z*t wird, sollte aber auch bei Dir Funktionieren.
Eine Rückmeldung währ super.
Ralf
Antwort 14 von ip-finder vom 21.08.2020, 11:27 Options
@ Ralfman
Das ist ein netter Ansatz, mit dem ich mich sicher noch ein bisschen beschäftigen werde.
Gruß
ip-finder
Antwort 15 von Ralfman vom 21.08.2020, 12:28 Options
Danke fürs Feedback, das ist hier nicht selbstverständlich :-)
Und weil Du Reagiert hast, helfe ich auch gern weiter wenns irgendwo klemmt. Immer nur Posten, ich geb mir dann mühe.
Ralf
Antwort 16 von ip-finder vom 26.08.2020, 16:15 Options
@ Ralfman,
vielen Dank für Deinen Lösungsvorschlag. Dein Ansatz
Zitat:
findstr [1-9].[1-9].[1-9].[1-9] Die_zu_Durchsuchende_Datei.txt
fördert leider alle Zeilen zutage, die Ziffernfolgen enthalten. Das ist recht ungünstig, weil in dem Text außer "normalen" Buchstaben a-z auch reservierte Zeichen (zB. % & ! < > | ) vorkommen. Es ist also möglich, das eine Zeichenfolge
&127.0.0.1%(] ab def
gefunden wird. Eigentlich sollten nur Zeilen gefunden werden, die ausschließlich IP-Adressen und sonst nichts weiter enthalten.
Ich bin erst übermorgen wieder dabei...
Gruß
ip-finder
Antwort 17 von Ralfman vom 26.08.2020, 17:39 Options
haste recht. Wenn sich die IP Adresse wie in Deinem Beispiel aus der Frage allerdings Tatsächlich am Zeilenanfang befindet, kannst Du das ganze auch ab am Zeilenanfang suchen lassen.
findstr /B [1-9].[1-9].[1-9].[1-9] Die_zu_Durchsuchende_Datei.txt
Damit sollte Das Problem erledigt sein, da
Zitat:
Zeilen gefunden werden, die ausschließlich IP-Adressen und sonst nichts weiter enthalten.
Wenn nicht, geb mir mal Deine eMail Adresse, und ich fordere von Dir ein Protokoll an, an dem ich Herumprobieren kann.
Danke übrigens für die Rückmeldung (ist hier nicht selbstverständlich, freut mich gerade deshalb um so mehr).
Ralf
Antwort 18 von ip-finder vom 28.08.2020, 10:53 Options
@ Ralfman,
die Idee, FINDSTR mit der Option /b zu ergänzen, ist gut. Jetzt werden alle Zeilen gefunden, an deren Anfang eine Ziffernfolge steht.
Allerdings werden auch diejenigen Zeilen ausgegeben, die mit Buchstaben bzw. Sonderzeichen enden.
Das wird mich sicher noch beschäftigen.
Gruß
ip-finder
Antwort 19 von Ralfman vom 28.08.2020, 11:13 Options
Kann ich leider nicht nachvollziehen, da angegeben ist das er ausschließlich nach Zahlen suchen soll.
Was hälst Du von der Idee Dich hier Anzumelden, und mir dann über den Pager Deine eMail Adresse zukommen läßt. Ich kann Dir dann meine schicken, und Du läßt mir mal ein Protokoll zukommen an dem ich das Problen lösen kann.
Der Pager Funktioniert leider erst wenn Du Dich hier anmeldest, und eine eMail Adresse hier ins Forum setzen ist nicht so prall. Von mir aus kannst Du die logdatei auch ändern, am Auswerten hab ich sicherlich kein interesse. das Problem zieht sich meiner Meinung nach nur schon zu lange hin.
Ralf
Antwort 20 von ip-finder vom 28.08.2020, 11:45 Options
@ Ralfman,
teste es mal mit einer Textdatei,
die folgende Zeilen enthält:
Zitat:
127.0.0.1
Das ist irgendein beliebiger Text.
192.168.0.1abc
Leider kann ich erst am Montag wieder hier sein.
Gruß
ip-finder