Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Permanente Routing-Tabelle sichern. (Batch)

Mitglied: WinlinMac

WinlinMac (Level 1) - Jetzt verbinden

13.10.2010 um 18:06 Uhr, 6663 Aufrufe, 5 Kommentare

Ich schreibe hier und da Batches zur Simplifizierung von häufigen Abläufen. Sowohl für Windows, Linux/Mac OS x. Allerdings waren alle bisher für meine Verhältnisse relativ einfach zu machen.
Jetzt habe ich ein Problem das ich nicht ohne Fremde Hilfe lösen kann, weil mir die Routine fehlt:

Ich möchte eine Batch schreiben, die die permanenten Routen in einer Textdatei speichert und zwar in der Formatierung ("IP";"MASK";"Gateway";"Metric"):
"0.0.0.0;0.0.0.0;192.168.1.1;20"

Ich habe bisher lediglich einen Skript, der die in dieser Form formatierten Einträge wieder auslesen und in einer Batch schreiben kann, allerdings ist das nach meinem empfinden auch keine Kunst.

Ich bin mal auf eure antworten gespannt. Ich habe bisher immer wieder gute Anregungen auf dieser Seite gefunden.
Mitglied: Pjordorf
13.10.2010 um 18:11 Uhr
Auch dir Hallo entgegen gebracht!

Zitat von WinlinMac:
("IP";"MASK";"Gateway";"Metric"):
"0.0.0.0;0.0.0.0;192.168.1.1;20"
Äh, was denn jetzt?
"IP";"MASK";"Gateway";"Metric" oder "IP;MASK;Gateway;Metric"?

Ich habe bisher lediglich einen Skript, der die in dieser Form formatierten Einträge wieder auslesen und in einer Batch
schreiben kann
???

Ich bin mal auf eure antworten gespannt.
Na, ob das alles deinen Erwartungen trifft?

Was hast du den bisher in deiner Batchdatei stehen?

Peter
Bitte warten ..
Mitglied: WinlinMac
13.10.2010 um 18:17 Uhr
Also erstens mein Skript zum auslesen sieht so aus:


@echo off
for /F "tokens=1-15,1-15,1-15,1-15 delims=;" %%i in (portsnow.list) Do echo route -p add %%i mask %%j %%k metric %%l >>doll.cmd
echo pause >>doll.cmd
pause


portsnow.list enthält:

0.0.0.0;0.0.0.0;192.168.1.2;22
0.0.0.0;0.0.0.0;192.168.1.1;20



Jetzt brauche ich ein Skript um den output von route print in die form von portsnow.list zu bekommen ist jetzt alles klar?
Bitte warten ..
Mitglied: Friemler
13.10.2010 um 19:49 Uhr
Hallo WinlinMac,

Zitat von WinlinMac:
Jetzt brauche ich ein Skript um den output von route print in die form von portsnow.list zu bekommen

