network info (primary I/F) script; with workaround for Debian #798329 and iproute2...
authormirabilos <t.glaser@tarent.de>
Tue, 8 Sep 2015 12:57:07 +0000 (14:57 +0200)
committermirabilos <t.glaser@tarent.de>
Tue, 8 Sep 2015 12:57:07 +0000 (14:57 +0200)
mksh/sysadmin/getnetcfg [new file with mode: 0644]

diff --git a/mksh/sysadmin/getnetcfg b/mksh/sysadmin/getnetcfg
new file mode 100644 (file)
index 0000000..35faa02
--- /dev/null
@@ -0,0 +1,90 @@
+# From $Id: chktskfn.in 4521 2015-09-08 12:05:45Z tglase $
+# $MirOS: src/distrib/common/functions,v 1.3 2010/08/26 12:07:40 tg Exp $
+#-
+# Copyright (c) 2008, 2010
+#      Thorsten Glaser <tg@mirbsd.org>
+# Copyright © 2009, 2010, 2011, 2014, 2015
+#      Thorsten Glaser <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un-
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person's immediate fault when using the work as intended.
+
+export LC_ALL=C PATH=/bin:/sbin:/usr/bin:/usr/sbin
+unset LANGUAGE
+
+hn=$(hostname -f || echo $(hostname).invalid.fqdn)
+[[ $hn = *.* ]] || hn=$hn.no.fqdn
+
+lladdr=
+test -s /etc/tarent/primary.mac && lladdr=$(cat /etc/tarent/primary.mac)
+test -n "$lladdr" || lladdr=$(tgetif | \
+    sed -ne '/^ *ether \([0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]\)\( .*\)$/s//\1/p' -e '2,$d' -e '/^.* HWaddr \([0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]\)\( .*\)$/s//\1/p' | head -n 1)
+ipaddr=$(tgetif | sed -n '/^ *inet \(addr:\)*\([0-9.]*\) .*$/s//\2/p')
+netconf=$(/sbin/ip a | tr '\n' '~' | sed 's/~ /= /g' | tr '~' '\n' | fgrep -v vnet | tr '=' '\n' | sed -ne '/^[0-9]*: \([^:@]*\)\(@NONE\)*\([^:]*\):.*$/s//\1\3/p' -e '/inet/s/ scope.*//p' -e '/ link/s/ brd.*$//p'
+    ) || netconf=
+
+function wid {
+       typeset -Uu c
+       local line=$1
+       set -U
+
+       c=${%line}
+       (( c = c == -1 ? ${#line} : c ))
+       REPLY=$c
+}
+
+function maxwidth {
+       typeset -Ui w=0 c
+       local line
+       set -U
+
+       while IFS= read -r line; do
+               c=${%line}
+               (( c = c == -1 ? ${#line} : c ))
+               (( w = c > w ? c : w ))
+       done
+
+       print $w
+}
+
+function pad {
+       typeset -Ui to=$2 from=${3:-0}
+
+       while (( from++ < to )); do
+               REPLY+=$1
+       done
+}
+
+hs="Hostname   : $hn"; hw=${|wid "$hs";}
+ls="MAC address: $lladdr"; lw=${|wid "$ls";}
+is="IP address : $ipaddr"; iw=${|wid "$is";}
+typeset -Ui maxw=$( {
+               print -r -- "$netconf"
+               print -r -- "$hs"
+               print -r -- "$ls"
+       } | maxwidth)
+(( maxw = maxw < 40 ? 40 : maxw ))
+
+print -r -- "┌──┤ Network configuration ├${|pad ─ $maxw 26;}─┐"
+print -r -- "│ $hs${|pad ' ' $maxw $hw;} │"
+print -r -- "│ $is${|pad ' ' $maxw $iw;} │"
+print -r -- "│ $ls${|pad ' ' $maxw $lw;} │"
+print -r -- "│ ${|pad ' ' $maxw;} │"
+print -r -- "$netconf" |&
+while IFS= read -pr line; do
+       xw=${|wid "$line";}
+       print -r -- "│ $line${|pad ' ' $maxw $xw;} │"
+done
+print -r -- "└─${|pad ─ $maxw;}─┘"