X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=51bc7f5afb485ec90e771bcc95f456ae1f1ebec4;hb=857e80acff709b05a4f4c2ade3911df7593c0ec8;hp=4680be271872e0046e44007abb2308ecad3b4ff5;hpb=529bfbe7c3c6b4ded3b8e5f33f4b7b5a4dbc7fe0;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 4680be2..51bc7f5 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -373,15 +373,16 @@ 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 "%c", c + c = i <= u ? "|" : "-" + printf "%s", c } printf "]\n" } @@ -392,30 +393,9 @@ bar_gauge() { ' } -motd() { - uname -srvmo - hostname | figlet - uptime - - echo - - printf 'tmux sessions: %d\n' "$(tmux ls | 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 ' /^[^ ]/ { @@ -479,16 +489,42 @@ motd() { if (device != "lo") { l = link[device] e = essid[device] - l = l ? l : "--" + l = l ? sprintf("%.0f%%", l) : "--" e = e ? e : "--" print device, address[device], e, l } } ' \ - | 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 }