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 txt Konfigurationsdatei über eine Batchdatei teilen lassen

Mitglied: Aerius

Aerius (Level 1) - Jetzt verbinden

06.02.2008, aktualisiert 12.02.2008, 4183 Aufrufe, 13 Kommentare

Hallo,

ich habe mehrere Konfigurationsdateien von Switchen, die um die 20000 Zeilen beinhalten.

Die Dateien heißen BROCADE_IPAdresse.txt.

Innerhalb der Datei befinden sich Konsolenbefehle die immer das gleiche Muster haben, dabei beinhaltet der Konsolenbefehl immer "admin>".

Zum Beispiel: admin> nsshow

Das nsshow zum Beispiel soll danach auch für den Dateinamen dienen, welcher dann so aussehen sollte BROCADE_IPAdresse_nsshow.
Der Inhalt in der Datei sollen die Zeilen zwischen dem Konsolenbefehl und dem nächsten sein.

Die Stelle wo nsshow hier steht müsste aber immer ausgelesen werden, da dort auch andere Befehle stehen können.

Ich hab es bisher nur soweit hinbekommen, das ich über findstr rausgefunden habe in welcher Zeile admin> vorkommt.


Die Dateien sollen am Ende einfach im gleichen Verzeichnis liegen.

Vielleicht kann mir ja hier einer weiterhelfen.

Aerius
Mitglied: rubberduck
07.02.2008 um 10:45 Uhr
Hi Aerius

Bitte nicht böse sein. Aber ich Check nicht, was Du haben willst.
(Und wenn ich die Zeit/Datum Deiner Frage anschaue, bin ich wohl nicht der einzige...)
Kannst Du Deine Frage vielleicht Umformulieren?

So nach Muster:
- Meine Eingabe (mit kleinem Auszug)
- Gewünschte Ausgabe (wie es Aussehen soll)

Ich denke, das die Lösung eigentlich sehr einfach ist.
Ach ja, was hast Du für ein OS? Windows ja (ist Annahme da FINDSTR), aber welches?

Und sollte es sich bereits erledigt haben, dann markier es als Erledigt. Danke
Bitte warten ..
Mitglied: Aerius
07.02.2008 um 11:17 Uhr
Das Betriebssystem ist ein Windows XP verschnitt mit SP1. ;)

BROCADE_IPAdresse.txt

## ScanMaster Version 2.1.0 ##

## Starting SWITCH INFORMATION ##


Type: Switch
HostName / IP: xxx.xxx.xxx.xxx


login:
xxxxxx

Password:
xxxxxx

version
Kernel: 2.4.19
Fabric OS: v5.2.1b
Made on: Mon Apr 9 20:19:56 2007
Flash: Tue Aug 21 11:50:30 2007
BootProm: 4.5.3
na01_sw01:admin> switchshow
switchName: na01_sw01
switchType: 34.0
switchState: Online
switchMode: Native
switchRole: Principal
switchDomain: 1
switchId: xxx
switchWwn: xxx
zoning: OFF
switchBeacon: OFF

