corain
Goto Top

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 face-wink

Ich wäre sehr dankbar, falls mir hier jemand weiterhelfen könnte.
Mfg Corain

Content-Key: 82272

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

Printed on: April 19, 2024 at 13:04 o'clock

Member: stbewo
stbewo Mar 04, 2008 at 12:40:52 (UTC)
Goto Top
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
Member: Corain
Corain Mar 04, 2008 at 13:15:26 (UTC)
Goto Top
kk ... probiert habe ich es, aber es funktioniert nicht.
Also so wie ich schon in anderen Threads gelesen habe, muss wohl noch dieser ProxyEnable auf 1 gesetzt werden, aber das scheint nicht das Problem zu sein, da er den Wert, welcher in der Batch angegen ist nicht in der Reg setzt.

Ich danke Dir trotzdem vielmals für Deine Mühe. Ich dachte eher daran, den Standardgateway mit dem Befehl ipconfig>>ipconfig.txt in eine Textdatei zu schreiben und dann mit FINDSTR dies irgendwie auszulesen und dann einzutragen, aber ich komme halt nicht so ganz mit den Variablen und der for-Anweisung zurecht.
Sollte es natürlich trotzdem mit Deinem Weg möglich sein, wäre ich natürlich sehr dankbar dafür.

Zum Thema Verzögerung:
Ich meinte damit so etwas wie eine Zeit bevor er startet, aber ich denke das geht mit dem Taskplaner besser ^^

Danke trotzdem schon mal für Deine Hilfe.
Gruß Corain
Member: stbewo
stbewo Mar 04, 2008 at 13:28:46 (UTC)
Goto Top
Hi,

ich mache ja mit IPCONFIG nichts anderes, wie auszulesen. Die Sprachversion ist natürlich auch noch entscheidend. Falls Du eine Deutsche Version hast ist natürlich "Default Gateway" zu ersetzen. Mit Echo "%%i" sollte eigentlich eine Anzeige (IP-Adresse) bei Dir erfolgen.

Gruß
Stefan
Member: Biber
Biber Mar 05, 2008 at 12:36:55 (UTC)
Goto Top
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.:
for /F "tokens=2 delims=:" %i in ('IPCONFIG ^| findstr /i "Standardgateway"') do @echo %i
nur zum Test am CMD-Prompt.

Grüße
Biber
Member: wuggale
wuggale Oct 21, 2009 at 05:40:54 (UTC)
Goto Top
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
Member: Biber
Biber Oct 22, 2009 at 05:16:17 (UTC)
Goto Top
Moin wuggale,

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
Member: wuggale
wuggale Oct 22, 2009 at 10:19:49 (UTC)
Goto Top
Hallo Biber,

vielen Dank für die Lösung, klappt wunderbar, sowohl unter dem deutschem-, als auch dem englischen BS!!
War schon am Verzweifeln, allerdings hätte ich an das Leerzeichen vor der IP nie gedacht.

Nochmals Danke,

Gruß.. Wuggale
Member: wuggale
wuggale Oct 27, 2009 at 10:12:28 (UTC)
Goto Top
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
Member: Biber
Biber Oct 27, 2009 at 10:30:14 (UTC)
Goto Top
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
  • 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
Member: wuggale
wuggale Oct 27, 2009 at 10:58:18 (UTC)
Goto Top
Hi Biber,

ja, ist ein bisschen schwierig zu formulieren face-wink

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
Member: Biber
Biber Oct 27, 2009 at 11:25:54 (UTC)
Goto Top
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
Member: wuggale
wuggale Oct 27, 2009 at 12:25:19 (UTC)
Goto Top
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 face-wink

Gruß Wuggale..