Batch IP-Filter
Hallo,
ich habe folgendes Problem. Ich soll eine vorhandenes Programm so abändert werden, dass dieses nur noch für bestimmte IP-Adressbereiche ausführbar sein soll.
@echo
net use """Server""""
"""Verzeichniss"""" -c 172.18.77.223
pause
Es ist bisher so, dass diese Datei ein Netzwerktest ist (Geschwindigkeit). Es gibt für jeden Standort einen. Nun soll es aber so sein, dass ein Mitarbeiter an Standort A z.b nicht den von Standort B ausführen kann, da er sonst die Leitung blockiert. Jeder Standort hat einen bestimmen IP-Adressbereich. (172.18.*.*) Die ersten 2 Oktette der IP-Adresse bleiben immer gleich.
Ich hab mir gedacht, dass man das irgendwie über Auslesen einer txt-Datei machen kann, in der alle zulässigen IP-Adressen stehen.
Meine Idee wäre;
1) die IP-Adresse des eigenen Rechners auszulesen.
2)Wenn man nun den Test fü Standort A auswählt , vergleicht das Programm die eigene IP-Adresse mit denen für den der Test zulässig ist. (Jeder Standort hat eine eigene TXT datei mit den Adressen).
3) ist die eigene IP-adresse bei den zulässigen, wird der Test ausgeführt, wenn sie nicht drinn steht, wird das Programm beendet.
Helft mir mal bitte.
Gruß Bart
Content-ID: 124475
Url: https://administrator.de/forum/batch-ip-filter-124475.html
Ausgedruckt am: 21.04.2025 um 10:04 Uhr
Manuel

Jeder der Befehle wurde Hier im Forum mindestens mehrmals durchgekaut.
Gruß
An genau der Stelle war ich auch .... etwas weiter oben in der Einleitung...
Immer wieder lustig mit euch...
</OT>
ipconfig|findstr "Adr"|findstr /c:" 192.168.">nul || goto :IsNix
Zuerst wird ein ipconfig ausgelöst. Dann wird in dem Ergebnis eine Zeile gesucht in der Adr vorkommt. Gibt es diese wird darin gesucht, ob es den String 192.168. gibt. Die Konsolenausgabe wird ins NUL-Device geschickt - also ins Nirvana.
Ist das Ergebnis falsch/false wird in das Label isnix verzweigt. Ist das Ergebnis der Prüfungen hingegen wahr/true geht es einfach weiter in der Batch.
Also musst du in deiner Batch nur genau was tun?
Richtig. Diese Zeile einbauen und 192.168. durch bspw. 172.18.32. ersetzen. Damit hast du die Prüfung auf das erste mögliche Netzwerk eingebaut.


Das ist ziemlich ungeschickt. Wer baut denn auch ohne Not ein Netz,
dass 32.766 Adressen umfasst?
Die haben selbstverständlich 32.700 Clients und 60 Server...
bitte nicht, dass der DHCP-Range auch noch das komplette Netz umfasst
Ganz im Ernst, da hat jemand den Regenschirm aufgespannt als es Brain regnete und oder will uns vereimern....
Geschwindigkeitstest bestehend aus @ echo, Net use und Pause...
Trial and Error - so haben wirs gelernt - das ist aber heute wo man als ungelernter Bätchler an Brograhmme dran darf die man wohl nie verstehen wird - halt nicht mehr drin.
Btw: Anstatt Hier die Suchfunktion nicht zu benutzen, würde ich ja mal den Brotgrahhmierer" in der Firma frägen, der wo das Brograhmm das was geänderiert werden sollte uhrsbrühnklich geschreibselt hat mal frägen tun.
Upps, meine Tüte Deutsch hat schon wieder ein loch.

