X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=51bc7f5afb485ec90e771bcc95f456ae1f1ebec4;hb=857e80acff709b05a4f4c2ade3911df7593c0ec8;hp=92a111b6a779a3370a5f1fa9d09ad4aff6cabf23;hpb=bcc030dcfd0902bb0b42c31c8ace288901287e4c;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 92a111b..51bc7f5 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -373,12 +373,13 @@ bar_gauge() { awk -v width="$width" ' { - used = $1 - total = $2 + cur = $1 + max = $2 + lab = $3 - u = num_scale(used, total, 1, width) + u = num_scale(cur, max, 1, width) - printf "[" + printf "%s%s[", lab, lab ? " " : "" for (i=1; i<=width; i++) { c = i <= u ? "|" : "-" printf "%s", c @@ -392,30 +393,9 @@ bar_gauge() { ' } -motd() { - uname -srvmo - hostname | figlet - uptime - - echo - - printf 'tmux sessions: %d\n' "$(tmux ls 2> /dev/null | wc -l)" - - echo - - printf 'mem ' - free \ - | awk '$1 == "Mem:" {total=$2; used=$3; print used, total}' \ - | bar_gauge 73 - - printf 'disk ' - df ~ \ - | awk 'NR == 2 {used=$3; avail=$4; total=used+avail; print used, total}' \ - | bar_gauge 73 - +motd_batt() { case "$(uname)" in 'Linux') - printf 'batt ' upower --dump \ | awk ' /^Device:[ \t]+/ { @@ -436,16 +416,46 @@ motd() { /^$/ { if (device["is_battery"] && device["path"] == "/org/freedesktop/UPower/devices/DisplayDevice") - print device["battery_percentage"], 100 + print device["battery_percentage"], 100, "batt" delete device } - ' \ - | bar_gauge 73 + ' ;; esac +} + +indent() { + awk -v unit="$1" '{printf "%s%s\n", unit, $0}' +} + +motd() { + local -r bar_width='60' + local -r indent_unit=' ' + + uname -srvmo + hostname | figlet + uptime + + echo + + printf 'tmux sessions: %d\n' "$(tmux ls 2> /dev/null | wc -l)" + + echo + + echo 'Resources' + ( + free | awk '$1 == "Mem:" {print $3, $2, "mem"}' + df ~ | awk 'NR == 2 {print $3, $3 + $4, "disk"}' + motd_batt + ) \ + | bar_gauge "$bar_width" \ + | column -t \ + | indent "$indent_unit" echo + echo 'Network' + echo "${indent_unit}if" (ifconfig; iwconfig) 2> /dev/null \ | awk ' /^[^ ]/ { @@ -485,10 +495,36 @@ motd() { } } ' \ - | column -t + | column -t \ + | indent "${indent_unit}${indent_unit}" - #echo - # TODO: netstat summary # WARN: ensure: $USER ALL=(ALL) NOPASSWD:/bin/netstat - #sudo -n netstat -tulpn | awk '/^udp/ && !first++ {printf "\n"} 1' + + echo "${indent_unit}-->" + + printf '%sUDP: ' "${indent_unit}${indent_unit}" + sudo -n netstat -ulnp \ + | awk 'NR > 2 {print $6}' \ + | awk -F/ '{print $2}' \ + | sort -u \ + | xargs \ + | column -t + + printf '%sTCP: ' "${indent_unit}${indent_unit}" + sudo -n netstat -tlnp \ + | awk 'NR > 2 {print $7}' \ + | awk -F/ '{print $2}' \ + | sort -u \ + | xargs \ + | column -t + + echo "${indent_unit}<->" + + printf '%sTCP: ' "${indent_unit}${indent_unit}" + sudo -n netstat -tnp \ + | awk 'NR > 2 && $6 == "ESTABLISHED" {print $7}' \ + | awk -F/ '{print $2}' \ + | sort -u \ + | xargs \ + | column -t }