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

Frage Entwicklung Batch & Shell

GELÖST

IP Adressen auslesen, kopieren, modifizieren

Mitglied: eu-admin

eu-admin (Level 1) - Jetzt verbinden

18.08.2006, aktualisiert 24.08.2006, 5155 Aufrufe, 9 Kommentare

Hallo,

ich habe ein Problem bei der automatischen Abarbeitung folgenden Problems:

In einer semikolon-getrennten csv-Datei mit Netzwerkomponenten stehen deren IDs sowie im

Idealfall zwei IP-Adressen.

Leider ist der Idealfall relativ selten.

In dem ersten IP-Adressfeld sollen ausschließlich IP-Adressen stehen, deren 2. Oktett

größergleich 144 ist. Bei den IPs, bei denen dies nicht der Fall ist, steht in der Regel im

2. Oktett eine 136. Diese IPs sollen in das Feld IP2 kopiert werden. Ausserdem soll in IP1

die Umrechnung dieser Adresse nach folgendem Muster erfolgen:

10.(136+8).(3.Oktett+16).(4.Oktett)

Hier nun noch ein Auszug aus dieser Datei:

Search code;IP Address;IP Adresse 2
TESTCI;10.145.19.101;
R6504;10.144.79.33;
R88001;10.144.187.209;
R7436;10.144.181.49;
R7435;10.144.182.177;
R6189;10.136.43.97;10.144.75.97
R7391;10.144.161.49;
R7344;10.144.178.161;
R7338;10.144.162.225;
R4503;10.144.113.1;
R6213;10.144.78.97;
R1098;10.144.137.33;
R1030;10.144.89.161;
R4591;10.144.136.193;
R6511;10.144.120.225;
R7573;10.144.161.241;
R7253;10.144.162.81;
R4051;10.144.110.1;
R1051;10.136.59.225;

Vielen Dank

Christian
Mitglied: 6890
18.08.2006 um 13:41 Uhr
hallo,

ich denk mal in perl müsste das relativ einfach zu lösen sein oder bist du auf batch/shell angewiesen??

mfg godlike P
Bitte warten ..
Mitglied: eu-admin
18.08.2006 um 13:47 Uhr
Hallo,

Angewiesen nicht, aber mit perl kenne ich mich noch weniger aus als batch.

Christian
Bitte warten ..
Mitglied: 6890
18.08.2006 um 13:56 Uhr
kann dir ja helfen wennde willst.

mfg
Bitte warten ..
Mitglied: AxelHahn
18.08.2006 um 14:26 Uhr
Hallo,

so vielleicht en Ansatz mit dem du weiterkommst:

01.
@echo off 
02.
set csvfile=ips.csv 
03.
for /F "tokens=1,2,3 delims=;" %%a in (%csvfile%) do call :testme %%a %%b %%c 
04.
pause 
05.
goto end 
06.
 
07.
:testme 
08.
set name=%1 
09.
set ip1=%2 
10.
set ip2=%3 
11.
 
12.
set ip1_A= 
13.
set ip1_B= 
14.
set ip1_C= 
15.
set ip1_D= 
16.
for /F "tokens=1-4 delims=." %%j in ('echo %ip1%') do (set ip1_A=%%j&& set ip1_B=%%k&& set ip1_C=%%l&& set ip1_D=%%m) 
17.
 
18.
set /a ip2_C=%ip1_C%+16 
19.
if "%ip1_B%"=="144" (echo %name%;%ip1%;10.144.%ip2_C%.%ip1_D%) else echo ERROR %name% - 2. Oktett in %ip1% ist nicht 144 
20.
goto end 
21.
 
22.
:end
zuerst loopst du über deine CSV-Datei.
Im Label testme wird die erste IP in 4 Blöcke zerlegt und in einzelne Variablen gepackt.
Der C-Block der 2. IP wird berechnet.
Den 2. Block von der ersten IP prüfst du, ob er 144 ist, wenn ja, bisbst du alle Zeilen aus.

Falls du alles in einer Datei brauchst, leitest du die Ausgabe in eine Datei mit ">>" um.


