ifconfig example
This commit is contained in:
parent
1e469bdded
commit
5882915d14
|
@ -0,0 +1,75 @@
|
|||
#!/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 = ($flags & Sigar::IFF_LOOPBACK) ?
|
||||
"Local Loopback" : "Ethernet";
|
||||
|
||||
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";
|
||||
}
|
Loading…
Reference in New Issue