overreaction
Goto Top

Per Batch Text auslesen und Verbindung testen?

Hallo Leute!

Ich brauch Hilfe mit deiner Batch-Datei, die ein paar Befehle hintereinander ausführen soll. Den Ablauf habe ich zwar im Kopf, doch ich bin der Syntax nicht so mächtig.

Also das Batch soll folgendes tun:

1. Aus einer vorher erstellen 'iplist.txt' eine IP auslesen
2. Die gerade ausgelesene IP dann als neue setzen:
'netsh interface ip set address name="Local Area Connection" static 10.0.0.10 255.255.255.0 10.0.0.1'

3. Testen ob die neue IP erfolgreich war (z.B. mit 'ping www.google.de')

4. Wenn die Verbindung erfolgreich war -> exit - Und wenn die Verbindung nicht erfolgreich war wieder zu ->Punkt 1 und die nächste IP auf der Liste nehmen


Wäre echt super super nett, wenn mir jemand helfen könnte. Batch-Programierung ist echt nicht meine Welt. Vor allem beim auslesen der IPs aus der Textdatei und beim testen der Verbidung bin ich echt planlos...

Content-Key: 83206

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

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

Member: -Ohforf
-Ohforf Mar 15, 2008 at 20:42:44 (UTC)
Goto Top
spontan würde mir dazu einfallen

ipconfig /all >> C:\ip.txt

damit leitest du die ausgabe von "ipconfig /all"
in eine datei weiter, von der aus du dann deine idee
weiter umsetzen kannst.
Member: funkmasta2k
funkmasta2k Mar 15, 2008 at 21:00:15 (UTC)
Goto Top
@echo off
FOR /f %%f IN (ips.txt) DO (
'netsh interface ip set address name="Local Area Connection" static %%f 255.255.255.0 10.0.0.1'
ping www.google.de
if <erreichbar> goto :EOF
)

Nur die letzte Zeile (Steht nur symbolisch da), da fällt mir nicht viel ein, denn man könnte nun nach Errorleveln gucken,
jedoch sind die total unzuverlässig und je nach OS anders. Da müsste nun jemand einschreiten,
der ne andere Idee hat.
Member: miniversum
miniversum Mar 16, 2008 at 09:24:55 (UTC)
Goto Top
@echo off
FOR /f %%f IN (ips.txt) DO (
'netsh interface ip set address
name="Local Area Connection" static
%%f 255.255.255.0 10.0.0.1'
ping www.google.de
if <erreichbar> goto :EOF
)

... da fällt mir nicht viel ein, denn man könnte nun nach Errorleveln gucken, jedoch sind die total unzuverlässig ...
Warum unzuverlässig? Die hängen halt vom jeweiligen Programm ab
... und je nach OS anders.
Klar auf Linux oder Mac geht das so nicht. Das ist bei Batchdateien aber immer so.

Aber ums mal hinzubasteln wie das mit dem
if <erreichbar> goto :EOF
)
gehen kann:
ping /n 1 www.google.de>NUL 2>NUL && goto:eof
Member: overreaction
overreaction Mar 16, 2008 at 12:02:00 (UTC)
Goto Top
Hallo Leute!


Das klappt schonmal sehr gut, vielen Dank!

Allerdings habe ich noch was kleines: Wie kann ich in der iplist.txt ein Flag oder so setzen, damit bei einem erneuten Durchlauf bereits getestete IPs nicht mehr verwendet werden? Also so dass die IP-Liste erst wieder von beginn abgearbeitet wird, wenn alle IPs in der Liste durch sind.

Wäre nett, wenn ihr mir da noch Tipps geben könntet.
Member: funkmasta2k
funkmasta2k Mar 16, 2008 at 13:07:21 (UTC)
Goto Top
Warum unzuverlässig? Die hängen
halt vom jeweiligen Programm ab
> ... und je nach OS anders.
Klar auf Linux oder Mac geht das so nicht.
Das ist bei Batchdateien aber immer so.
Nein, ich meine dass bei XP Home und XP Prof. unterschiedlich Errorlevel
zustande kommen. Hier im Forum wurde schonmal heiß drüber diskutiert.

Aber ums mal hinzubasteln wie das mit dem
> if <erreichbar> goto :EOF
> )
gehen kann:
> ping /n 1 www.google.de>NUL 2>NUL
&& goto:eof

Könntest Du mir bitte den Teil mit " 2>NUL" erklären? face-smile
Würde es gerne nachvollziehen könnne.


@threadstarter
Hm, beschreib doch mal was genau Du vor hast face-smile
Member: overreaction
overreaction Mar 16, 2008 at 13:35:16 (UTC)
Goto Top
@threadstarter
Hm, beschreib doch mal was genau Du vor hast
face-smile
Nunja, ich habe Kabelinternet und somit eine faktisch gesehen feste IP-Adresse. Manchmal ist es aber vonnöten diese zu wecheln. Habe schon alle anderen Methoden durchprobiert (Modem neustarten, MAC-Adresse ändern, ...) doch bei meinem ISP funktioniert das alles nicht.