Viele Grüsse
-= Axel =-
Bitte warten ..
Mitglied: Biber
18.08.2006 um 18:27 Uhr
Moin eu_admin,

aus Spass nochmal eine etwas kompaktere Alternativ-Batchlösung.
In der Praxis würde ich aber eine etwas lesbarere (wie die von AxelHahn) vorziehen.

Nur um zu zeigen, dass es auch etwas kürzer geht..
01.
::----sortIps.bat ------ Parameter1= Name der CSV-Datei 
02.
@echo off & setlocal enableDelayedExpansion 
03.
(set /p header=<%1) && @echo !header! 
04.
For /f "skip=1 delims=; tokens=1-3" %%i  in (%1) do ( 
05.
  if [%%k] Neq [] ( @If %%k GTR %%j (echo %%i;%%k;%%j) else echo %%i;%%j;%%k;) Else ( 
06.
    For /f "tokens=1-4 delims=." %%a in ("%%j") do ( 
07.
      IF %%b GEQ 144 ( echo %%i;%%a.%%b.%%c.%%d;)  Else ( 
08.
         (Set /a x=%%b+8) && (Set /a y=%%c+16) && (Echo %%i;%%a.!x!.!y!.%%b;%%a.%%b.%%c.%%d; 
09.
))))) 
Output auf Konsole/im 2 Schritt in neue Datei SortIps.csv:
01.
$cmd$sortips ips.csv 
02.
Search code;IP Address;IP Adresse 2 
03.
TESTCI;10.145.19.101; 
04.
R6504;10.144.79.33; 
05.
R88001;10.144.187.209; 
06.
R7436;10.144.181.49; 
07.
R7435;10.144.182.177; 
08.
R6189;10.144.75.97;10.136.43.97 
09.
R7391;10.144.161.49; 
10.
R7344;10.144.178.161; 
11.
R7338;10.144.162.225; 
12.
R4503;10.144.113.1; 
13.
R6213;10.144.78.97; 
14.
R1098;10.144.137.33; 
15.
R1030;10.144.89.161; 
16.
R4591;10.144.136.193; 
17.
R6511;10.144.120.225; 
18.
R7573;10.144.161.241; 
19.
R7253;10.144.162.81; 
20.
R4051;10.144.110.1; 
21.
R1051;10.144.75.136;10.136.59.225; 
22.
 
23.
$cmd$sortips ips.csv >sortIps.csv
Gruß
Biber
Bitte warten ..
Mitglied: eu-admin
21.08.2006 um 13:37 Uhr
Hallo Zusammen,

vielen Dank für die vielen Ideen. Eine kleine Änderung benötige ich aber dennoch.
Die veränderten Daten müssen wieder in eine Datei (vorzugsweise dieselbe) geschrieben werden und zwar so, dass die erste IP größer ist als die zweite.

Christian
Bitte warten ..
Mitglied: Biber
21.08.2006 um 13:58 Uhr
Moin eu_admin,

bei meinem Script kannst Du dann den Aufruf ändern von:
01.
sortips ips.csv >sortIps.csv
...in...
01.
sortips ips.csv >sortIps.csv 
02.
Copy /y sortIps.csv Ips.csv
...aber erst, wenn es ausgiebig getestet ist
Ich würde auf jeden Fall die Ur-Datei ips.csv nur lesen und in eine andere Datei schreiben.

Gruß
Biber
Bitte warten ..
Mitglied: Biber
23.08.2006 um 15:32 Uhr
Moin eu_admin,

noch mal eine Verfeinerung mehr auf dem Weg zu Deiner Lösung.
Wenn die gesammelten Anforderungen jetzt so aussehen:
1. IPs im Bereich 10.145.xxx.xxx soll keine Änderung vorgenommen werden. Die IP2 soll gleich der IP1 sein.

2. IPs im Bereich 10.144.xxx.xxx soll die Original-IP in IP1 gesetzt werden und das ausgerechnete Equivalent in IP2 gesetzt werden

3. Wenn IP1 im Bereich 10.136.xxx.xxx liegt, soll die IP1 auf die ausgerechnete 10.144.xxx.xxx-Adresse gesetzt werden und dier ursprüngliche IP1 in IP2 kopiert werden.

