74 lines
1.4 KiB
Perl
74 lines
1.4 KiB
Perl
#!/usr/bin/perl
|
|
|
|
$i=@ARGV;
|
|
die "Zu wenige Parameter!\nconvert.pl <Eingabedatei> <Ausgabedatei>" if $i<2;
|
|
|
|
print "\n";
|
|
print "Eingabedatei $ARGV[0]\n";
|
|
print "Ausgabedatei $ARGV[1]\n";
|
|
|
|
|
|
open IN, "<$ARGV[0]";
|
|
open OUT, ">$ARGV[1]";
|
|
|
|
|
|
@INF=<IN>;
|
|
foreach (@INF) {
|
|
chomp;
|
|
router() if ($_ =~ /^!!ROUTER/);
|
|
router() if ($_ =~ /^!!SWITCH/);
|
|
router() if ($_ =~ /^!!FIREWALL/);
|
|
}
|
|
|
|
close IN;
|
|
close OUT;
|
|
|
|
sub router {
|
|
$read_v=0;
|
|
|
|
# Variablen lesen
|
|
foreach (@INF) {
|
|
$read_v=1 if ($_ =~ /^!!VARIABLEN/);
|
|
last if ($_ =~ /^!!CONFIG/);
|
|
next if ($_ =~ /^!/);
|
|
read_var($_) if ($read_v);
|
|
}
|
|
|
|
# Konfig lesen
|
|
$read_c=0;
|
|
foreach (@INF) {
|
|
chomp;
|
|
$read_c=1 if ($_ =~ /^!!CONFIG/);
|
|
if ($read_c) {
|
|
if($_ =~ /<.*>/) {
|
|
($vn)=$_=~/(<.*>)/;
|
|
$_ =~ s/$vn/$VARS{$vn}/;
|
|
next if ($VARS{$vn} eq "");
|
|
}
|
|
# und schreiben
|
|
printf OUT "$_\n";
|
|
}
|
|
}
|
|
# hostname-confg erstellen
|
|
($pfad,$file)=$ARGV[1]=~/(.*)\/([^\/]*)$/;
|
|
$hostname=$pfad.'/'.$VARS{'<HOSTNAME>'}.'-confg';
|
|
print "Ausgabedatei 2 $hostname\n";
|
|
open HN, ">$hostname";
|
|
printf HN "\n!\nend\n\n";
|
|
close HN;
|
|
}
|
|
|
|
sub switch {
|
|
}
|
|
|
|
sub firewall {
|
|
}
|
|
|
|
sub read_var {
|
|
$l=$_[0];
|
|
if ($l=~ /<.*>.*=.*/) {
|
|
($vn, $vv) = $l =~/(<.*>).*=[\s]*(.*)/;
|
|
$VARS{$vn}=$vv;
|
|
}
|
|
}
|