Die einzige Möglichkeit, eine andere IP zu bekommen ist das durchprobieren von IP-Adressen aus meiner Range. Allerdings funktioniert etwa nur jede 5te Adresse, darum versuche ich gerade das alles soweit wie möglich zu automatisieren.

Dazu habe ich halt ne iplist.txt mit IPs aus meiner Range. Diese sollen abgearbeitet werden inkl. Verbindungstest.
In einem nächsten Schritt will ich die IP-Liste verkleinern, indem IPs, bei denen der Test fehlgeschlagen ist, aus der Liste gelöscht werden.
Am ende habe ich dann eine schlanke Liste an funktionierenden IPs, die ich bei bedarf beziehen kann.

Gut nicht? ^^
Member: miniversum
miniversum Mar 16, 2008 at 15:48:05 (UTC)
Goto Top
Nein, ich meine dass bei XP Home und XP Prof. unterschiedlich Errorlevel zustande kommen. Hier im Forum wurde schonmal heiß drüber diskutiert.


Könntest Du mir bitte den Teil mit
" 2>NUL" erklären? face-smile
Würde es gerne nachvollziehen
könnne.
Das ist eigentlich ganz einfach. Programme habe zwei mögliche "Kanäle" über die sie Ausgaben machen können. In C++ gibts dafür z.B. die Befehle cout und cerr. EIGENTLICH wird immer die Standardausgabe über Kanal 1 ausgegeben und Fehlermeldungen über Kanal 2 (hier im Forum gabs auch mal das Problem das das ncith funktioniert weils bei java anders Programiert ist).
Wenn ich hinter einen Befehl nun >NUL schreibe wird die Standardausgabe nach NUL, also ins Nirvana umgeleitet. >NUL leitet also Kanal1 um. Man könnte auch schreiben 1>NUL. Die Wirkung wäre die gleiche. Mit 2>NUL wird Kanal2, also die Fehlermeldungen umgeleitet. Auf diese Art kann man also verschiedene Dinge kombinieren.
befehl 1>NUL & REM Unterdrückung der Standardausgabe, Fehlermeldungen werden angezeigt.
befehl 2>NUL & REM Standardausgabe wird angezeigt, Fehlermeldungen werden unterdrückt.
befehl >ausgabe.txt 2>fehler.txt & REM Umleitung der Standardausgabe in Ausgabe.txt, Fehlermeldungen werden in fehler.txt geschrieben.
Ich hoffe das war einigermaßen verständlich erklärt.

miniversum
Member: funkmasta2k
funkmasta2k Mar 16, 2008 at 20:45:24 (UTC)
Goto Top
@overreaction
Würde es dann nicht reichen, dass die IPs die nicht funktionieren gelöscht werden,
oder die IPs die "funktionabel" sind in eine neue Datei gespeichert werden?

@miniversum
Super erklärt, besten Dank!
Member: overreaction
overreaction Mar 16, 2008 at 21:41:49 (UTC)
Goto Top
@overreaction
Würde es dann nicht reichen, dass die
IPs die nicht funktionieren gelöscht
werden,
oder die IPs die "funktionabel"
sind in eine neue Datei gespeichert werden?

@miniversum
Super erklärt, besten Dank!
Naja, prinzipiell ist egal, wie das gehandelt wird. Mein aktuelles Problem ist halt, dass die Liste immer wieder von Beginn abgearbeitet wird. Ideal wäre, wenn ich die letzte 'gute' IP irgendwie markieren könnte, und beim nächsten Ausführen der Datei wieder dort wieder fortzusetzen.
Hat jemand eine Idee, wie ich das realisieren könnte?
Member: funkmasta2k
funkmasta2k Mar 16, 2008 at 21:44:30 (UTC)
Goto Top
Was ich aber bei Dir nicht ganz verstehe, können die IPs die bis dato komplett gelöscht werden,
oder möchtest Du sie nochmal "irgendwann" wieder von vorne abchecken?
Member: overreaction
overreaction Mar 17, 2008 at 07:36:42 (UTC)
Goto Top
Was ich aber bei Dir nicht ganz verstehe,
können die IPs die bis dato komplett
gelöscht werden,
oder möchtest Du sie nochmal
"irgendwann" wieder von vorne
abchecken?
Ja bisher werden diese ja nach einmaligem gebrauch gelöscht. Aber ich will diese wieder von Anfang abarbeiten, sobald das Ende der Liste erreich wurde.
Member: funkmasta2k
funkmasta2k Mar 18, 2008 at 13:45:03 (UTC)
Goto Top
Du, wenn Du den Ping mit "/n 1" ausführst, geht das recht zügig. Oder willst Du 10.000 IP-Adressen ausprobieren? Also mir würde spontan nichts dazu einfallen.