NetInfoExtractor
view release on metacpan or search on metacpan
lib/NetInfoExtractor/Interface.pm view on Meta::CPAN
my $self = shift;
$self->networks([]);
return;
}
sub init {
my $self = shift;
opendir (DIR, $base_folder) or die "Folder $base_folder was not possible to read: $!\n";
while (my $networks_folder = readdir (DIR)) {
next if ($networks_folder =~ m/^\.$/);
next if ($networks_folder =~ m/^\.\.$/);
$self->parse_network_interface_folder ($networks_folder);
}
closedir(DIR);
return;
}
sub parse_network_interface_folder {
my $self = shift;
my $interface_name = shift;
my %network_interface = ( name => $interface_name );
my $folder = $base_folder . "/" . $interface_name;
opendir (INTF_DIR, $folder) or die "Folder $folder was not possible to read: $!\n";
while (my $files = readdir(INTF_DIR)) {
next if ($files =~ m/^\./);
if ($files eq "address") {
my $fn = $folder . "/" . $files;
$network_interface{'macaddress'} = eval { read_mac_address_file ($fn); };
}
if ($files eq "mtu") {
my $fn = $folder . "/" . $files;
$network_interface{'mtu'} = eval { read_mtu_file ($fn); };
}
if ($files eq "speed") {
my $fn = $folder . "/" . $files;
$network_interface{'speed'} = eval { read_speed_file ($fn); };
}
}
closedir(INTF_DIR);
my $ifconfig_output = eval { my $cmd_out = `ifconfig $interface_name`; return $cmd_out; };
$network_interface{'ipv4'} = parse_ipv4_address($ifconfig_output);
$network_interface{'ipv6'} = parse_ipv6_address($ifconfig_output);
push(@{$self->networks}, \%network_interface);
return;
}
sub parse_ipv4_address {
my $ifconfig_output = shift;
my ($ipv4) = $ifconfig_output =~ m/inet\saddr:((\d{1,3}\.){3}\d{1,3})/g;
return $ipv4;
}
sub parse_ipv6_address {
my $ifconfig_output = shift;
my ($ipv6) = $ifconfig_output =~ m/inet6\saddr:\s(.*)\//g;
return $ipv6;
}
sub read_mac_address_file {
my $file = shift;
open my $opened_file, "<", $file || die("Could not open file $file. $!.");
my $line;
while (<$opened_file>) {
chomp $_;
$line = $_;
}
close $opened_file;
return $line;
}
sub read_mtu_file {
my $file = shift;
open my $opened_file, "<", $file || die("Could not open file $file. $!.");
my $line;
while (<$opened_file>) {
chomp $_;
$line = $_;
}
close $opened_file;
return $line;
}
sub read_speed_file {
my $file = shift;
open my $opened_file, "<", $file || die("Could not open file $file. $!.");
my $line;
while (<$opened_file>) {
chomp $_;
$line = $_;
}
close $opened_file;
return $line;
}
1;
( run in 0.813 second using v1.01-cache-2.11-cpan-39bf76dae61 )