Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Batch textdatei zerlegen, information herausfinden





Frage

Ich möchte für Win2000 / XP und eventuell auch Vista eine Textdatei der form [code]ipconfig /all > netconf.txt[/code] so zerlegen, dass ich die Informationen über IP des Host, GW und DNS-Server in Variablen in der Batch verwenden kann.. oder wäre es günstiger den Befehl NET zu verwenden? Das gleiche wäre auch unter Linux interessant um eine Routingtabelle wieder in eine Reihe von Befehen in der form [code]route -add[/code] zu parsen. Es ist also gefragt wie ich beliebige Textdaten in einer Batch zerlegen kann um sie neu zusammen zu setzen.. :) Ich freue mich auf eure innovativen Lösungsansätze..

Antwort 1 von happy

also ich hab so was ähnliches schon mal in shellscript früher mit dem befehlen grep, sed, awk, tail, top, cat, usw. gemacht, sogar für nen viel komplizierteren fall... würde ich dir aber davon abraten... der code wird zwar nicht lang, aber sehr unübersichtlich... und es dauert alles ne weile, das zu basteln...

nimm python :) diese sprache ist einfach genial und total einfach, weil skriptsprache :) ... da gibts sogar ein package für reguläre ausdrücke, womit du übersichtlich in einer zeile alle ips raussammeln kannst..... mit dateien hantieren und webseiten runterladen ist auch ganz einfach :)

Antwort 2 von Wolf84

Wäre trotzdem nett wenn du mir dieses Script zukommen lassen könntest, ich brauche es ja eben damits mit Kommandozeileninterpreter unter Windows2k/2k3/XP bzw unter linux mit Bash funktioniert..
ansonst werde ich mal mittels dieser Kommandos weitersuchen..
..Warum die Befehle eine Ausgabe ihrer Tabellen als Dump udn das einlesen solcher nicht unterstützen ist mir eh schleierhaft -.- wäre wohl zu einfach.

Antwort 3 von Mönti

Ich weiss nicht, wie verbreitet Python unter Linuxdistributionen ist. Jedenfalls gibt es auch andere Skriptsprachen, die bei Windows (VBscript & JScript) und Linux (Perl) auf jeden Fall automatisch dabei sind und auch Reguläre Ausdrücke unterstützen.

Antwort 4 von Wolf84

Es geht mir nicht darum, dass man das Problem mit einer Programmiersprache wie C/Perl etc lösen kann.. sondern darum es ohne zustzliche Mittel bzw. sehr wenige davon zu tun.
Sonst muss es wohl doch ein Compilat werden

Antwort 5 von happy

also perl ist mist... unübersichtlich.. wenn du da mal was programmierst und ein anderer will das lesen, ist es immer sehr schlecht...

python geht unter linux ganz leicht zu installieren... unter windows bestimmt auch... ansonsten wüsste ich für windows erst mal nix, es sei denn, die haben seit windows 95 an den möglichkeiten der batch-programmierung was geändert

dir dieses skript zukommen lassen? ich habe keins für dein problem... müsste ich erst programmieren, und dafür fehlt mir derzeit die zeit... müsste auch erst linux wieder hoch fahren usw... vielleicht irgendwann mal, wenn es mich packt :) aber nicht sofort

Antwort 6 von Mönti

Zitat:
Es geht mir nicht darum, dass man das Problem mit einer Programmiersprache wie C/Perl etc lösen kann.. sondern darum es ohne zustzliche Mittel bzw. sehr wenige davon zu tun.

Das ist, was ich meine: Techniken, die automatisch zur Verfügung stehen, auch "Boardmittel" genannt. Perlskripte können auf jeder Linuxplattform (wenn es vielleicht nicht eine Miniversion auf Diskette ist) ohne zusätzliche Installationen ausgeführt werden.

Zitat:
ansonsten wüsste ich für windows erst mal nix, es sei denn, die haben seit windows 95 an den möglichkeiten der batch-programmierung was geändert

Der Windows Scripting Host existiert seit Windows 95/NT4. Automatisch installiert wird er aber erst seit Windows 98/2000.

Antwort 7 von Wolf84

@happy.. ich meinte eigentlich jenes das du schonmal gecshrieben hattest.. etwas funktionierendes als vorlage ist immer schöner als sich alles selbst zu suchen.. ich wollte nicht dass du dich jetzt daran setzt .. aber danke trotzdem ..

