X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=7460622dadd78e0c2a6f60b3e2d033c1fbbdcf0c;hb=7d90d81f535afeb368b7c7ede0e9f77b565a3f31;hp=c4a583ab7f0727635442ef2281f0a7d7be6bcbb1;hpb=c5f3db4310cb09059b824d2ba7c68883c174bb89;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index c4a583a..7460622 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -239,8 +239,8 @@ howto() { _yt() { local -r base_dir="$1" - local -r opts="$2" - local -r uri="$3" + local -r uri="$2" + local -r opts="$3" local -r id=$(youtube-dlc --get-id "$uri") local -r title=$(youtube-dlc --get-title "$uri" | sed 's/[^A-Za-z0-9._-]/_/g') @@ -254,7 +254,7 @@ _yt() { yt_audio() { local -r uri="$1" - _yt "${DIR_YOUTUBE_AUDIO}/individual" '-f 140' "$uri" + _yt "${DIR_YOUTUBE_AUDIO}/individual" "$uri" '-f 140' } yt_video() { @@ -428,33 +428,36 @@ flat_top_5() { ' } -motd_batt() { +status_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 } @@ -463,7 +466,7 @@ indent() { awk -v unit="$1" '{printf "%s%s\n", unit, $0}' } -motd() { +status() { local -r indent_unit=' ' uname -srvmo @@ -504,7 +507,7 @@ motd() { ( free | awk '$1 == "Mem:" {print $3, $2, "mem"}' df ~ | awk 'NR == 2 {print $3, $3 + $4, "disk"}' - motd_batt + status_batt ) \ | bar_gauge -v width=60 -v pct=1 \ | column -t \ @@ -581,21 +584,36 @@ motd() { 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 + sudo -n netstat -tulnp \ + | awk -v indent="${indent_unit}${indent_unit}" ' + NR > 2 && ((/^tcp/ && proc = $7) || (/^udp/ && proc = $6)) { + protocol = $1 + addr = $4 + port = a[split(addr, a, ":")] + name = p[split(proc, p, "/")] + names[name] = 1 + protocols[protocol] = 1 + if (!seen[protocol, name, port]++) + ports[protocol, name, ++seen[protocol, name]] = port + } + + END { + for (protocol in protocols) { + printf "%s%s\t", indent, toupper(protocol) + for (name in names) { + if (n = seen[protocol, name]) { + sep = "" + printf "%s:", name + for (i = 1; i <= n; i++) { + printf "%s%d", sep, ports[protocol, name, i] + sep = "," + } + printf " " + } + } + printf "\n" + } + }' echo "${indent_unit}<->" @@ -606,6 +624,8 @@ motd() { | sort -u \ | xargs \ | column -t + + # TODO: iptables summary } ssh_invalid_attempts_from() { @@ -636,7 +656,7 @@ loggers() { split($5, prog, "[") sub(":$", "", prog[1]) # if there were no [], than : will is left behind print prog[1] - }' /var/log/syslog \ + }' /var/log/syslog /var/log/syslog.1 \ | awk ' { n = split($1, path, "/") # prog may be in path form @@ -649,6 +669,7 @@ loggers() { for (prog in count) print count[prog], total, prog }' \ + | sort -n -k 1 \ | bar_gauge -v num=1 -v ch_right=' ' -v ch_left=' ' -v ch_blank=' ' \ | column -t }