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
digdiff @ns{1,2}.iankelling.org "$@"
}
+tsr() { # ts run
+ "$@" |& ts || return $?
+}
dup() {
local ran_d
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
;;&
local l base
if [[ $1 == /* ]]; then
base=${1##*/}
- if mountpoint /mnt/$base; then
+ if mountpoint -q /mnt/$base; then
return 0
fi
- l=$(sudo losetup -f)
- sudo losetup $l $1
- if ! sudo cryptsetup luksOpen $l $base; then
- sudo losetup -d $l
- return 1
+ l=$(losetup -j $1 | sed -rn 's/^([^ ]+): .*/\1/p' | head -n1 ||:)
+ if [[ ! $l ]]; then
+ l=$(sudo losetup -f)
+ sudo losetup $l $1
+ fi
+ if ! sudo cryptsetup status /dev/mapper/$base &>/dev/null; then
+ if ! sudo cryptsetup luksOpen $l $base; then
+ sudo losetup -d $l
+ return 1
+ fi
fi
sudo mkdir -p /mnt/$base
sudo mount /dev/mapper/$base /mnt/$base
if mountpoint /mnt/$base &>/dev/null; then
sudo umount /mnt/$base
fi
- 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 sudo cryptsetup status /dev/mapper/$base &>/dev/null; then
+ if ! sudo cryptsetup luksClose /dev/mapper/$base; then
+ echo lom: failed cryptsetup luksClose /dev/mapper/$base
+ return 1
+ fi
+ fi
+ l=$(losetup -j $1 | sed -rn 's/^([^ ]+): .*/\1/p' | head -n1 ||:)
+ if [[ $l ]]; then
+ sudo losetup -d $l
+ else
+ echo lom: warning: no loopback device found
+ fi
fi
}
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() {
}
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() {
}
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