Area Port Media Speed State Proto
0 0 id N2 Online F-Port
1 1 id N2 Online F-Port
2 2 id N2 Online L-Port
3 3 id N4 No_Light
4 4 id N2 Online L-Port
5 5 id N4 No_Light
6 6 id N2 Online F-Port
7 7 id N4 Online E-Port
8 8 -- N4 No_Module (No POD License) Disabled
9 9 -- N4 No_Module (No POD License) Disabled
10 10 -- N4 No_Module (No POD License) Disabled
11 11 -- N4 No_Module (No POD License) Disabled
12 12 -- N4 No_Module (No POD License) Disabled
13 13 -- N4 No_Module (No POD License) Disabled
14 14 -- N4 No_Module (No POD License) Disabled
15 15 -- N4 No_Module (No POD License) Disabled
na01_sw01:admin> nsshow
{
...

Das soll durch die Batchdatei geteilt werden.
Immer in der Zeile wo admin> vorkommt und das Kommando dahinter soll mit in den neuen Dateinamen.

Also so..

BROCADE_IPAdresse_switchshow.txt

switchName: na01_sw01
switchType: 34.0
switchState: Online
switchMode: Native
switchRole: Principal
switchDomain: 1
switchId: xxx
switchWwn: xxx
zoning: OFF
switchBeacon: OFF

Area Port Media Speed State Proto
0 0 id N2 Online F-Port
1 1 id N2 Online F-Port
2 2 id N2 Online L-Port
3 3 id N4 No_Light
4 4 id N2 Online L-Port
5 5 id N4 No_Light
6 6 id N2 Online F-Port
7 7 id N4 Online E-Port
8 8 -- N4 No_Module (No POD License) Disabled
9 9 -- N4 No_Module (No POD License) Disabled
10 10 -- N4 No_Module (No POD License) Disabled
11 11 -- N4 No_Module (No POD License) Disabled
12 12 -- N4 No_Module (No POD License) Disabled
13 13 -- N4 No_Module (No POD License) Disabled
14 14 -- N4 No_Module (No POD License) Disabled
15 15 -- N4 No_Module (No POD License) Disabled

BROCADE_IPAdresse_nsshow.txt

{
...


In der ursprünglichen Datei gibt es etwa 10 solcher Abfragen. Der Switchname ist auch nicht immer der gleiche, da ich noch mehr Dateien davon habe mit anderen IPAdressen.
Ich hoffe es war jetzt verständlicher.
Bitte warten ..
Mitglied: rubberduck
07.02.2008 um 20:27 Uhr
Kannst Du mal den den nachfolgenden Code als *.vbs abspeichern (strPfad und strBrocade anpassen)?
Es wird erstmal ein File per : admin> trennen und neue Files erstellen.
Wenn das so O.K. ist, dann geht es zu Schritt 2.

Für alle, die mitlesen:
Ich weiss, beim lesen dieses Codes bekommt man Augenkrebs, aber für's erste funktioniert's

01.
Dim objFSO, objFile, arrLines 
02.
 
03.
strpfad = "c:\MeinFileOrdner\" 
04.
strBrocade = "Brocade_IP.txt" 
05.
intZeiger = 0 
06.
 
07.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
08.
Set objFile = objFSO.OpenTextFile(strpfad & strBrocade, 1) 
09.
 
10.
arrLines = Split(objFile.ReadAll, vbCrLf): objFile.Close 
11.
 
12.
For i = 0 To UBound(arrLines) 
13.
    If InStr(1, arrLines(i), ":admin>") <> 0 Then 
14.
        strFileName = Left(strBrocade, Len(strBrocade) - 4) & "_" & Mid(arrLines(i), InStr(1, arrLines(i), ">") + 2, 50) & ".txt" 
15.
        objFSO.CreateTextFile (strpfad & strFileName) 
16.
        ReDim arrCurrent(0) 
17.
        intZeiger = 1 
18.
    End If 
19.
    If intZeiger = 1 Then 
20.
        intZeiger = 2 
21.
    ElseIf intZeiger = 2 Then 
22.
        ReDim Preserve arrCurrent(UBound(arrCurrent) + 1) 
23.
        arrCurrent(UBound(arrCurrent) - 1) = arrLines(i) 
24.
        Set objFile = objFSO.OpenTextFile(strpfad & strFileName, 2) 
25.
        objFile.Write (Join(arrCurrent, vbCrLf)): objFile.Close 
26.
    End If 
27.
Next
Bitte warten ..
Mitglied: Aerius
08.02.2008 um 12:18 Uhr
wunderbar
Das klappt schonmal.

Jetzt wäre es nur noch schön mit relativen Pfaden und mehrere Dateien.
Vielleicht wäre das mit mehreren Dateien einfacher, wenn man da einfach den Inhalt von einem Ordner nimmt.
Vielen Dank schonmal.
Bitte warten ..
Mitglied: rubberduck
08.02.2008 um 12:30 Uhr
Na klar. Darum sage ich ja auch Schritt 1.
Zuerst baut man einen Durchgang der funktioniert und lässt Ihn danach wiederholen.

Was ich noch nicht weiss, sind alle Deine Log-Files im selben Verzeichnis, oder sind sie es zum Zeitpunkt der Ausführung?
Ach ja, was meinst Du mit relativen Pfaden?
Bitte warten ..
Mitglied: Aerius
08.02.2008 um 12:35 Uhr
Ja sind alle im selben Verzeichnis.

Naja relativer Pfad, das man den Ordner mal verschieben kann. Das Script soll dann einfach in dem Ordner von den Konfigs mit drin liegen.

Will das ganze ja dann in Excel einbauen. ;)
Bzw die einzelnen Dateien irgendwie.
Bitte warten ..
Mitglied: rubberduck
08.02.2008 um 13:29 Uhr
O.K.
Versuchs mal damit:

01.
Dim objFSO, objFile, objFolder, arrLines, strEingabe, strAusgabe, intZeiger 
02.
 
03.
strEingabe = "c:\MeinFileOrdner" 
04.
strAusgabe = "c:\MeinFileOrdner\" 
05.
 
06.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
07.
Set objFolder = objFSO.GetFolder(strEingabe) 
08.
 
09.
For Each File In objFolder.Files 
10.
    If InStr(1, LCase(Right(File, 4)), ".txt") <> 0 Then 
11.
    intZeiger = 0 
12.
        Set objFile = objFSO.OpenTextFile(File, 1) 
13.
        arrLines = Split(objFile.ReadAll, vbCrLf): objFile.Close 
14.
         
15.
        For i = 0 To UBound(arrLines) 
16.
            If InStr(1, arrLines(i), ":admin>") <> 0 Then 
17.
                strFileName = Mid(File.Name, 1, Len(File.Name) - 4) & "_" & Mid(arrLines(i), InStr(1, arrLines(i), ">") + 2, 50) & ".txt" 
18.
                objFSO.CreateTextFile (strAusgabe & strFileName) 
19.
                ReDim arrCurrent(0) 
20.
                intZeiger = 1 
21.
            End If 
22.
 
23.
            If intZeiger = 1 Then 
24.
                intZeiger = 2 
25.
            ElseIf intZeiger = 2 Then 
26.
                ReDim Preserve arrCurrent(UBound(arrCurrent) + 1) 
27.
                arrCurrent(UBound(arrCurrent) - 1) = arrLines(i) 
28.
                Set objFile = objFSO.OpenTextFile(strAusgabe & strFileName, 2) 
29.
                objFile.Write (Join(arrCurrent, vbCrLf)): objFile.Close 
30.
            End If 
31.
        Next 
32.
        Set objFile = Nothing 
33.
        Set objFolder = Nothing 
34.
    End If 
35.
Next
Falls Du noch Fragen zum Script hast, nur zu.
Bitte warten ..
Mitglied: Aerius
08.02.2008 um 14:10 Uhr
Funktioniert soweit, außer das es irgendwie lange dauert nach der ersten Datei bis was passiert.
Kann man sich das anzeigen lassen was er gerade macht, damit man sieht das er noch was macht?
Ansonsten vielen Dank
Bitte warten ..
Mitglied: rubberduck
08.02.2008 um 14:25 Uhr
Das Script so ausführen:
CMD -> cscript ScriptName.vbs
Im Script sind es die Zeilen, wo wscript.echo drinsteht. Kannst natürlich Deine gewünschten Angaben Ausgeben lassen

01.
Dim objFSO, objFile, objFolder, arrLines, strEingabe, strAusgabe, intZeiger 
02.
 
03.
strEingabe = "p:\scripts\brocade" 
04.
strAusgabe = "p:\scripts\brocade\" 
05.
 
06.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
07.
Set objFolder = objFSO.GetFolder(strEingabe) 
08.
 
09.
For Each File In objFolder.Files 
10.
    If InStr(1, LCase(Right(File, 4)), ".txt") <> 0 Then 
11.
    intZeiger = 0 : wscript.echo file 
12.
        Set objFile = objFSO.OpenTextFile(File, 1) 
13.
        arrLines = Split(objFile.ReadAll, vbCrLf): objFile.Close 
14.
         
15.
        For i = 0 To UBound(arrLines) 
16.
            If InStr(1, arrLines(i), ":admin>") <> 0 Then 
17.
                strFileName = Mid(File.Name, 1, Len(File.Name) - 4) & "_" & Mid(arrLines(i), InStr(1, arrLines(i), ">") + 2, 50) & ".txt" 
18.
                objFSO.CreateTextFile (strAusgabe & strFileName) 
19.
                ReDim arrCurrent(0) 
20.
                intZeiger = 1 
21.
            End If 
22.
 
23.
            If intZeiger = 1 Then 
24.
                intZeiger = 2 
25.
            ElseIf intZeiger = 2 Then 
26.
                ReDim Preserve arrCurrent(UBound(arrCurrent) + 1) 
27.
                arrCurrent(UBound(arrCurrent) - 1) = arrLines(i) 
28.
                Set objFile = objFSO.OpenTextFile(strAusgabe & strFileName, 2) 
29.
		wscript.echo arrlines(i) 
30.
                objFile.Write (Join(arrCurrent, vbCrLf)): objFile.Close 
31.
            End If 
32.
        Next 
33.
        Set objFile = Nothing 
34.
        Set objFolder = Nothing 
35.
    End If 
36.
Next
Bitte warten ..
Mitglied: Aerius
08.02.2008 um 14:49 Uhr
Super funktioniert

Aber das er sich den Pfad allein holt ist nicht möglich oder?

Vielen Dank für die tolle Hilfe!
Bitte warten ..
Mitglied: rubberduck
08.02.2008 um 14:56 Uhr
Ist nicht getestet.
Aber in etwa so:

01.
strEingabe = cstr(Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))) 
02.
strAusgabe = cstr(Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))) & "\"
Gibt nur ein Kleines Problem... Das Script muss in genau diesem Ordner sein.
Sonst hast Du ja die Möglichkeit eine Variable zu bennen, also wo liegt das Problem?
Bitte warten ..
Mitglied: Aerius
08.02.2008 um 19:39 Uhr
Einwandfrei, so hab ich mir das vorgestellt.

