sigar/bindings/perl/examples/ifconfig.pl

75 lines
1.9 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use Sigar;
my $sigar = new Sigar;
my $iflist = $sigar->net_interface_list;
for my $ifname (@$iflist) {
my $ifconfig = $sigar->net_interface_config($ifname);
my $flags = $ifconfig->flags;
my $encap = $ifconfig->type;
my $hwaddr = $ifconfig->hwaddr;
if ($hwaddr eq Sigar::NULL_HWADDR) {
$hwaddr = "";
}
else {
$hwaddr = " HWaddr " . $hwaddr;
}
print $ifname . "\t" . "Link encap:" . $encap . $hwaddr . "\n";
my $ptp = "";
if ($flags & Sigar::IFF_POINTOPOINT) {
$ptp = " P-t-P:" . $ifconfig->destination;
}
my $bcast = "";
if ($flags & Sigar::IFF_BROADCAST) {
$bcast = " Bcast:" . $ifconfig->broadcast;
}
print "\t" . "inet addr:" . $ifconfig->address .
$ptp . $bcast . " Mask:" . $ifconfig->netmask . "\n";
print "\t" .
Sigar::net_interface_flags_string($flags) .
" MTU:" . $ifconfig->mtu .
" Metric:" . $ifconfig->metric . "\n";
my $ifstat;
eval {
$ifstat = $sigar->net_interface_stat($ifname);
} or next;
print "\t" .
"RX packets:" . $ifstat->rx_packets .
" errors:" . $ifstat->rx_errors .
" dropped:" . $ifstat->rx_dropped .
" overruns:" . $ifstat->rx_overruns .
" frame:" . $ifstat->rx_frame . "\n";
print "\t" .
"TX packets:" . $ifstat->tx_packets .
" errors:" . $ifstat->tx_errors .
" dropped:" . $ifstat->tx_dropped .
" overruns:" . $ifstat->tx_overruns .
" carrier:" . $ifstat->tx_carrier . "\n";
print "\t" . "collisions:" . $ifstat->tx_collisions . "\n";
my $rx_bytes = $ifstat->rx_bytes;
my $tx_bytes = $ifstat->tx_bytes;
print "\t" .
"RX bytes:" . $rx_bytes .
" (" . Sigar::format_size($rx_bytes) . ")" .
" " .
"TX bytes:" . $tx_bytes .
" (" . Sigar::format_size($tx_bytes) . ")" . "\n\n";
}