Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Konfigurationsdateien (Dateiname.cfg) per Batch vergleichen

Frage Entwicklung Batch & Shell

Mitglied: Bart15

Bart15 (Level 1) - Jetzt verbinden

26.10.2010 um 09:01 Uhr, 3620 Aufrufe, 11 Kommentare

Ich habe die Aufgabe bekommen Konfigurationsdateien (Dateiname.cfg) per Batch auf Änderungen zu überprüfen und dann gegebenfalls auf die Änderungen per E-mail hiinzuweisen.

Hi nochmal an alle,


also wie schon oben beschrieben soll ich eine Batch-Datei scripten mit der ich Konfigurationsdateien (Dateiname.cfg) Zeile für Zeile vergleiche und dann per E-mail auf die Änderungen hinweisen.
Es wird dann so aussehen, dass ich eine alte Konfigurationsdatei bereits habe und diese dann mit der neuen Konfigurationsdatei Zeile für Zeile vergleichen soll. Bei den Konfigurationsdateien handelt es sich um Konfigurationen von Switchen.


Also:

alte Datei Zeile für Zeile vergleichen mit neuer Datei ---> Änderungen in eine E-mail packen


Ich hoffe es ist klar geworden was ich brauche^^

Wenn nicht meldet euch.


Danke schon mal im Vorraus.



Gruß Bart
Mitglied: 60730
26.10.2010 um 09:34 Uhr
Moin,

aus gegebenem Anlass...(du sollst die scripten) (Hi nochmal an alle,) war wohl ein PN Versuch...

nur Hinweise:
fc alt.csv neu.csv

for /f %a in (alt.csv) do ?
findstr /?

DIe eingebauten Hilfen der jeweiligen Befehle zeigen dir die Befehle, ich hab dir mal 2 von 3 möglichen Befehlen (Wegen) genannt

Gruß
Bitte warten ..
Mitglied: Bart15
01.11.2010 um 10:47 Uhr
Hallo,

danke schon mal. Der "fc-Befehl" hilft mir schon mal sehr. Allerdings habe ich jetzt noch das Problem. Ich habe einen Ordner mit geschäzt 1500 Files (.cfg). In diesem Ordner sind Konfigurationsdateien mit sehr kryptischen Namen z.B. 172_16_16_253_20090224_0201_SwCfg.cfg.

Diese Dateien werden nach kurzer Zeit auf eine externe Platte weggesichert. Mein Ziel ist es ja die neuen Konfigurationsdateien mit den alten vorhandenen auf den Inhalt hin zu vergleichen.

Wie mache ich das jetzt am geschicktesten, dass das Script jede vorhandene Datei mit der neuen Datei inhaltlich vergleich?


Danke für eure Hilfe.



Gruß Bart
Bitte warten ..
Mitglied: 60730
01.11.2010 um 11:06 Uhr
Moin,

1.500 Files mit FC - oh weh

Was genau soll den da Ziel sein?

Am "einfachsten" wäre alle 1.500 cfgs nach ihrem Ziel zu sortieren - obwohl deine "Kryptischen" Dateinamen sind doch sinnig - ip_Adresse_datum.cfg

Entweder machst du das also nach dem Dateinamen, oder nach dem Inhalt und dann jeden Treffer vergleichen.

Ehrlicherweise würde ich das aber nicht machen, sondern lieber neu anfangen und nur dann - wenn die aktuelle cfg neuer/anderen Inhalt hat die abspeichern.

Im normalfall intersiieren mich meine ollen cfg Files der Switche nie mehr - allerhöchstens wenn ich mal einen Bock geschossen habe - den merkt man aber sofort und holt sich seine cfg zurück.

Von daher - trink nochmal nen Kaffe und überleg dir wohin die Reise gehen soll.

Gruß
Bitte warten ..
Mitglied: Bart15
02.11.2010 um 14:42 Uhr
Hallo,


ja deine Einwände sind schon irgendwie berechtigt. Allerdings hat sich es jetzt wieder ein bisschen gelichtet. Glücklicherweise hat schon jemand ein vb Script geschrieben, welches die kryptischen Namen

172_16_16_253_20090224_0201_SwCfg.cfg folgendermaßen umformt z.B.--> 172.16.16.253.cfg. Problematisch war es, da es mehrere Versionen gab. Man musste also auch noch unterscheiden,welches das neuste vom Datum her war. Die neue Version (172.16.16.253.cfg) wird dann weggespeichert und die ganzen überflüssigen Daten werden gelöscht.

