per Batch Gateway auslesen und als Proxy eintragen
Hallo,
als Erstes sollte ich evtl. erwähnen, dass ich so gut wie keine Ahnung von Batch habe ... nur so viel vorweg
Mein Problem ist folgendes:
Ich bräuchte eine Batch-Datei, welche mir den aktuellen Standardgateway ausliest (ich dachte da evtl. an ipconfig) und diesen dann im IE und im Firefox als Proxy (am besten gleich mit Port 8080) einträgt. Sehr hilfreich wäre hier vll auch eine Fehlermeldung, falls keiner eingetragen sein sollte und/oder eine varibale Verzögerung.
Ich wäre auch sehr dankbar, wenn mir das Script dann auch noch jemand etwas erklären könnte, damit ich es noch weiter anpassen kann, da ich diesen Proxy außerdem im McAfee VirusScan Enterprise 8.5i eintragen muss. Ich dachte mir, dass es vll die eleganteste Lösung wäre, die Variablen dann direkt in die Registry zu schreiben ... aber wie gesagt, ich hab ja eigentlich keine Ahnung und es ist nur eine Vermutung
Ich wäre sehr dankbar, falls mir hier jemand weiterhelfen könnte.
Mfg Corain
als Erstes sollte ich evtl. erwähnen, dass ich so gut wie keine Ahnung von Batch habe ... nur so viel vorweg
Mein Problem ist folgendes:
Ich bräuchte eine Batch-Datei, welche mir den aktuellen Standardgateway ausliest (ich dachte da evtl. an ipconfig) und diesen dann im IE und im Firefox als Proxy (am besten gleich mit Port 8080) einträgt. Sehr hilfreich wäre hier vll auch eine Fehlermeldung, falls keiner eingetragen sein sollte und/oder eine varibale Verzögerung.
Ich wäre auch sehr dankbar, wenn mir das Script dann auch noch jemand etwas erklären könnte, damit ich es noch weiter anpassen kann, da ich diesen Proxy außerdem im McAfee VirusScan Enterprise 8.5i eintragen muss. Ich dachte mir, dass es vll die eleganteste Lösung wäre, die Variablen dann direkt in die Registry zu schreiben ... aber wie gesagt, ich hab ja eigentlich keine Ahnung und es ist nur eine Vermutung
Ich wäre sehr dankbar, falls mir hier jemand weiterhelfen könnte.
Mfg Corain
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82272
Url: https://administrator.de/contentid/82272
Ausgedruckt am: 23.11.2024 um 13:11 Uhr
12 Kommentare
Neuester Kommentar
Hi corain,
versuche es einmal damit.
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2 skip=1 delims=:" %%a in ('IPCONFIG.EXE') do (
set Gateway=%%a
if "!Gateway:~8,15!"=="Default Gateway" (
for /F "tokens=1 delims= " %%i in ("%%b") do (
echo "%%i"
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /t REG_SZ /d %%i:8080 /f
)
)
)
pause
Gruß
Stefan
versuche es einmal damit.
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2 skip=1 delims=:" %%a in ('IPCONFIG.EXE') do (
set Gateway=%%a
if "!Gateway:~8,15!"=="Default Gateway" (
for /F "tokens=1 delims= " %%i in ("%%b") do (
echo "%%i"
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /t REG_SZ /d %%i:8080 /f
)
)
)
pause
Gruß
Stefan
Moin Corain,
im deutschen Windows bzw. Fensters heißt der "Default Gateway" nicht etwa "Vorgabetorweg", sondern "Standardgateway".
Die FOR/F-Anweisung zum Rausflöhen der IP-Adresse des Gateways wäre entsprechend z.B.:
Grüße
Biber
im deutschen Windows bzw. Fensters heißt der "Default Gateway" nicht etwa "Vorgabetorweg", sondern "Standardgateway".
Die FOR/F-Anweisung zum Rausflöhen der IP-Adresse des Gateways wäre entsprechend z.B.:
for /F "tokens=2 delims=:" %i in ('IPCONFIG ^| findstr /i "Standardgateway"') do @echo %i
nur zum Test am CMD-Prompt.Grüße
Biber
ich habe folgendes Problem mit dieser Batch:
@echo off & setlocal
for /F "tokens=2 delims=:" %%i in ('IPCONFIG ^| findstr /i "gateway"') do set %%i="%Default Gateway%"
IF "%Default Gateway%" == "1.1.1.2" GOTO w
IF "%Default Gateway%" == "1.1.2.2" GOTO y
:W
echo der 1er Bereich !!
pause
:Y
echo der 2er Bereich !!
pause
Wie kann man den gewonnenen Wert auswerten, damit die IF-Abfrage greift?:
Danke und Gruss
wuggale
@echo off & setlocal
for /F "tokens=2 delims=:" %%i in ('IPCONFIG ^| findstr /i "gateway"') do set %%i="%Default Gateway%"
IF "%Default Gateway%" == "1.1.1.2" GOTO w
IF "%Default Gateway%" == "1.1.2.2" GOTO y
:W
echo der 1er Bereich !!
pause
:Y
echo der 2er Bereich !!
pause
Wie kann man den gewonnenen Wert auswerten, damit die IF-Abfrage greift?:
Danke und Gruss
wuggale
Moin wuggale,
willkommen im Forum.
versuch es so:
Grüße
Biber
willkommen im Forum.
versuch es so:
@echo off & setlocal
for /F "tokens=2 delims=:" %%i in ('IPCONFIG ^| findstr /i "gateway"') do set "DefaultGateway=%%i"
REM wenn die IPConfig-Ausgabe zerlegt wird,
REM können allerdings auch zwei Zeilen mit "Standardgateway" gefunden werden.
REM Zum Beispiel bei einem Loopback-Adapter. Dieses Gateway ist dann LEER.
REM Da nach "delims=:" zerhackt wird und der Text "....gateway: .xxx.yyy.zzz.nnn" lautet,
REM ist ein führendes Leerzeichen vor der IP! beim Vergleich zu berücksichtigen.
IF "%DefaultGateway%" == " 1.1.1.2" GOTO w
IF "%DefaultGateway%" == " 1.1.2.2" GOTO y
Echo Keines der erwarteten Gateways isses, sondern %Defaultgateway%!
Goto :eof
:W
echo der 1er Bereich !!
pause
:Y
echo der 2er Bereich !!
pause
Grüße
Biber
Hallo Biber,
ich hab noch einen speziellen Sonderfall zu diesem Thema, nähmlich wenn sich ein Home-Office User über VPN einlogged:
In diesem Fall ist keine Gatewayadresse bekannt - die müsste ermittelt werden und der Wert in die Abfrage eingefügt werden.
Daran haperts leider ;-(
Mit der Sprungmarke, z.B. "Z" springe ich in die Sektion, wo der WINS ermittelt wird und dadurch der User immer mit dem richtigen Standort
verbunden ist. (er ist ja auch unterwegs)
Die Anweisung - IF "%DefaultGateway%" == " %%a.%%b.%%c.d%%" GOTO Z - funktioniert nicht, weil sich an dieser Stelle offensichtlich keine werte übergeben lassen.
Wäre dankbar für einen Tipp,
Gruß Wuggale
ich hab noch einen speziellen Sonderfall zu diesem Thema, nähmlich wenn sich ein Home-Office User über VPN einlogged:
In diesem Fall ist keine Gatewayadresse bekannt - die müsste ermittelt werden und der Wert in die Abfrage eingefügt werden.
Daran haperts leider ;-(
Mit der Sprungmarke, z.B. "Z" springe ich in die Sektion, wo der WINS ermittelt wird und dadurch der User immer mit dem richtigen Standort
verbunden ist. (er ist ja auch unterwegs)
Die Anweisung - IF "%DefaultGateway%" == " %%a.%%b.%%c.d%%" GOTO Z - funktioniert nicht, weil sich an dieser Stelle offensichtlich keine werte übergeben lassen.
Wäre dankbar für einen Tipp,
Gruß Wuggale
Moin wuggale,
den Sonderfall bekommen wir sicherlich auch noch gebacken, aber...
Mir fehlt im Moment etwas der Überblick, was wann passieren soll.... bzw. was sind die Voraussetzungen, von denen du weitere Programmlogik ableiten willst?
Einfacher gefragt: Die "Normalfälle" scheinen wir ja abhandelt zu haben - die sind dann offensichtlich immer über Standort/gateway X,Y oder Z erkennbar.
Willst du jetzt
Sorry, aber ich habe jetzt wirklich nicht ganz verstanden, was in dem Ablauf die Henne und was das Ei sein soll.
Grüße
Biber
den Sonderfall bekommen wir sicherlich auch noch gebacken, aber...
Mir fehlt im Moment etwas der Überblick, was wann passieren soll.... bzw. was sind die Voraussetzungen, von denen du weitere Programmlogik ableiten willst?
Einfacher gefragt: Die "Normalfälle" scheinen wir ja abhandelt zu haben - die sind dann offensichtlich immer über Standort/gateway X,Y oder Z erkennbar.
Willst du jetzt
- eine Prüfung/Abfrage "isses ein User via VPN?" vorher machen (wenn ja, woran erkennst du einen VPN-User)?
- oder nur machen, wenn die übliche IP-Config-Prüfung fehlschlägt (also weder Gateway X, Y noch Z via IPConfig gefunden wird)?
- oder soll der VPN-User einen ganz anderen Batch bekommen?
Sorry, aber ich habe jetzt wirklich nicht ganz verstanden, was in dem Ablauf die Henne und was das Ei sein soll.
Grüße
Biber
Hi Biber,
ja, ist ein bisschen schwierig zu formulieren
die Normalfälle sind abgearbeitet - und die Liste passt.
es soll nur zum Schluss der (VPN)-Fall behandelt werden, wenn kein Gateway der Liste zutrift, dass über eine andere FOR-Schleife versucht wird, das Gateway zu ermitteln um
in die passende Sprungmarke reinzukommen. Ab da klappt es jetzt schon.
Mit der IF-Abfrage wird halt ein Wert erwartet, den ich nicht weiß (jeder hat seinen Router anders eingestellt) um damit halt eine Aktion auszuführen. Aber vielleicht brauchts gar kein
kompliziertes Konstrukt, da es egal ist welche IP da ankommt.
Gruß Wuggale
ja, ist ein bisschen schwierig zu formulieren
die Normalfälle sind abgearbeitet - und die Liste passt.
es soll nur zum Schluss der (VPN)-Fall behandelt werden, wenn kein Gateway der Liste zutrift, dass über eine andere FOR-Schleife versucht wird, das Gateway zu ermitteln um
in die passende Sprungmarke reinzukommen. Ab da klappt es jetzt schon.
Mit der IF-Abfrage wird halt ein Wert erwartet, den ich nicht weiß (jeder hat seinen Router anders eingestellt) um damit halt eine Aktion auszuführen. Aber vielleicht brauchts gar kein
kompliziertes Konstrukt, da es egal ist welche IP da ankommt.
Gruß Wuggale
Moin wuggale,
wenn ich dich richtig verstanden habe, dann wäre doch die nächstliegende Möglichkeit:
Dort, wo oben in der Skizze steht "Echo Keines der erwarteten Gateway isses" noch eine Zeile drunterzusetzen, die den Benutzer mit "Set /P" fragt, ob er in das (Abteilungs-?) Netz X, Y oder Z will bzw gehört.
Ich meine, wenn der User es schon mit seinem Usernamen, Passwort und Rechten soweit geschafft hat, dass er deinen Batch aufgerufen hat, dann kann er doch jetzt einfach gefragt werden, was er nun will.
Oder habe ich das Problem falsch verstanden?
Grüße
Biber
wenn ich dich richtig verstanden habe, dann wäre doch die nächstliegende Möglichkeit:
Dort, wo oben in der Skizze steht "Echo Keines der erwarteten Gateway isses" noch eine Zeile drunterzusetzen, die den Benutzer mit "Set /P" fragt, ob er in das (Abteilungs-?) Netz X, Y oder Z will bzw gehört.
Ich meine, wenn der User es schon mit seinem Usernamen, Passwort und Rechten soweit geschafft hat, dass er deinen Batch aufgerufen hat, dann kann er doch jetzt einfach gefragt werden, was er nun will.
Oder habe ich das Problem falsch verstanden?
Grüße
Biber
Hi Biber,
hast recht, am Ende der Liste füge ich noch eine Abfrage nach dem Wins an in der Form:
for /F "tokens=6 delims=:" %%i in ('IPCONFIG ^| findstr /i "WINS"') do set "IP=%%i"
IF "%IP%" == " 172.16.57.1" GOTO W
da eh schon alle Möglichkeiten durch sind, bleibt das ja nur noch übrig. Manchmal hat man einfach ein Brett vorm Kopf.
Auf jeden Fall vielen Dank für den Hinweis - dann kann's ja weitergehen
Gruß Wuggale..
hast recht, am Ende der Liste füge ich noch eine Abfrage nach dem Wins an in der Form:
for /F "tokens=6 delims=:" %%i in ('IPCONFIG ^| findstr /i "WINS"') do set "IP=%%i"
IF "%IP%" == " 172.16.57.1" GOTO W
da eh schon alle Möglichkeiten durch sind, bleibt das ja nur noch übrig. Manchmal hat man einfach ein Brett vorm Kopf.
Auf jeden Fall vielen Dank für den Hinweis - dann kann's ja weitergehen
Gruß Wuggale..