/usr/local/CPAN/pfacter/Pfacter/macaddress.pm
package Pfacter::macaddress;
#
sub pfact {
my $self = shift;
my ( $p ) = shift->{'pfact'};
my ( $r );
for ( $p->{'kernel'} ) {
/AIX/ && do {
my ( $d, @i );
if ( -e '/usr/bin/netstat' ) {
open( F, '/usr/bin/netstat -ia |' );
my ( @F ) = <F>;
close( F );
foreach ( @F ) {
$d = $1 if /^(\w+)\s+/;
push @i, "$d=$1" if /(\w+\:\w+\:\w+\:\w+\:\w+\:\w+)/;
}
$r = join ' ', sort @i;
}
};
/Darwin|FreeBSD|Linux|SunOS/ && do {
my ( $d, @i );
if ( -e '/sbin/ifconfig' ) {
open( F, '/sbin/ifconfig -a |' );
my ( @F ) = <F>;
close( F );
foreach ( @F ) {
$p->{'kernel'} =~ /Darwin|FreeBSD|SunOS/ && do {
$d = $1 if /^(\w+)\:/;
push @i, "$d=$1"
if /ether\s+(\w+\:\w+\:\w+\:\w+\:\w+\:\w+)/;
};
$p->{'kernel'} =~ /Linux/ && do {
$d = $1 if ( /^(\w+)\s+/ || /^(\w+:\d+)\s+/ );
push @i, "$d=$1"
if /HWaddr\s+(\w+\:\w+\:\w+\:\w+\:\w+\:\w+)/;
};
}
$r = join ' ', sort @i;
}
};
if ( $r ) { return( $r ); }
else { return( 0 ); }
}
}
1;