verzia 2.1, 2007/08/29 14:43:55 |
verzia 2.2, 2015/10/12 22:41:24 |
|
|
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
|
|
|
use strict; |
|
use warnings; |
|
|
# |
# |
# ifconfig-parse.pl - parse output from ifconfig and print |
# ifconfig-parse.pl - parse output from ifconfig and print |
# in format suitable for eval in shell |
# in format suitable for eval in shell |
|
|
# 2007-08-29 - created |
# 2007-08-29 - created |
# |
# |
|
|
# $Platon: $ |
# $Platon: scripts/shell/firewall/ifconfig-parse.pl,v 2.1 2007-08-29 14:43:55 rajo Exp $ |
|
|
#use Data::Dumper; |
#use Data::Dumper; |
|
|
my $iface_count = 0; |
my $iface_count = 0; |
my $iface; |
my $iface; |
my (%ip6, %scope6, %bcast, %mask, %hwaddr, %ipcount); |
my (%ip, %ifname, %ip6, %scope6, %bcast, %mask, %hwaddr, %ipcount); |
|
|
while (my $line = <STDIN>) { |
while (my $line = <STDIN>) { |
chomp $line; |
chomp $line; |
if ($line =~ m/^([a-z0-9:]+)\s+.*?([a-z0-9:]+)\s*$/i) { # Linux interface |
if ($line =~ m/^([a-z0-9:]+)\s+.*?([a-z0-9:]+)\s*$/i) { # Linux interface |
$iface = $1; |
$iface = $1; |
my $iface_hwaddr = $2; |
my $iface_hwaddr = $2; |
$iface = [ $iface =~ m/^([a-z0-9]+)/i ]->[0]; # convert "eth0:0" --> "eth0" |
my $x_iface = $iface; |
|
$iface =~ s/:$//g; |
|
$iface =~ s/:/_/g; # convert "eth0:0" --> "eth0_0" |
|
$x_iface = [ $x_iface =~ m/^([a-z0-9]+)/i ]->[0]; # convert "eth0:0" --> "eth0" |
|
$ifname{$iface} = $x_iface; |
$ipcount{$iface}++; |
$ipcount{$iface}++; |
$hwaddr{$iface} = $iface_hwaddr; |
$hwaddr{$iface} = $iface_hwaddr; |
$iface_count++; |
$iface_count++; |
Riadok 44 while (my $line = <STDIN>) { |
|
Riadok 51 while (my $line = <STDIN>) { |
|
push @{$ip6{$iface}}, $fields[3]; |
push @{$ip6{$iface}}, $fields[3]; |
$scope6{$iface} = [ $fields[4] =~ m/Scope:(.*)$/i ]->[0]; |
$scope6{$iface} = [ $fields[4] =~ m/Scope:(.*)$/i ]->[0]; |
} |
} |
|
elsif ($line =~ m/^[ \t]+inet\s/) { # Linux IP address |
|
die unless defined $iface; |
|
my @fields = split(/[\s:]+/, $line); |
|
push @{$ip{$iface}}, $fields[2]; |
|
$bcast{$iface} = (defined($fields[5]) and $fields[5] eq "broadcast") ? $fields[6] : ""; |
|
$mask{$iface} = $fields[4]; |
|
} |
|
|
} |
} |
|
|
map { printf "IP_%s=\"%s\"; export IP_%s;\n", $_, join(" ", @{$ip{$_}}), $_; } keys %ip; |
map { printf "IP_%s=\"%s\"; export IP_%s;\n", $_, join(" ", @{$ip{$_}}), $_; } keys %ip; |
Riadok 54 map { printf "Bcast_%s=\"%s\"; export B |
|
Riadok 68 map { printf "Bcast_%s=\"%s\"; export B |
|
map { printf "Mask_%s=\"%s\"; export Mask_%s;\n", $_, $mask{$_}, $_; } keys %mask; |
map { printf "Mask_%s=\"%s\"; export Mask_%s;\n", $_, $mask{$_}, $_; } keys %mask; |
map { printf "HWaddr_%s=\"%s\"; export HWaddr_%s;\n", $_, $hwaddr{$_}, $_; } keys %hwaddr; |
map { printf "HWaddr_%s=\"%s\"; export HWaddr_%s;\n", $_, $hwaddr{$_}, $_; } keys %hwaddr; |
map { printf "IPcount_%s=\"%s\"; export IPcount_%s;\n", $_, $ipcount{$_}, $_; } keys %ipcount; |
map { printf "IPcount_%s=\"%s\"; export IPcount_%s;\n", $_, $ipcount{$_}, $_; } keys %ipcount; |
printf "interfaces=\"%s\"; export interfaces;\n", join(" ", keys %ip); |
map { printf "IFname_%s=\"%s\"; export IFname_%s;\n", $_, $ifname{$_}, $_; } keys %ifname; |
|
printf "interfaces=\"%s\"; export interfaces;\n", join(" ", sort keys %ip); |
|
|