Vielen Dank, super Forum, weiter so!!!
Bitte warten ..
Mitglied: Aerius
12.02.2008 um 09:41 Uhr
Kleine Frage hätte ich noch,

wo und was müsste ich in das Script einbauen, das er mir den Bereich von "supportshow" überspringt, da sind nur Logdaten drin, die total unwichtig sind aber ewig brauchen beim erstellen.
Dann muss er auch nicht alles durchgehen.

lg Aerius
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

In Batchdatei WLAN-Passwörter ausgeben lassen

Frage von AnonLukeBatch & Shell8 Kommentare

Hi, dies ist mein erster Beitrag, also entschuldigt falls ich im falschen Thema bin. ich wollte mal wieder ne ...

Batch & Shell

Kombinationen - Möglichkeiten in txt schreiben lassen!

Frage von freshman2017Batch & Shell8 Kommentare

Hallo Ihr, ich würde gerne bspw. aus 5 Möglichkeiten: A B C D E die verschiedenen Kombinationen, die sich ...

Batch & Shell

Einen Teil eines Textpfades aus einer TXT per Batch entfernen!?

gelöst Frage von 132749Batch & Shell3 Kommentare

Guten Morgen, ich benötige Eure Hilfe für ein kleines Script! Pfad zur Original txt: C:\myProgramm\DATA1.txt Ausgabepfad soll im gleichen ...

Batch & Shell

In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei

gelöst Frage von donnyS73lbBatch & Shell6 Kommentare

Hallo zusammen, ich möchte fragen, ob es - wie bspw. bei VBScript - auch mit einer Batchdatei möglich ist, ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 8 StundenAusbildung8 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 2 TagenSpeicherkarten2 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 2 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 2 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic22 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

TK-Netze & Geräte
Low budget TK-Anlage für KMU
Frage von HeinklugTK-Netze & Geräte16 Kommentare

Hallo Admins, ich bin auf der Suche nach eine kostengünstigen Telefonanlage für mein kleines Büro mit 4-5 Mitarbeitern. Dabei ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware15 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...