X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=426cbb29d32dcd84ab37efc7762f91da66ecdf5a;hb=b635bb83baeb50114b3f5966a41fa67d83abb61b;hp=cae7b990afcd3791903426b51e8d65b1cd4acb6b;hpb=713423d0746543e393a72bfe1a600d024d064485;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index cae7b99..426cbb2 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -334,7 +334,7 @@ EOF work_log() { mkdir -p "$DIR_WORK_LOG" - local -r file_work_log_today="${DIR_WORK_LOG}/$(date +%F).md" + local -r file_work_log_today="${DIR_WORK_LOG}/daily-$(date +%F).md" if [ ! -f "$file_work_log_today" ] then work_log_template > "$file_work_log_today" @@ -556,14 +556,29 @@ status() { echo + local _dir temp_input label_file label + printf '%sthermal\n' "$indent_unit" - for _dir in /sys/class/thermal/thermal_zone* - do - printf '%s %.2f C\n' \ - $(cat "$_dir"/type) \ - $(( $(cat "$_dir"/temp) / 1000 )) + for _dir in /sys/class/hwmon/hwmon*; do + cat "$_dir"/name + find "$_dir"/ -name 'temp*_input' \ + | while read -r temp_input; do + label_file=${temp_input//_input/_label} + if [ -f "$label_file" ]; then + label=$(< "$label_file") + else + label='' + fi + awk -v label="$label" '{ + if (label) + label = sprintf(" (%s)", label) + printf("%.2f°C%s\n", $1 / 1000, label) + }' \ + "$temp_input" + done \ + | sort \ + | indent "$indent_unit" done \ - | column -t \ | indent "${indent_unit}${indent_unit}" echo 'net' @@ -663,19 +678,75 @@ status() { # TODO: iptables summary } -ssh_invalid_attempts_from() { +ssh_invalid_by_addr() { awk ' /: Invalid user/ && $5 ~ /^sshd/ { - u=$8 addr=$10 == "port" ? $9 : $10 max++ - curr[addr]++ + by_addr[addr]++ + } + + END { + for (addr in by_addr) + if ((c = by_addr[addr]) > 1) + printf "%d %d %s\n", c, max, addr + } + ' \ + /var/log/auth.log \ + /var/log/auth.log.1 \ + | sort -n -k 1 \ + | bar_gauge -v width="$(stty size | awk '{print $2}')" -v num=1 -v ch_right=' ' -v ch_left=' ' -v ch_blank=' ' \ + | column -t +} + +ssh_invalid_by_day() { + awk ' + BEGIN { + m["Jan"] = "01" + m["Feb"] = "02" + m["Mar"] = "03" + m["Apr"] = "04" + m["May"] = "05" + m["Jun"] = "06" + m["Jul"] = "07" + m["Aug"] = "08" + m["Sep"] = "09" + m["Oct"] = "10" + m["Nov"] = "11" + m["Dec"] = "12" + } + + /: Invalid user/ && $5 ~ /^sshd/ { + day = m[$1] "-" $2 + max++ + by_day[day]++ + } + + END { + for (day in by_day) + if ((c = by_day[day]) > 1) + printf "%d %d %s\n", c, max, day + } + ' \ + /var/log/auth.log \ + /var/log/auth.log.1 \ + | sort -n -k 1 \ + | bar_gauge -v width="$(stty size | awk '{print $2}')" -v num=1 -v ch_right=' ' -v ch_left=' ' -v ch_blank=' ' \ + | column -t +} + +ssh_invalid_by_user() { + awk ' + /: Invalid user/ && $5 ~ /^sshd/ { + user=$8 + max++ + by_user[user]++ } END { - for (addr in curr) - if ((c = curr[addr]) > 1) - print c, max, addr + for (user in by_user) + if ((c = by_user[user]) > 1) + printf "%d %d %s\n", c, max, user } ' \ /var/log/auth.log \