X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=97cb68aa3551c08397eba7b0bd3f3ab8b552aa99;hb=5dfe845a1f4b3b9c1fc302fa5306d662f6d86e06;hp=9730feb17259cc9a3e20c3cbf1d7fa747e7cabcb;hpb=fecd278107b2fad9492187c466558eece2a0e76a;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 9730feb..97cb68a 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -420,42 +420,44 @@ flat_top_5() { max = $2 name = $3 pct = cur / max * 100 - printf "%s%s:%.2f%%", sep, name, pct - sep = " " + printf "%s%s %.2f%%", sep, name, pct + sep = ", " } END {printf "\n"} - ' \ - | column -t + ' } motd_batt() { case "$(uname)" in 'Linux') - upower --dump \ - | awk ' - /^Device:[ \t]+/ { - device["path"] = $2 - next - } - - / battery/ && device["path"] { - device["is_battery"] = 1 - next - } - - / percentage:/ && device["is_battery"] { - device["battery_percentage"] = $2 - sub("%$", "", device["battery_percentage"]) - next - } - - /^$/ { - if (device["is_battery"] && device["path"] == "/org/freedesktop/UPower/devices/DisplayDevice") - print device["battery_percentage"], 100, "batt" - delete device - } - ' + if which upower > /dev/null + then + upower --dump \ + | awk ' + /^Device:[ \t]+/ { + device["path"] = $2 + next + } + + / battery/ && device["path"] { + device["is_battery"] = 1 + next + } + + / percentage:/ && device["is_battery"] { + device["battery_percentage"] = $2 + sub("%$", "", device["battery_percentage"]) + next + } + + /^$/ { + if (device["is_battery"] && device["path"] == "/org/freedesktop/UPower/devices/DisplayDevice") + print device["battery_percentage"], 100, "batt" + delete device + } + ' + fi ;; esac } @@ -473,13 +475,35 @@ motd() { echo - printf 'tmux: sessions %d, clients %d\n' \ + echo 'accounting' + + printf '%stmux\n%ssessions %d, clients %d\n' \ + "$indent_unit" \ + "${indent_unit}${indent_unit}" \ "$(tmux list-sessions 2> /dev/null | wc -l)" \ "$(tmux list-clients 2> /dev/null | wc -l)" echo - echo 'Resources' + printf '%sprocs by user\n' "${indent_unit}" + ps -eo user \ + | awk ' + NR > 1 { + count_by_user[$1]++ + total++ + } + + END { + for (user in count_by_user) + print count_by_user[user], total, user + } + ' \ + | flat_top_5 \ + | indent "${indent_unit}${indent_unit}" + + echo + + echo 'resources' ( free | awk '$1 == "Mem:" {print $3, $2, "mem"}' df ~ | awk 'NR == 2 {print $3, $3 + $4, "disk"}' @@ -491,7 +515,28 @@ motd() { echo - echo 'Network' + printf '%smem by proc\n' "$indent_unit" + ps -eo rss,cmd \ + | awk -v total="$(free | awk '$1 == "Mem:" {print $2; exit}')" ' + NR > 1 { + rss = $1 + cmd = $2 + n = split(cmd, path, "/") # _may_ be a path + proc = path[n] + by_proc[proc] += rss + } + + END { + for (proc in by_proc) + print by_proc[proc], total, proc + } + ' \ + | flat_top_5 \ + | indent "${indent_unit}${indent_unit}" + + echo + + echo 'net' echo "${indent_unit}if" (ifconfig; iwconfig) 2> /dev/null \ | awk ' @@ -565,23 +610,7 @@ motd() { | xargs \ | column -t - echo - - echo 'Process owners (top 5)' - ps -eo user \ - | awk ' - NR > 1 { - count_by_user[$1]++ - total++ - } - - END { - for (user in count_by_user) - print count_by_user[user], total, user - } - ' \ - | flat_top_5 \ - | indent "${indent_unit}" + # TODO: iptables summary } ssh_invalid_attempts_from() {