Ich habe nun einen Ordner mit lauter 172.1X.XXX.XXX.cfg Dateien und eine Ordner mit den alten Konfigurationsdateien. Diese sind in den gleichen Format gespeichert. (172.1X.XXX.XXX.cfg)
Ebenso habe ich herrausgefunden, dass ich nur bestimmte Switche auf Änderungen in der Konfiguration untersuchen muss. Am besten wäre es somit über die IP die Auswahl zu machen.


fc 172.1XX.XXX.XXX.cfg 172.1XX.XXX.XXX.cfg >datei3.txt


Ich könnte natürlich jede benötigte IP in die Batchdatei schreiben, allerdings gibt es doch bestimmt eine andere Lösung dafür^^ Ebenso macht mit es Kopfzerbrechen, dass die Daten ja in 2 Ordnern liegen und zudem gleich heißen. Gibt es damit Probleme? Der "fc- Befehl" geht ja nur wenn die Daten im selben Ordner liegen?
Am Ende vom Lied müsste ich dann noch die Änderungen per Mail verschicken. Wie stelle ich das am besten an?


Danke schon mal für eure Mühe. Hoffe ihr versteht was ich will


Gruß Bart
Bitte warten ..
Mitglied: 60730
02.11.2010 um 16:34 Uhr
moin,

der "fc- Befehl" geht ja nur wenn die Daten im selben Ordner liegen?
??? der geht nie - der hat keine Beine

01.
rem preparethetest 
02.
if not exist c:\test md c:\test 
03.
if not exist c:\test\111 md c:\test\111 
04.
if not exist c:\test\222 md c:\test\222 
05.
echo %date%>c:\test\111\123.cfg 
06.
echo %date%>c:\test\222\123.cfg 
07.
rem run the test successfully 
08.
for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a 
09.
pause 
10.
 
11.
rem run the test not successfully 
12.
echo %time%>c:\test\111\123.cfg 
13.
echo %time%>c:\test\222\123.cfg 
14.
for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a 
15.
pause
und das ganze noch etwas sauberer:
01.
for /f %%a in ('dir /b c:\test\111\*.cfg') do if exist c:\test\222\%%a fc c:\test\111\%%a c:\test\222\%%a
Gruß


edit:
Zitat von 60730:
Moin,

aus gegebenem Anlass...(du sollst die scripten)

/edit
Bitte warten ..
Mitglied: Bart15
03.11.2010 um 09:40 Uhr
Hallo,


also ich werde es nun wie folgt machen.

Ich werde einfach eine Batch-Datei anlegen, in dem ich für jeden Switch den FC-Befehl ausführe. Sind ja nicht mehr alle Switche sondern nur noch ein paar. Jetzt kommt aber eine neue Frage auf. Wie stelle ich es denn am geschicktesten an, dass ich alle Ergebnisse vom Vergleich in eine gemeinsamme TXT-Datei speicher. Noch schöner wäre es, wenn er nur die TXT-Datei anlegen würde, wenn er auch Unterschiede finden würde.


Danke

Gruß Bart
Bitte warten ..
Mitglied: 60730
03.11.2010 um 10:09 Uhr
Moin,

hmmm da oben hab ich dir doch einen Weg gezeigt?

Jetzt nimmst du mal diesen Schnippsel und malst vor jeden der beiden Pause in eine zusätzliche Zeile ein echo %errorlevel%.
Damit (obere Schnippsel) hast du zwei von drei Werten, die fc zurückgibt.
Der andere ist da oben mit der Befehlskette "if not exist" ausgeschaltet

Zitat von Bart15:
also wie schon oben beschrieben soll ich eine Batch-Datei scripten

Grob gescriptet hab ich dir die ja schon, aber etwas Eigenleistung solltest du schon aufbringen.

Gruß
Bitte warten ..
Mitglied: Bart15
03.11.2010 um 10:31 Uhr
Hi,

danke schon mal für deine Mühe.

if not exist c:\test md c:\test
if not exist c:\test\111 md c:\test\111
if not exist c:\test\222 md c:\test\222

was willst du den damit bezwecken? Erstellst doch einfach 3 Ordner oder?


echo %date%>c:\test\111\123.cfg
echo %date%>c:\test\222\123.cfg

Damit wird das aktuelle Datum ausgelesen


rem run the test successfully
for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a
pause

rem run the test not successfully
echo %time%>c:\test\111\123.cfg
echo %time%>c:\test\222\123.cfg
for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a

der Inhalt dieser Zeile erschließt sich mir nicht genau. Du vergleichst doch damit alle .cfg dateien in dem Ordner 111 mit den .cfg Dateien in dem Ordner 222 (mithilfe einer For-Schleife)

