Bestimmte Informationen aus einer XML in eine TXT speichern
Ich bin ein wenig am verzweifeln, da ich überhaupt keine Ahnung vom Scripten habe.
Ich habe eine XMl Datei mit Informationen vom Netzwerkrichtlinienserver. Diese werden einmal am Tag gespeichert in eine Datei. Jetzt muss aus dieser Datei eine neue TXT Datei erstellt werden wo aber nur noch die Informationen: Username/IP/MAC und Datum/Uhrzeit gespeichert wird, weil der Rest nicht wichtig ist bzw. das andere Programm damit nichts anfangen kann. Kann mir jemand helfen ?
<Event><Timestamp data_type="4">02/15/2013 11:07:09.580</Timestamp><Computer-Name data_type="1">SRV-D307-01</Computer-Name><Event-Source data_type="1">IAS</Event-Source><NAS-IP-Address data_type="3">172.17.43.105</NAS-IP-Address><NAS-Port data_type="0">0</NAS-Port><Called-Station-Id data_type="1">00-21-29-03-35-20:IT</Called-Station-Id><Calling-Station-Id data_type="1">BC-77-37-B0-1B-44</Calling-Station-Id><Framed-MTU data_type="0">1400</Framed-MTU><NAS-Port-Type data_type="0">19</NAS-Port-Type><Connect-Info data_type="1">CONNECT 0Mbps 802.11g</Connect-Info><Client-IP-Address data_type="3">172.17.43.105</Client-IP-Address><Client-Vendor data_type="0">9</Client-Vendor><Client-Friendly-Name data_type="1">CISCO-AP-D310</Client-Friendly-Name><User-Name data_type="1">schöps</User-Name><Proxy-Policy-Name data_type="1">Use Windows authentication for all users</Proxy-Policy-Name><Provider-Type data_type="0">1</Provider-Type><SAM-Account-Name data_type="1">IT\testuser</SAM-Account-Name><Class data_type="1">311 1 172.17.43.90 01/13/2013 02:23:18 86614</Class><Authentication-Type data_type="0">5</Authentication-Type><NP-Policy-Name data_type="1">wlanabfrage</NP-Policy-Name><Fully-Qualifed-User-Name data_type="1">it.local/Schueler/ITA_0/Hendrick Test</Fully-Qualifed-User-Name><Quarantine-Update-Non-Compliant data_type="0">1</Quarantine-Update-Non-Compliant><Packet-Type data_type="0">1</Packet-Type><Reason-Code data_type="0">0</Reason-Code></Event>
Und von diesen Events stehen ganz viele in dieser Datei.
Danke für die Hilfe im Vorraus !
Ich habe eine XMl Datei mit Informationen vom Netzwerkrichtlinienserver. Diese werden einmal am Tag gespeichert in eine Datei. Jetzt muss aus dieser Datei eine neue TXT Datei erstellt werden wo aber nur noch die Informationen: Username/IP/MAC und Datum/Uhrzeit gespeichert wird, weil der Rest nicht wichtig ist bzw. das andere Programm damit nichts anfangen kann. Kann mir jemand helfen ?
<Event><Timestamp data_type="4">02/15/2013 11:07:09.580</Timestamp><Computer-Name data_type="1">SRV-D307-01</Computer-Name><Event-Source data_type="1">IAS</Event-Source><NAS-IP-Address data_type="3">172.17.43.105</NAS-IP-Address><NAS-Port data_type="0">0</NAS-Port><Called-Station-Id data_type="1">00-21-29-03-35-20:IT</Called-Station-Id><Calling-Station-Id data_type="1">BC-77-37-B0-1B-44</Calling-Station-Id><Framed-MTU data_type="0">1400</Framed-MTU><NAS-Port-Type data_type="0">19</NAS-Port-Type><Connect-Info data_type="1">CONNECT 0Mbps 802.11g</Connect-Info><Client-IP-Address data_type="3">172.17.43.105</Client-IP-Address><Client-Vendor data_type="0">9</Client-Vendor><Client-Friendly-Name data_type="1">CISCO-AP-D310</Client-Friendly-Name><User-Name data_type="1">schöps</User-Name><Proxy-Policy-Name data_type="1">Use Windows authentication for all users</Proxy-Policy-Name><Provider-Type data_type="0">1</Provider-Type><SAM-Account-Name data_type="1">IT\testuser</SAM-Account-Name><Class data_type="1">311 1 172.17.43.90 01/13/2013 02:23:18 86614</Class><Authentication-Type data_type="0">5</Authentication-Type><NP-Policy-Name data_type="1">wlanabfrage</NP-Policy-Name><Fully-Qualifed-User-Name data_type="1">it.local/Schueler/ITA_0/Hendrick Test</Fully-Qualifed-User-Name><Quarantine-Update-Non-Compliant data_type="0">1</Quarantine-Update-Non-Compliant><Packet-Type data_type="0">1</Packet-Type><Reason-Code data_type="0">0</Reason-Code></Event>
Und von diesen Events stehen ganz viele in dieser Datei.
Danke für die Hilfe im Vorraus !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 202148
Url: https://administrator.de/contentid/202148
Ausgedruckt am: 23.11.2024 um 12:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
das kann man mit jeder Skriptsprache machen. Es gibt auch Module, die XML parsen und verarbeiten können, die stehen für jede Skriptsprache zur Verfügung.
Ich mache solche Sachen mit Perl.
Wie sind denn Deine Kenntnisse?
Welche Programmiersprachen kannst Du?
Hast Du Vorgaben hinsichtlich der zu verwendenden Werkzeuge?
Ach ja, ist das wirklich alles ohne Zeilenumbruch?
Markus
das kann man mit jeder Skriptsprache machen. Es gibt auch Module, die XML parsen und verarbeiten können, die stehen für jede Skriptsprache zur Verfügung.
Ich mache solche Sachen mit Perl.
Wie sind denn Deine Kenntnisse?
Welche Programmiersprachen kannst Du?
Hast Du Vorgaben hinsichtlich der zu verwendenden Werkzeuge?
Ach ja, ist das wirklich alles ohne Zeilenumbruch?
Markus
Das folgende Skript ist mal ein Anfang.
Am besten auf einem Linuxrechner ausprobieren. auf der Kommandozeile.
der Ausdruck "</Event>" ist Zeilentrenner, damit werden die Daten zwischen <Event> und </Event> als ein Datensatz genommen.
Markus
#!/usr/bin/perl
use strict ;
use warnings ;
use feature 'say' ;
my $data ;
open XML, "$ARGV" ;
$/ = "</Event>" ;
foreach $data ( <XML> ) {
$data =~ m/<Timestamp[^>]+[>](.+)<\/Time[^>]+[>]/ && say $1 ;
$data =~ m/<User[^>]+[>](.+)<\/User[^>]+[>]/ && say $1 ;
$data =~ m/<NAS\-IP[^>]+[>](.+)<\/NAS\-IP[^>]+[>]/ && say $1 ;
$data =~ m/<Called-Station-Id[^>]+[>](.+)<\/Called[^>]+[>]/ && say $1 ;
}
close XML ;
./skriptname dateiname.xml
der Ausdruck "</Event>" ist Zeilentrenner, damit werden die Daten zwischen <Event> und </Event> als ein Datensatz genommen.
Markus
Hallo LeifuXP,
magst du etwas mehr über den Aufbau der Datei erklären? Welche XML-Deklaration befindet sich am Anfang der Datei? Kannst du den Pfad nennen, unter dem alle Event-Knoten zu finden sind? Welche Scripttypen kannst du ausführen (Betriebssystem)?
Ggf. wird es dann per "Document Object Model" ganz einfach an die Daten zu kommen.
Grüße
rubberman
magst du etwas mehr über den Aufbau der Datei erklären? Welche XML-Deklaration befindet sich am Anfang der Datei? Kannst du den Pfad nennen, unter dem alle Event-Knoten zu finden sind? Welche Scripttypen kannst du ausführen (Betriebssystem)?
Ggf. wird es dann per "Document Object Model" ganz einfach an die Daten zu kommen.
Grüße
rubberman