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 )