Wie du kommst gegangen, so wirst du auch empfangen! (Altes Sprichwort)
Lies dir einfach mal ein paar andere Beiträge durch und dur wirst sehen, dass die Kommunikation ganz schnell ganz anders abläuft, wenn der Fragesteller kooperativ ist.
Im Gegensatz zu dir werden wir alle nicht dafür bezahlt dir irgendwas zu scripten, Fehler zu suchen oder was auch immer. Ganz im Gegenteil: Unsere Chefs dulden unsere Mitarbeit hier, weil sie wissen, dass wir im Zweifelsfall hier auch Hilfe bekommen.
Ein Forum kann und soll daher immer nur Hilfe zu Selbsthilfe sein. Leider gibt es immer wieder Leute, die das nicht schnallen und denken sie bekommen alles auf dem Silbertablett. Wir sind aber nicht bei "Wünsch dir was".
Und damit ist das Thema wieder bis auf Weiteres für mich durch.

Sehr lustig..... sehr lustig. Super Freundlichkeit hier im Forum.
Macht richtig Spaß!!
So und nun mal gaaaanz langsaaaam und einen hast du noch...
"Was" soll denn das Script können?
Bisher lese ich da nix wirklich sinnhaftiges raus.
Und denk daran, das ist auch eine Art "schulung" - ohne sein Ziel erklären zu können, kommt keiner ans Ziel.
Ergo:
Steht in deiner nächsten Antwort etwas zusammenhängendes, was keiner Nachfrage bedarf - kannst du mit Hilfe rechnen. Ansonsten einfach mal die bisherigen Antworten der dir hier schreiben Mitschreibern in anderen Fragen durchlesen - ein paar Stichworte wie Batch Netz Ping Protokoll Datei oder was dir sonst noch einfallen könnte - und du wirst sehen, das Rad an dem du drehen willst wurde schon erfunden. Du mußt es nur noch finden.
Gruß
2)Wenn man nun den Test fü Standort A auswählt , vergleicht das Programm die eigene IP-Adresse mit denen für den der Test zulässig ist. (Jeder Standort hat eine eigene TXT datei mit den Adressen).
3) ist die eigene IP-adresse bei den zulässigen, wird der Test ausgeführt, wenn sie nicht drinn steht, wird das Programm beendet.
Zu 1.
Die eigene IP Adresse bekommst du mit IPCONFIG angegeben. Leider stehen da drumherum noch einige andere Informationen die du Momentan nicht benötigst. Daher musst du einen Filter verwenden (FINDSTR). Deine IP Adresse sithet in der Zeile inder "IP-Adresse" steht. Daher suchst du nach dem und erhälst die passende Zeile (ipconfig|findstr "Adr"). Daraus brauchst du allerdings nur die IP Adresse.Dafür kannst du den FOR Befehl nutzen. Das alles in allem sieht dan so aus:
Zu 2 und 3.
Du willst also suchen om die Adresse %adr% in der Datei (z.B. StandortA.txt) enthalten ist. Das geht auch mit Findstr. Wie genau siehst du ind er Hilfe zum Findstr Befehl.
Damit das ganze eleganter wird kannst du die Ausgabe des Befehls ausblenden indem du sie nach NUL umleitest ( >NUL für eventuelle Fehlermeldungen 2>NUL) und nur den Errorcode den der Findstr Befehl zurückliefert auswertest. Das reicht schon um festzustellen ob die Adresse in der Datei gefunden wurde oder nicht.
bzw. && mit nachfolgendem Befehl. Das Zeichen && bedeutet das der nachfolgende Befehl nur ausgeführt wird wenn der Fehlercode =0 war, das |
Ich denke das sollte erstmal helfen und genügend Infos sein wo du suchen und wie du vorgehen kannst. Diese Befehle kommen auch häufig in anderen Batches vor.
Noch so als Tip. Du schreibst in deiner Erklärung

Ansonsten enthält Adr die IP der letzten Verbindung.
Für die Eingabezeile:
for /f "tokens=2 delims=" %a in ('ping -n 1 %computername%') do set "adr=%a"
Den Rest lasse ich mal unkommentiert, da unser TO sich hier imo daneben benommen hat.