Obrigado a Eric Pailleau pela sugestão que levou a uma resposta de trabalho:
check host web1 address web1
if failed host web1 port 80 protocol http
then exec "/bin/bash -c '/usr/bin/test ! -f /var/tmp/web-failover && ( /usr/local/bin/failover.sh -h web2 ; touch /var/tmp/auth-failover )'"
else if succeeded
then exec "/bin/sh -c '/usr/local/bin/failover.sh -h web1 ; rm -f /var/tmp/web-failover)'"
É estranho, mas se você chamar o comando / bin / bash, o monitor não parece executar o comando. Eu suspeito que ele acha que já executou o comando, então não se incomoda. Não parece se importar em executar o primeiro comando repetidamente!