#!/usr/local/bin/perl -w # #Tooltje om de wleiden files er generiek uit te laten zien # #Rick van der Zwet (rick@wirelessleiden.nl) use IP; use XML::Writer; use IO::File; #maak een mooi systeem met hash aanroepen om snel gegevens te verwerken sub parse_config { foreach my $id (sort keys %config) { my $rawData = $config{$id}; $rawData =~ s/#.*\n/\n/g; #wegslopen comments $rawData =~ s/\s*[\r,\n]+\s*/:::/g; #spaties+enter+spaties vervangen door ::: $rawData =~ s/^::://; #::: aan het begin weghalen $rawData =~ s/:::$//; #::: aan het eind weghalen my @configArray = split( /:::/, $rawData); #array er van maken foreach $line (@configArray) { (my $name, my $value) = split( /\=/, $line); $$name{$id} = $value; } } } $file = "wleiden.conf"; my $xmlfile = new IO::File(">wleiden.xml"); my $nodeconfig = new XML::Writer(OUTPUT => $xmlfile); $nodeconfig->startTag("?xml version=\"1.0\"?"); $$_ = "" foreach qw(location master_ip gw_open nodetype nodename OS status X Y N E OS DISK AGGREGATE); %$_ = () foreach qw(config TYPE IP DESC SDESC SPEED DHCP DHCP_STATIC OSPF_BROADCAST OSPF_NEIGHBORS MODE ESSID CHANNEL POLAR ANTENNA GAIN DIRECTION BEAMWIDTH CABLE HEIGHT ROUTE); do($file) || die("Can't open file"); foreach my $id (sort keys %config) { my $rawData = $config{$id}; $rawData =~ s/#.*\n/\n/g; #wegslopen comments $rawData =~ s/\s*[\r,\n]+\s*/:::/g; #spaties+enter+spaties vervangen door ::: $rawData =~ s/^::://; #::: aan het begin weghalen $rawData =~ s/:::$//; #::: aan het eind weghalen my @configArray = split( /:::/, $rawData); #array er van maken foreach $line (@configArray) { (my $name, my $value) = split( /\=/, $line); $$name{$id} = $value; $nodeconfig->startTag($id); $nodeconfig->dataElement($name , $value); } } #parse_config; #write_xml; $xmlfile->close();