From: Colin Watson Date: Tue, 20 Apr 2010 22:12:23 +0000 (+0000) Subject: hacky exim queue admin helpers X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?p=bin.git;a=commitdiff_plain;h=aad995cb81c811011cfbda01c5cc46591842aaca hacky exim queue admin helpers --- diff --git a/exim-kill b/exim-kill new file mode 100755 index 0000000..24e6872 --- /dev/null +++ b/exim-kill @@ -0,0 +1,2 @@ +#! /bin/sh +sudo exim -bp | grep -B1 -- "$1" | fgrep '*** frozen ***' | sed 's/^ *//' | tr -s ' ' | cut -d' ' -f3 | sudo xargs -r exim -Mrm diff --git a/exim-kill-menu b/exim-kill-menu new file mode 100755 index 0000000..4dd6a5e --- /dev/null +++ b/exim-kill-menu @@ -0,0 +1,37 @@ +#! /bin/bash +addrs="$(sudo exim -bp | fgrep -A1 '*** frozen ***' | sed -n '/ \{10\}/s/^ *//p' | sort -u)" +while [ "$addrs" ]; do + declare -a addrindex + i=1 + for addr in $addrs; do + printf '%d) %s\n' "$i" "$addr" + addrindex[$i]="$addr" + i="$(($i + 1))" + done + max="$(($i - 1))" + while :; do + printf '#? ' + read line + if [ -z "$line" ]; then + break 2 + elif expr "$line" : '[0-9][0-9]*$' >/dev/null; then + exim-kill "${addrindex[$line]}" + addrs="$(echo "$addrs" | fgrep -vx -- "${addrindex[$line]}")" + break + elif expr "$line" : '[0-9]*-[0-9]*$' >/dev/null; then + addrstart="${line%%-*}" + addrend="${line#*-}" + [ "$addrstart" ] || addrstart=1 + [ "$addrend" ] || addrend="$max" + i="$addrstart" + tokill= + while [ "$i" -le "$addrend" ]; do + tokill="${tokill:+$tokill\\|}${addrindex[$i]}" + addrs="$(echo "$addrs" | fgrep -vx -- "${addrindex[$i]}")" + i="$(($i + 1))" + done + exim-kill "$tokill" + break + fi + done +done