From aad995cb81c811011cfbda01c5cc46591842aaca Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 20 Apr 2010 22:12:23 +0000 Subject: [PATCH] hacky exim queue admin helpers --- exim-kill | 2 ++ exim-kill-menu | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100755 exim-kill create mode 100755 exim-kill-menu 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 -- 2.30.2