BBB File /usr/local/sbin/ifdisplay
From Wiki
Jump to navigationJump to search
This script is called from /etc/rc.local when the BBB starts up, and also from the BBB File /usr/local/sbin/ipwatchd daemon when an IP address changes on a network interface.
It could probably be cleaned up, but it's not called very often, and performance is hardly critical.
#!/bin/sh showConfigSingle () { # wlan0 IEEE 802.11bgn Mode:Master Tx-Power=20 dBm # Retry long limit:7 RTS thr:off Fragment thr:off # Power Management:off # # eth0 no wireless extensions. # mode=`iwconfig $1 2>/dev/null | perl -e ' $/ = undef; $a = <>; ($mode) = $a =~ /Mode:(\w+)/; $mode =~ s/Master/AP/; $mode =~ s/Managed/Client/; print $mode || "None"; '` # 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000\ link/ether c8:a0:30:b1:18:a2 brd ff:ff:ff:ff:ff:ff # 2: eth0 inet 172.16.0.128/16 brd 172.16.255.255 scope global eth0 # 2: eth0 inet6 fe80::caa0:30ff:feb1:18a2/64 scope link \ valid_lft forever preferred_lft forever ip -o addr | perl -se ' $/ = undef; $a = <>; print " Intf: $intf\n"; ($mac) = $a =~ /${intf}.*ether (.*?) /; print "Status: " . (defined ($mac) ? "Up" : "Down") . "\n"; print " Mode: " . $mode . "\n" unless ($mode =~ /None/); if (defined $mac) { ($addr) = $a =~ /${intf}.*inet (.*?)\//; ($mask) = $a =~ /${intf}.*inet.*?(\d+) brd/; ($bcast) = $a =~ /${intf}.*brd (.*?) /; $mask = ~((1 << (32 - $mask)) - 1); print " MAC: $mac\n"; print " Addr: $addr\n"; printf (" Mask: %d.%d.%d.%d\n", ($mask >> 24) & 0xff, ($mask >> 16) & 0xff, ($mask >> 8) & 0xff, $mask & 0xff); print " Bcast: $bcast\n"; } ' -- -intf=$1 -mode=$mode >>$2 # default via 172.16.0.254 dev eth0 # 172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.0.128 # 192.168.7.0/30 dev usb0 proto kernel scope link src 192.168.7.2 # 192.168.17.0/24 dev wlan0 proto kernel scope link src 192.168.17.1 ip route | perl -se ' $/ = undef; $a = <>; ($src) = $a =~ /${intf}.*src (.*)$/m; if (defined $src) { ($gateway) = $a =~ /default via (.*?) /; print " Route: $gateway\n"; } ' -- -intf=$1 >>$2 echo >>$2 } showConfig () { tmp=`mktemp` for intf in eth0 wlan0; do showConfigSingle $intf $tmp done lpr < $tmp rm -f $tmp } showConfig