#!/usr/bin/perl use strict; use warnings; use Getopt::Std; my $BASEDIR = "/sys/class/net"; my $USAGE = "$0 [-d] [-m] [network device regexp] -d Display device address (PCI, etc) -m Display MAC address "; my %opts; getopts("md", \%opts) or die $USAGE; if (@ARGV > 1) { die $USAGE; } my $pattern = pop @ARGV; opendir (BASE, $BASEDIR) or die "Unable to read $BASEDIR : $!"; while (my $dirent = readdir(BASE)) { next if ($dirent =~ /^\./); if (defined $pattern) { next unless ($dirent =~ /$pattern/); } my $address = `cat $BASEDIR/$dirent/address`; $address =~ s/\s//g; my $device = "none"; if (-l "$BASEDIR/$dirent/device") { my $linkname = readlink "$BASEDIR/$dirent/device"; my @path = split (/\//, $linkname); $device = $path[$#path]; } print $dirent; print "\t$address" if ($opts{'m'}); print "\t$device" if ($opts{'d'}); print "\n"; } closedir (BASE);