@mönti
ich will hier nicht streiten, aber auch nicht über den gewählten lösungsansatz diskutieren.. ich habe kurz genannt was ich will und was nicht.. mehr sage ich dazu nicht

für die ip-tables habe ich auch schon etwas gefunden iptables-save / -restore

..nur mein windows-problem steht noch aus.. wenn ich was habe lass ichs euch wissen.. aber vll ist ja jemand andres schneller.

Antwort 8 von Wolf84

Also ich habe da dann endlich was zusammen.. auch ganz ohne besondere Scriptsprachen.. einfach als Batch mittels FOR:

Zitat:
get_ipconfvars.cmd

@echo off
:: Variable für Temporäre Datei(en)
set tmpdat=%temp%\ip

:: IP aus ipconfig holen ( "IP-Adress", "Hostname" ..)
::   Achtung! In einem nicht Deutschsprachigem-Windows
:: müssen hier die Zeichenketten geändert werden
ipconfig /all | find "Hostname" > %tmpdat%0.txt
ipconfig /all | find "IP-Adresse" > %tmpdat%1.txt
ipconfig /all | find "Subnetzmaske" > %tmpdat%2.txt
ipconfig /all | find "Standardgateway" > %tmpdat%3.txt
ipconfig /all | find "DNS-Server" > %tmpdat%4.txt

:: Bezeichner vor dem Doppelpunkt weg und Inhalt ab in Variablen
::   Könnte in ein Script das 5x per Call aufzurufen wäre
:: ausgelagert werden
for /f "tokens=1,2 delims=:" %%i in (%tmpdat%0.txt) do echo %%j> %tmpdat%0.txt
for /f "tokens=1" %%i in (%tmpdat%0.txt) do set ic_hn=%%i
for /f "tokens=1,2 delims=:" %%i in (%tmpdat%1.txt) do echo %%j> %tmpdat%1.txt
for /f "tokens=1" %%i in (%tmpdat%1.txt) do set ic_ip=%%i
for /f "tokens=1,2 delims=:" %%i in (%tmpdat%2.txt) do echo %%j> %tmpdat%2.txt
for /f "tokens=1" %%i in (%tmpdat%2.txt) do set ic_nm=%%i
for /f "tokens=1,2 delims=:" %%i in (%tmpdat%3.txt) do echo %%j> %tmpdat%3.txt
for /f "tokens=1" %%i in (%tmpdat%3.txt) do set ic_gw=%%i
for /f "tokens=1,2 delims=:" %%i in (%tmpdat%4.txt) do echo %%j> %tmpdat%4.txt
for /f "tokens=1" %%i in (%tmpdat%4.txt) do set ic_ns=%%i
:: Erzeugte Variablen ausgeben - Prüfen
set ic_
:: Temp. Daten löschen
del %tmpdat%?.txt
:: nicht benötigte Variablen löschen
set tmpdat=


Zitat:
Resultierende Ausgabe unter WinXP:

ic_gw=192.168.1.1
ic_hn=MyPC
ic_ip=192.168.1.132
ic_nm=255.255.255.0
ic_ns=172.16.2.1


Die Ausgabe unter Win2k, Win2k3 werde ich später nochmal prüfen, wenn jemand einen Fehler sieht, bin ich immer froh über einen Hinweis oder Verbesserungsvorschläge.

Und jetzt kann ich mittels MimCmd den Proxy für meinen Miranda IM automatisch konfigurieren *froi*.

Man könnte auch den Proxy für den Standart-Browser/IE aus der Registry lesen und den verwenden.. aber das mache ich vll später mal wenn diese (Teil-)Lösung nicht mehr hinreichend ist oder nie ^^.

Zitat:
Ansatz

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings


Antwort 9 von Wolf84

Ich habe gestern noch einen Kleinen Tip bekommen:

Zitat:
Kürzere Version ohne Temp. Daten
@echo off

:: IP aus ipconfig holen ( "IP-Adress", "Hostname" ..)
::   Achtung! In einem nicht Deutschsprachigem-Windows
:: müssen hier die Zeichenketten geändert werden
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Hostname"') do set ic_hn=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "IP-Adresse"') do set ic_ip=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Subnetzmaske"') do set ic_nm=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Standardgateway"') do set ic_gw=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "DNS-Server"') do set ic_ns=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Physikalische Adresse"') do set ic_ma=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "DHCP aktiviert"') do set ic_dh=%%i
	
:: Erzeugte Variablen ausgeben - Prüfen
set ic_


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: