Netzlaufwerke nur verbinden wenn ein PC in einer bestimmten IP-Range ist
Hallo Forum,
ich möchte, dass die Netzlaufwerke nur verbunden werden, wenn sich ein Laptop in bestimmten IP-Ranges befindet.
Allerdings komme ich gerade nicht weiter.
Kann mir evt. jemand weiter helfen??
Das habe ich bis jetzt im script aber irgendwie ist es noch nicht OK
ich möchte, dass die Netzlaufwerke nur verbunden werden, wenn sich ein Laptop in bestimmten IP-Ranges befindet.
Allerdings komme ich gerade nicht weiter.
Kann mir evt. jemand weiter helfen??
Das habe ich bis jetzt im script aber irgendwie ist es noch nicht OK
@echo off
set IP-Adress=FOR /F "tokens=5" %%a in ('netsh interface ipv4 show route ^| find "0.0.0.0/0"') do @FOR /F "tokens=2" %%A in ('netsh interface ipv4 show addresses %%a ^| find "IP-Ad"')do @echo %%A
set R1=10.57.87.0/24
set R2=10.57.142.0/24
set R3=10.58.77.0/24
set R4=10.56.214.0/24
set R5=10.45.167.0/24
set R6=192.168.178.0/24
if /i $IP-Adress ==$R1 goto :netuse
if /i $IP-Adress ==$R2 goto :netuse
if /i $IP-Adress ==$R3 goto :netuse
if /i $IP-Adress ==$R4 goto :netuse
if /i $IP-Adress ==$R5 goto :netuse
if /i $IP-Adress ==$R6 goto :netuse
:netuse
net use x: \\centralfileserver02\it /persistent:no
net use y: \\localfileserver01\users /persistent:no
net use g: \\localfileserver01\groups /persistent:no
net use Z: \\10.56.214.2\groups /persistent:no
:ende
echo: Nicht im Firmen-Netz. Laufwerke werden nicht verbunden
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 373501
Url: https://administrator.de/contentid/373501
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
12 Kommentare
Neuester Kommentar
Was haben denn Geranylpyrophosphate damit zu tun?
@to - sieh dir das mal an: https://www.windowspro.de/wolfgang-sommergut/vergleich-gruppenrichtlinie ... *eine andere Interpretation von GPP
@to - sieh dir das mal an: https://www.windowspro.de/wolfgang-sommergut/vergleich-gruppenrichtlinie ... *eine andere Interpretation von GPP
Du bist im falschen Forum
Geranylpyrophosphat ist ein Biomolekül, das biosynthetisch durch eine Kopf-zu-###-Kondensation aus den beiden ...
Du hast keinen Adminzugriff, aber darfst das Logonscript editieren ?!
Was zum ... egal ...
OK dann fange damit an, das man in Batchfiles Variablen nicht mit $ abruft ...
Dann ist dieses FOR Konstrukt ... naja das funktioniert halt weder syntaktisch als Befehl, noch ergibt das einen grossen Sinn, wenn man ansieht was das machen soll. Was genau willst du damit erreichen? Du suchst doch eigentlich nur die IP Adresse des Clients und schaust ob das in einem der bekannten Netze ist.
Dann durchläuft dein Script auf jeden fall IMMER in den den :netuse und dann in den :ende part. Egal wie.
Entweder du baust dir hier ein echtes :ende, was dann am Ende ist, und springst da als "jetzt Script beenden" rein, oder du nutzt gleich das korrekte :EOF
Und dein vorhandenes :ende ist ja kein ENDE sondern ein KEINNETZWERKGEFUNDEN.
Was du da erreichen willst ist fachlich zwar eine Kleinigkeit (sowie fachlich fragwürdig) und ich könnte das jetzt hier kurz pasten, aber ich denke bei dir fehlt es an grundlegendem Verständnis von Batchfiles.
Deshalb werde ich dir zwar gerne im einzelnen Weiterhelfen, aber überlegen musst du schon selbst.
Was zum ... egal ...
OK dann fange damit an, das man in Batchfiles Variablen nicht mit $ abruft ...
Dann ist dieses FOR Konstrukt ... naja das funktioniert halt weder syntaktisch als Befehl, noch ergibt das einen grossen Sinn, wenn man ansieht was das machen soll. Was genau willst du damit erreichen? Du suchst doch eigentlich nur die IP Adresse des Clients und schaust ob das in einem der bekannten Netze ist.
Dann durchläuft dein Script auf jeden fall IMMER in den den :netuse und dann in den :ende part. Egal wie.
Entweder du baust dir hier ein echtes :ende, was dann am Ende ist, und springst da als "jetzt Script beenden" rein, oder du nutzt gleich das korrekte :EOF
Und dein vorhandenes :ende ist ja kein ENDE sondern ein KEINNETZWERKGEFUNDEN.
Was du da erreichen willst ist fachlich zwar eine Kleinigkeit (sowie fachlich fragwürdig) und ich könnte das jetzt hier kurz pasten, aber ich denke bei dir fehlt es an grundlegendem Verständnis von Batchfiles.
Deshalb werde ich dir zwar gerne im einzelnen Weiterhelfen, aber überlegen musst du schon selbst.
Aufs Netzwerk warten abschalten. Dann gehts auch schneller mit der Anmeldung
https://www.windows-faq.de/2017/10/19/beim-neustarten-des-computers-und- ...
https://www.windows-faq.de/2017/10/19/beim-neustarten-des-computers-und- ...
besser
Sternchen als Wildcard geht hier nicht. Da musst du mit hilfen arbeiten.
so z.B.
Pipe die gefundene IP in das find und gucke ob in der IP der vergleichswert des Netzes vorkommt.
Nicht wirklich 100% präzise, aber sollte deinen Anforderungen genügen.
Wenn du das genauer haben willst, solltest du das dringend in Powershell umsetzen.
Aber auch das ist nicht der heilige Gral. So kann ich hier z.B auch nicht ohne zusätzlichen Aufwand prüfen ob es sich um das korrekte Subnet handelt. Muss man sich auch wieder zusammenfriemeln. Wüsste spontan nicht wo ich sowas noch benötige. Selbst wenn, dann würde ich das per PS lösen
Sternchen als Wildcard geht hier nicht. Da musst du mit hilfen arbeiten.
@echo off
FOR /F "tokens=5" %%a in ('netsh interface ipv4 show route ^| find "0.0.0.0/0"') do @FOR /F "tokens=2" %%A in ('netsh interface ipv4 show addresses %%a ^| find "IP-Ad"')do set ip4=%%A
@echo %ip4% | find "192.168.17."
if %errorlevel% == 0 ( echo 17found )
@echo %ip4% | find "192.168.178."
if %errorlevel% == 0 ( echo 178found )
so z.B.
Pipe die gefundene IP in das find und gucke ob in der IP der vergleichswert des Netzes vorkommt.
Nicht wirklich 100% präzise, aber sollte deinen Anforderungen genügen.
Wenn du das genauer haben willst, solltest du das dringend in Powershell umsetzen.
hast du für das Auslesender IP-Adresse des Clients eine bessere Möglichkeit?
per CMD (und ohne Dritt-Programme) hat man eigentlich immer diverse Probleme. Mehrere Netzwerkkarten, Virtuelle Adapter, schlechte Vergleichsmöglichkeiten usw. Ich habe es bisher immer per PING gemacht:for /f "delims= tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^| findstr [') do set ip4=%%a