Letztendlich soll die "große" IP immer in IP1 sein.


Dann macht dieser Schnipsel....
01.
::-------snipp Sortips2.bat 
02.
@echo off & setlocal enableDelayedExpansion & if [%1]==[] (echo Keine IP-Datei angegeben.) & goto :eof 
03.
(set /p header=<%1) && @echo !header! 
04.
For /f "skip=1 delims=; tokens=1-3" %%i  in (%1) do (   
05.
  if [%%k] Neq [] ( @If %%k GTR %%j (echo %%i;%%k;%%j) else echo %%i;%%j;%%k;) Else ( 
06.
    For /f "tokens=1-4 delims=." %%a in ("%%j") do ( 
07.
      IF %%b EQU 145 ( echo %%i;%%j;%%j)  Else ( 
08.
      IF %%b EQU 144 ((Set /a x=%%b-8) && (Set /a y=%%c-16) && echo %%i;%%j;%%a.!x!.!y!.%%d;)  Else ( 
09.
      IF %%b EQU 136 ((Set /a x=%%b+8) && (Set /a y=%%c+16) && Echo %%i;%%a.!x!.!y!.%%d;%%j)))))) 
10.
::-------snapp Sortips2.bat
....dieses Ergebnis:
01.
sortips2 ips.txt 
02.
Search code;IP Address;IP Adresse 2 
03.
TESTCI;10.145.19.101;10.145.19.101 
04.
R6504;10.144.79.33;10.136.63.33; 
05.
R88001;10.144.187.209;10.136.171.209; 
06.
R7436;10.144.181.49;10.136.165.49; 
07.
R7435;10.144.182.177;10.136.166.177; 
08.
R6189;10.144.75.97;10.136.43.97 
09.
R7391;10.144.161.49;10.136.145.49; 
10.
R7344;10.144.178.161;10.136.162.161; 
11.
R7338;10.144.162.225;10.136.146.225; 
12.
R4503;10.144.113.1;10.136.97.1; 
13.
R6213;10.144.78.97;10.136.62.97; 
14.
R1098;10.144.137.33;10.136.121.33; 
15.
R1030;10.144.89.161;10.136.73.161; 
16.
R4591;10.144.136.193;10.136.120.193; 
17.
R6511;10.144.120.225;10.136.104.225; 
18.
R7573;10.144.161.241;10.136.145.241; 
19.
R7253;10.144.162.81;10.136.146.81; 
20.
R4051;10.144.110.1;10.136.94.1; 
21.
R1051;10.144.75.225;10.136.59.225
Allerdings ist noch offen, was passieren soll, wenn das 2. Ip-Oktett weder 145 noch 144 noch 136 ist... im Moment fällt es einfach weg.

Gruß
Biber
Bitte warten ..
Mitglied: eu-admin
24.08.2006 um 08:50 Uhr
Moin,

an alle die mir geantwortet haben, vielen Dank. Die Lösung von Biber hat dann wunderbar funktioniert.

MfG

Christian
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
IP Adressen aus Hosts Tabelle auslesen
gelöst Frage von makroll10Batch & Shell2 Kommentare

Hallo, die Werte aus einer Hosts Tabelle möchte ich mit Hilfe eines Batch, wie u.a. auslesen: Beispiel: 192.155.200.1 GSMROUTER ...

PHP
PHP IP adresse aus TXT Datei auslesen
gelöst Frage von gamerffPHP2 Kommentare

Hallo Forum, kann mir jemand zum Theme: IP Adresse aus txt datei auslesen weiterhelfen. Ich habe eine Quellcode mit ...

Windows 7
Bereits eingebundener Drucker - IP Adresse lokal auslesen
gelöst Frage von harald.schmidtWindows 717 Kommentare

Hallo! Ich hab da eine wahrscheinlich dumme Frage, aber wie zum Teufel kann ich bei einem eingebundenen Netzwerkdrucker dessen ...

JavaScript
Script modifizieren
Frage von Maik007JavaScript2 Kommentare

Hallo, ich habe folgendes Script was ich gerne modifizieren möchte. Ich möchte den Startwert bestimmen und die maximale Gewinnsumme. ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...