Warum machst du den Vergleich dann nochmal?

Helf mir mal kurz auf die Sprünge


Gruß Bart
Bitte warten ..
Mitglied: 60730
03.11.2010 um 10:41 Uhr
Zitat von Bart15:
Hi,

danke schon mal für deine Mühe.

was willst du den damit bezwecken? Erstellst doch einfach 3 Ordner oder?
01. rem preparethetest

  • Oder auf Deutsch bereite eine Testumgebung vor...
Damit wird das aktuelle Datum ausgelesen

  • Nein das Datum wird "IN" die beiden Dateien geschrieben

for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a
der Inhalt dieser Zeile erschließt sich mir nicht genau. Du vergleichst doch damit alle .cfg dateien in dem Ordner 111 mit den .cfg Dateien in dem Ordner 222 (mithilfe einer For-Schleife)

  • alle aus Ordner 111 mit Ihrem gleichnamigen Vetter aus Ordner 222
Und wenn du mal deine Frage genauer lesen tutest, die mich zu diesem Testszenario bewegt hat...

Zitat von Bart15:
Der "fc- Befehl" geht ja nur wenn die Daten im selben Ordner liegen?

Warum machst du den Vergleich dann nochmal?
  • Was steht im Rem vor dem zweiten Vergleich?
  • Wenn ich zweimal hintereinander %Time% abfrage -sind die ausgegebenen Werte dann auf die millisekunden identisch?

Helf mir mal kurz auf die Sprünge

  • *gübel* ehrlich - wenn das da oben schon zu komplex ist, das man das nicht nachvollziehen kann, dann muß ich mir wohl einen Kittel mit rückwärtig angebrachten Ärmeln besorgen....
Bitte warten ..
Mitglied: Bart15
03.11.2010 um 15:07 Uhr
Hi,


zu komplex ist das nicht, aber man muss da erstmal durchsteigen. Wenn man das nicht jeden Tag macht ist es schwierig und erst recht wenn man einen Quelltext von einem anderen vor sich liegen hat. Da wirst du mir ja recht geben^^.

Ich habe das nun mal so versucht nachzubilden wie du es mir gegeben hast. For-Schleife und so geht prima. Allerdings hab ich dabei ja immer noch keine Ausgabe der Unterschiede von den Dateien. Wie geb ich dem denn das mit, dass der nach jedem Durchlauf der For-Schleife die Unterschiede in die slebe TXT-Datei schreibt. Soll ja am ende alles in einer Datei stehen.

Die Sache mit der Zeit habe ich jetzt erstmal weggelassen. Sehe ich für mich keine Relevanz darin. Ich hab ja 2 Ordner mit den Konfigdateien. In dem einen sind die neuen und in dem anderen die alten Dateien.




Gruß Bart
Bitte warten ..
Mitglied: 60730
03.11.2010 um 15:43 Uhr
Zitat von Bart15:
Allerdings hab ich dabei ja immer noch keine Ausgabe der Unterschiede von den Dateien. Wie geb ich dem denn das mit, dass der nach jedem Durchlauf der
For-Schleife die Unterschiede in die slebe TXT-Datei schreibt. Soll ja am ende alles in einer Datei stehen.
01.
for /f %%a in ('dir /b c:\test\111\*.cfg') do fc c:\test\111\%%a c:\test\222\%%a>>c:\test\logfile.txt
Die Sache mit der Zeit habe ich jetzt erstmal weggelassen. Sehe ich für mich keine Relevanz darin.
???? Das ist ein einfacher Test der unterschiedliche cfg erzeugt und dir zeigen sollte, was passiert, wenn unterschiedliche Dateien verarbeitet werden....
(ich hätte auch in eine cfg Hallo Otto schreiben und die andere so lassen können)
Ich hab ja 2 Ordner mit den Konfigdateien. In dem einen sind die neuen und in dem anderen die alten Dateien.

Nochmal, du wolltest was selber schreiben, und wirklich so krumm ist keine einzige Zeile, dass man dafür studiert haben muß. (wie bekomme ich eine Ausgabe aus einer Dosbox in eine Textdatei?)
Ich ahne, das einer von uns beiden leicht überfordert ist und werfe das Handtuch...



Gruß
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
CMD-Batch hilfe: Dateiname zu txt (2)

Frage von Syscore64 zum Thema Batch & Shell ...

Batch & Shell
gelöst (Batch) Nummern vergleichen (3)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Textdateien vergleichen BATCH (2)

Frage von FeudelFred zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...