X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc2;h=9fa1010920e6767057a1699531c519423e973d4b;hb=e958999a4ab6fddd723270b596b4899c0811fa41;hp=1e2f999d72d7728da9c185c1372386a715738f4d;hpb=12cab163424e3a7b0815646d1d4407f9b5839bcb;p=distro-setup diff --git a/brc2 b/brc2 index 1e2f999..9fa1010 100644 --- a/brc2 +++ b/brc2 @@ -35,7 +35,6 @@ esac # generated instead of dynamic for the benefit of shellcheck #for x in /a/bin/distro-functions/src/* /a/bin/!(githtml)/*-function?(s); do echo source $x ; done source /a/bin/distro-functions/src/identify-distros -source /a/bin/distro-functions/src/package-manager-abstractions source /a/bin/log-quiet/logq-function # for x in /a/bin/bash_unpublished/source-!(.#*); do echo source $x; done source /a/bin/bash_unpublished/source-semi-priv @@ -283,6 +282,26 @@ aclear() { system-status _ } +alerts() { + find /var/local/cron-errors /home/iank/cron-errors /sysd-mail-once-state -type f +} +ralerts() { # remote alerts + local ret shell + # this list is duplicated in check-remote-mailqs + for h in bk je li frodo kwwg x3wg x2wg kdwg sywg; do + echo $h: + shell="ssh $h" + if [[ $HOSTNAME == "${h%wg}" ]]; then + shell= + fi + ret=0 + $shell find /var/local/cron-errors /home/iank/cron-errors /sysd-mail-once-state -type f || ret=$? + if (( ret )); then + echo ret:$ret + fi + done +} + ap() { # pushd in case current directory has an ansible.cfg file pushd /a/xans >/dev/null @@ -631,6 +650,9 @@ digme() { digdiff @ns{1,2}.iankelling.org "$@" } +tsr() { # ts run + "$@" |& ts || return $? +} dup() { local ran_d @@ -639,20 +661,20 @@ dup() { case $PS1 in *[\ \]]D\ *) pushd / - /b/ds/distro-begin || return $? - /b/ds/distro-end || return $? + /b/ds/distro-begin |& ts || return $? + /b/ds/distro-end |& ts || return $? popd ran_d=true ;;& *[\ \]]DB\ *) pushd / - /b/ds/distro-begin || return $? + /b/ds/distro-begin |& ts || return $? popd ran_d=true ;; *[\ \]]DE\ *) pushd / - /b/ds/distro-end || return $? + /b/ds/distro-end |& ts || return $? popd ran_d=true ;;& @@ -1019,11 +1041,11 @@ wghole() { local host ipsuf umask_orig host=$1 ipsuf=$2 - mkdir -p /p/c/machine_specific/$host/filesystem/etc/{wireguard,network/interfaces.d} + mkdir -p /p/c/machine_specific/$host/filesystem/etc/wireguard cd /p/c/machine_specific/$host/filesystem/etc/wireguard umask_orig=$(umask) umask 0077 - wg genkey | tee $host-priv.key | wg pubkey > $host-pub.key + wg genkey | tee hole-priv.key | wg pubkey > hole-pub.key cat >wghole.conf </dev/null; then + if ! sudo cryptsetup luksOpen $l $base; then + m sudo losetup -d $l + return 1 + fi fi - sudo mkdir -p /mnt/$base - sudo mount /dev/mapper/$base /mnt/$base - sudo chown $USER:$USER /mnt/$base + m sudo mkdir -p /mnt/$base + m sudo mount /dev/mapper/$base /mnt/$base + m sudo chown $USER:$USER /mnt/$base else base=$1 - sudo umount /mnt/$base - l=$(sudo cryptsetup status /dev/mapper/$base|sed -rn 's/^\s*device:\s*(.*)/\1/p') - sudo cryptsetup luksClose /dev/mapper/$base || return 1 - sudo losetup -d $l + if mountpoint /mnt/$base &>/dev/null; then + m sudo umount /mnt/$base + fi + if sudo cryptsetup status /dev/mapper/$base &>/dev/null; then + if ! m sudo cryptsetup luksClose /dev/mapper/$base; then + echo lom: failed cryptsetup luksClose /dev/mapper/$base + return 1 + fi + fi + l=$(losetup -l --noheadings | awk '$6 ~ /\/'$1'$/ {print $1}') + if [[ $l ]]; then + m sudo losetup -d $l + else + echo lom: warning: no loopback device found + fi fi } @@ -1228,6 +1266,9 @@ ngo() { otp() { oathtool --totp -b "$*" | xclip -selection clipboard } +j() { + "$@" |& pee "xclip -r -selection clipboard" +} pakaraoke() { @@ -1287,7 +1328,7 @@ pumpa() { # other tiling window managers in giving up on setting it at all # xprop -root -remove _NET_WORKAREA - command pumpa &r + command pumpa & r } # reviewboard, used at my old job @@ -1490,7 +1531,7 @@ tm() { (sleep $(calc "$* * 60") && mpv --no-config --volume 50 /a/bin/data/alarm.mp3) > /dev/null 2>&1 & } -trg() { transmission-remote-gtk&r; } +trg() { transmission-remote-gtk & r; } trc() { # example, set global upload limit to 100 kilobytes: # trc -u 100 @@ -1534,11 +1575,11 @@ enn() { sdnbash() { # systemd namespace bash local unit=$1 - m sudo nsenter -t $(systemctl status $unit | sed -n '/^ *Main PID:/s/[^0-9]//gp') -n -m sudo -u $USER -i bash + m sudo nsenter -t $(systemctl show --property MainPID --value $unit') -n -m sudo -u $USER -i bash } mailnnbash() { - m sudo nsenter -t $(systemctl status mailnn| sed -n '/^ *Main PID:/s/[^0-9]//gp') -n -m sudo -u $USER -i bash + m sudo nsenter -t $(systemctl show --property MainPID --value mailnn') -n -m sudo -u $USER -i bash } mailvpnbash() { @@ -1549,7 +1590,7 @@ eximbash() { } spamnn() { local spamdpid - spamdpid=$(systemctl status spamassassin| sed -n '/^ *Main PID:/s/[^0-9]//gp') + spamdpid=$(systemctl show --property MainPID --value spamassassin) m sudo nsenter -t $spamdpid -n -m sudo -u Debian-exim spamassassin "$@" } unboundbash() { @@ -1557,9 +1598,18 @@ unboundbash() { } mailnncheck() { - local pid ns mailnn - for p in mailnn mailvpn unbound dovecot spamassassin exim4 radicale; do - pid=$(s systemctl status $p| sed -n '/^ *Main PID:/s/[^0-9]//gp') + local p pid ns mailnn + # mailvpn would belong on the list if using openvpn + for p in mailnn unbound dovecot spamassassin exim4 radicale; do + case $p in + exim4|radicale) + pid=$(ps -eo pid,cgroup | grep /system.slice/$p.service | awk '{print $1}') + ;; + *) + pid=$(s systemctl show --property MainPID --value $p) + ;; + esac + echo p=$p pid=$pid if [[ ! $pid ]]; then echo failed to find pid for $p continue @@ -1584,10 +1634,10 @@ vpncmd() { m sudo -E env "PATH=$PATH" nsenter -t $(pgrep -f "/usr/sbin/openvpn .* --config /etc/openvpn/.*client.conf") -n -m "$@" } vpnf() { - vpncmd sudo -E -u iank env "PATH=$PATH" abrowser -no-remote -P vpn &r + vpncmd sudo -E -u iank env "PATH=$PATH" abrowser -no-remote -P vpn & r } vpn2f() { - vpncmd sudo -u iank env "PATH=$PATH" abrowser -no-remote -P vpn2 &r + vpncmd sudo -u iank env "PATH=$PATH" abrowser -no-remote -P vpn2 & r } vpni() { @@ -1703,10 +1753,10 @@ vpnoff() { sudo systemctl stop $vpn_service@$1 } vpnoffc() { # vpn off client - ser stop openvpn-nn@client + ser stop openvpn-client-tr@client } vpnc() { - ser start openvpn-nn@client + ser start openvpn-client-tr@client }