X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc;h=5f43270c3c9e516864451eb357515db853756764;hb=3ca4714d6b02ff279a0c724415f3e0a3a6f49059;hp=fdd8e2cf73b6b564f94e185feb7e2192ea74eef7;hpb=ce4cacd36c5b5babeea85d0f93771017e6169180;p=distro-setup diff --git a/brc b/brc index fdd8e2c..5f43270 100644 --- a/brc +++ b/brc @@ -466,6 +466,10 @@ c() { } ccomp cd c +bwm() { + s bwm-ng -T avg -d +} + b() { local topb if (( ${#_iankdirb[@]} == 0 )); then @@ -779,6 +783,19 @@ despace() { done } +# get ipv4 ip from HOST. or if it is already a number, return that +hostip() { + local host="$1" + case $host in + [0-9:]) + echo "$host" + ;; + *) + getent ahostsv4 "$host" | awk '{ print $1 }' | head -n1 + ;; + esac +} + dig() { command dig +nostats +nocmd "$@" } @@ -827,7 +844,7 @@ dus() { # du, sorted, default arg of ccomp du dus -e() { printf "%s\n" "$@"; } +e() { printf "%s\n" "$*"; } # echo args ea() { @@ -861,14 +878,21 @@ ediff() { # mail related etail() { + ngset + tail -F /var/log/exim4/mainlog /var/log/exim4/*main /var/log/exim4/paniclog /var/log/exim4/*panic -n 200 "$@" + ngreset +} +etailm() { tail -F /var/log/exim4/mainlog -n 200 "$@" } etail2() { tail -F /var/log/exim4/mymain -n 200 "$@" } - ccomp tail etail etail2 + + + # print exim old pids eoldpids() { local configtime pid piduptime now daemonpid @@ -927,14 +951,18 @@ eless() { } ccomp less eless eqcat() { - exiqgrep -i -o 60 | while read -r i; do + exiqgrep -ir.\* -o 60 | while read -r i; do hlm exim -Mvc $i echo hlm exigrep $i /var/log/exim4/mainlog | cat ||: done } eqrmf() { - exiqgrep -i | xargs exim -Mrm + # other ways to get the list of message ids: + # exim -bp | awk 'NF == 4 {print $3}' + # # this is slower 160ms, vs 60. + # exipick -i + exiqgrep -ir.\* | xargs exim -Mrm } econfdevnew() { @@ -1215,6 +1243,7 @@ ipp() { ifn() { # insensitive find + # -L = follow symlinks find -L . -not \( -name .svn -prune -o -name .git -prune \ -o -name .hg -prune -o -name .editor-backups -prune \ -o -name .undo-tree-history -prune \) -iname "*$**" 2>/dev/null @@ -1386,12 +1415,44 @@ nags() { } nmt() { - s nmtui-connect "$@" + # cant use s because sudo -i doesnt work for passwordless sudo command + case $EUID in + 0) + sudo nmtui-connect "$@" + ;; + *) + nmtui-connect "$@" + ;; + esac +} + + +ngset() { + if shopt nullglob >/dev/null; then + ngreset=false + else + shopt -s nullglob + ngreset=true + fi +} +ngreset() { + if $ngreset; then + shopt -u nullglob + fi } nopanic() { # shellcheck disable=SC2024 - sudo tee -a /var/log/exim4/paniclog-archive /dev/null || [[ $(systemctl is-active systemd-resolved ||:) != inactive ]]; then hr; m ser status systemd-resolved | cat || : - hr; m systemd-resolve --status | cat + hr; m resolvectl status | cat fi } @@ -1711,7 +1772,7 @@ sk() { local quotes others quotes=2048,2068,2086,2206 - others=2029,2033,2164 + others=2029,2033,2054,2164 shellcheck -W 999 -x -e $quotes,$others "$@" || return $? } @@ -2110,6 +2171,30 @@ nonet() { m() { printf "%s\n" "$*"; "$@"; } +# update file. note: duplicated in mail-setup +u() { + local tmp tmpdir dest="$1" + local base="${dest##*/}" + local dir="${dest%/*}" + if [[ $dir != "$base" ]]; then + # dest has a directory component + mkdir -p "$dir" + fi + ur=false # u result + tmpdir=$(mktemp -d) + cat >$tmpdir/"$base" + tmp=$(rsync -ic $tmpdir/"$base" "$dest") + if [[ $tmp ]]; then + printf "%s\n" "$tmp" + ur=true + if [[ $dest == /etc/systemd/system/* ]]; then + reload=true + fi + fi + rm -rf $tmpdir +} + + uptime() { if type -p uprecords &>/dev/null; then uprecords -B @@ -2154,6 +2239,85 @@ s/^\Wcapability: (.*)/\1/;Ta;h;b "|sort -r } +# Run script by copying it to a temporary location first, +# and changing directory, so we don't have any open +# directories or files that could cause problems when +# remounting. +z() { + local tmp + tmp=$(type -p "$1") + if [[ $tmp ]]; then + cd $(mktemp -d) + cp -a "$tmp" . + shift + ./"${tmp##*/}" "$@" + else + "$@" + fi +} + + +# * spark +# spark 1 5 22 13 53 +# # => ▁▁▃▂▇ + +# The MIT License +# Copyright (c) Zach Holman, https://zachholman.com +# https://github.com/holman/spark + +# As of 2022-10-28, I reviewed github forks that had several newer +# commits, none had anything interesting. I did a little refactoring +# mostly to fix emacs indent bug. + +# Generates sparklines. +_spark_echo() +{ + if [ "X$1" = "X-n" ]; then + shift + printf "%s" "$*" + else + printf "%s\n" "$*" + fi +} + + +spark() +{ + local f tc + local n numbers= + + # find min/max values + local min=0xffffffff max=0 + + for n in ${@//,/ } + do + # on Linux (or with bash4) we could use `printf %.0f $n` here to + # round the number but that doesn't work on OS X (bash3) nor does + # `awk '{printf "%.0f",$1}' <<< $n` work, so just cut it off + n=${n%.*} + (( n < min )) && min=$n + (( n > max )) && max=$n + numbers=$numbers${numbers:+ }$n + done + + # print ticks + local ticks=(▁ ▂ ▃ ▄ ▅ ▆ ▇ █) + + # use a high tick if data is constant + (( min == max )) && ticks=(▅ ▆) + + tc=${#ticks[@]} + f=$(( ( (max-min) <<8)/( tc - 1) )) + (( f < 1 )) && f=1 + + for n in $numbers + do + _spark_echo -n ${ticks[$(( ((($n-$min)<<8)/$f) ))]} + done + _spark_echo +} + + # * misc stuff