dafür sollte folgendes genügen (wenn noch keine statischen Routen definiert sind):
01.
for /f "skip=1 tokens=1-3,5" %%a in ('route print ^| findstr /r /c:"^ .*"') do ( 
02.
  if "%%a" neq "Keine" echo %%a;%%b;%%c;%%d>>portsnow.list 
03.
)
Dein Skript zum Auslesen von portsnow.list würde ich eher so schreiben:
01.
for /F "usebackq tokens=1-4 delims=;" %%i in ("portsnow.list") do ( 
02.
  echo route -p add %%i mask %%j %%k metric %%l>>doll.cmd 
03.
04.
echo pause>>doll.cmd 
05.
pause
Durch usebackq kann der Pfad zu portsnow.list auch Leerzeichen enthalten. Was Dein tokens=1-15,1-15,1-15,1-15 soll, verstehe ich nicht.

Gruß
Friemler
Bitte warten ..
Mitglied: WinlinMac
13.10.2010 um 20:11 Uhr
Danke funktioniert erstklassik,

MFG

Winlin

Thread gilt als gelöst
Bitte warten ..
Mitglied: Friemler
14.10.2010 um 15:16 Uhr
Hallo WinlinMac,

auf Deine Nachfrage per PN liefere ich die Erklärung zu meinem Schnipsel hier im Thread, damit auch andere etwas davon haben.

Zunächst mal die Ausgabe von ROUTE PRINT:
01.
=========================================================================== 
02.
Schnittstellenliste 
03.
0x1 ........................... MS TCP Loopback interface 
04.
0x2 ...0X XX XX XX XX XX ...... MAC-Brückenminiport - Paketplaner-Miniport 
05.
=========================================================================== 
06.
=========================================================================== 
07.
Aktive Routen: 
08.
     Netzwerkziel    Netzwerkmaske          Gateway   Schnittstelle  Anzahl 
09.
          0.0.0.0          0.0.0.0  192.168.XXX.XXX 192.168.XXX.XXX       20 
10.
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1 
11.
    192.168.XXX.0    255.255.255.0  192.168.XXX.XXX 192.168.XXX.XXX       20 
12.
  192.168.XXX.XXX  255.255.255.255        127.0.0.1       127.0.0.1       20 
13.
  192.168.XXX.255  255.255.255.255  192.168.XXX.XXX 192.168.XXX.XXX       20 
14.
        224.0.0.0        240.0.0.0  192.168.XXX.XXX 192.168.XXX.XXX       20 
15.
  255.255.255.255  255.255.255.255  192.168.XXX.XXX 192.168.XXX.XXX       1 
16.
Standardgateway:   192.168.XXX.XXX 
17.
=========================================================================== 
18.
Ständige Routen: 
19.
  Keine
Und Mein Schnipsel:
01.
for /f "skip=1 tokens=1-3,5" %%a in ('route print ^| findstr /r /c:"^ .*"') do ( 
02.
  if "%%a" neq "Keine" echo %%a;%%b;%%c;%%d>>portsnow.list 
03.
)
Die FOR /F Schleife zerlegt zeilenweise die Ausgabe des Befehls, der in der Klammer der Schleife zwischen einfachen Anführungszeichen angegeben wird (hier 'route print ^| findstr /r /c:"^ .*"'), in seine "Bestandteile" (Tokens). Dabei werden bestimmte Zeichen, die zusammen mit TOKENS= in den doppelten Anführungszeichen durch die Direktive DELIMS= festgelegt werden können, als Trennzeichen zwischen den Bestandteilen/Tokens betrachtet. Wenn DELIMS nicht angegeben wird, werden Leer- und Tabzeichen als Trennzeichen betrachtet, so auch in diesem Fall. Die Eingabe von FOR /? an der Kommandozeile liefert die Hilfe zum FOR-Befehl.

In der Ausgabe von ROUTE PRINT interessieren Dich die Zeilen 9-15 mit den Netzwerkadressen/-masken. Die Spalten Netzwerkziel, Netzwerkmaske, Gateway, Schnittstelle und Anzahl sind durch Leer- bzw. Tabzeichen getrennt (die Standard-Trennzeichen). Ohne Angabe von TOKENS=1-3,5 würde nur der Inhalt der Spalte Netzwerkziel zurückgeliefert und der Laufvariablen %%a zugewiesen (das 1. Token). Durch TOKENS=1-3,5 werden aber automatisch weitere Laufvariablen (%%b, %%c und %%d) erzeugt. Dabei enthält %%b den Inhalt der Spalte Netzwerkmaske (2. Token), %%c den Inhalt der Spalte Gateway (3. Token) und %%d den Inhalt der Spalte Anzahl (5. Token).

Damit von der Ausgabe von ROUTE PRINT nur die Zeilen 9-15 verarbeitet werden, wird die gesamte Ausgabe über eine Pipeline an den FINDSTR-Befehl weitergegeben. Dafür steht das ^|, wobei das ^ ein Escape-Zeichen für | ist, damit der Befehlsinterpreter die Zeile korrekt auswertet. Um den Befehl direkt an der Kommandozeile auszuführen, müsstest Du nur
route print | findstr /r /c:"^ .*"
eingeben. Durch die Parameter /r /c:"^ .*" wird dem FINDSTR-Befehl mitgeteilt, was er suchen soll. Durch /r wird festgelegt, das der Suchstring, trotz /c:, ein regulärer Ausdruck ist, denn /c: legt eigentlich fest, das nach dem Suchstring buchstabengetreu gesucht werden soll. "^ .*" ist der Suchstring. Dabei bedeutet das ^, das am Anfang einer Zeile gesucht werden soll. Gesucht werden soll nach einem Leerzeichen, dem beliebig viele beliebige Zeichen folgen (dafür das " .*"). Der Punkt steht für ein beliebiges Zeichen, der Stern für eine beliebig häufige Wiederholung des vorhergehenden Zeichen (wegen dem vorhergehenden Punkt also für das beliebig häufige Auftreten eines beliebigen Zeichens). Falls Dir das jetzt zu hoch ist , gib FINDSTR /? an der Kommandozeile ein, das liefert die Hilfe zum Befehl und experimentiere ein wenig mit FINDSTR herum.

Es wird also nach Zeilen gesucht, die mit einem Leerzeichen beginnen und diese ausgegeben, also von der FOR-Schleife verarbeitet. Darunter fallen auch die Zeile 8 mit den Spaltentiteln (Netzwerkziel, Netzwerkmaske, usw.) und die Zeile 19 mit dem Wort "Keine". Zeile 8 (in der Ausgabe des FINDSTR-Befehls die erste Zeile) wird durch SKIP=1 (überspringe die erste Zeile) herausgefiltert. Zeile 19 wird durch IF "%%a" NEQ "Keine" herausgefiltert, denn bei Verarbeitung dieser Zeile enthält %%a das Wort "Keine", das erste und einzige Token dieser Zeile.

PS:
Wenn ich es mir so recht überlege, frage ich mich, ob der Schnipsel wirklich nützlich für Dich ist. Du willst doch bestimmt die statischen Routen eines Rechners auslesen und auf einen anderen übertragen. Dann wären die Zeilen nach der Zeile 18 ("Ständige Routen") für dich interessant und das Skript müsste anders geschrieben werden. Und zwar so:
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
for /f "delims=:" %%l in ('route print ^| findstr /n /r /c:"^Ständige Routen"') do ( 
06.
  set /a "skipLines=%%l+1" 
07.
08.
 
09.
for /f "skip=%skipLines% tokens=1-4" %%a in ('route print') do ( 
10.
  echo %%a;%%b;%%c;%%d>>portsnow.list 
11.
12.
 
13.
endlocal
In der ersten FOR-Schleife wird die Nummer der Zeile ermittelt, die mit "Ständige Routen" beginnt. FINDSTR gibt durch den Parameter /n vor dem Inhalt der Zeile die Zeilennummer gefolgt von einem Doppelpunkt aus, deshalb DELIMS=:. Die Laufvariable %%l enthält also die Zeilennummer der gesuchten Zeile, die um eins erhöht an die Variable skipLines zugewiesen wird. Dadurch wird auch die Zeile mit den Spaltenbezeichnungen der statischen Routen übersprungen. Der Parameter /a beim SET-Befehl ermöglicht es, auf der rechten Seite des Gleichheitszeichens Berechnungen durchzuführen.

In der zweiten FOR-Schleife wird durch SKIP=%skipLines% die entsprechende Anzahl Zeilen von der Ausgabe des ROUTE PRINT-Befehls übersprungen. Die Tabelle der statischen Routen wird durch TOKENS=1-4 und das fehlende DELIMS pro Zeile in vier Tokens zerlegt, die durch Leerzeichen getrennt sind und den Laufvariablen %%a, %%b, %%c und %%d zugewiesen werden.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Router & Routing

Unterschied zwischen Weiterleitungstabelle und Routing-Tabelle?

gelöst Frage von johannesdrRouter & Routing6 Kommentare

Hallo, kann mir einer kurz den Unterschied zwischen einer Weiterleitungstabelle und einer Routing-Tabelle erklären? Vielen Dank für Eure Anworten. ...

Router & Routing

Netzwerk erstellen anhand Routing-Tabelle

Frage von GuitarfckerRouter & Routing8 Kommentare

Hallo! Ich suche eine Lösung ein Netzwerk (Cisco Paket Tracer) zu entwerfen anhand folgender Routningtabelle. Gibt es Lösungsvorschläge und ...

Windows Server

AD per Batch sichern

gelöst Frage von Luciver1981Windows Server8 Kommentare

Hallo liebe Admins, ich möchte meine AD per Batch wöchentlich sichern hab allerdings noch nichts brauchbares gefunden. Welche Befehle ...

Batch & Shell

CSV zu HTML-Tabelle via Batch

gelöst Frage von WiSchBatch & Shell19 Kommentare

Hallo. Ich versuche nun schon seit Stunden diese Aufgabe zu lösen. Leider haben auch Beiträge in diesem Forum oder ...

Neue Wissensbeiträge
iOS
Updates für Iphone und Co
Information von sabines vor 3 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 1 TagMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++27 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL19 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Hyper-V
HyperV DC + DNS + AC
gelöst Frage von HardstylesHyper-V16 Kommentare

Hallo kann mir jemand sagen wieso meine Domänen Computer kein Internetzugang erhalten? Ich hab hier ein Server wo die ...