Проблема может быть связана с тем фактом, что команды эха должны записывать в mailx STDIN
, но то, как вы делать это с помощью встроенных обратных кавычек может быть проблематично. Я бы попробовал передать тело сообщения по конвейеру mailx
вместо этого:
...
then
SEP="============================================"
BODY="$CHKOUT\n$SEP\n$DFOUT"
echo $BODY | mailx -s "Warning! : ..."
fi
~/dehydrated/dehydrated --cron --domain www.mydomain.com --out. --challenge http-01 | grep -q 'Skipping renew' || python manage.py email_hosts
|
:canalice la salida de su comando inicial al siguiente comando. Esto supone que escribe en la salida estándar. grep -q 'Skipping renew'
:busque Skipping renew
en la salida del comando antes de la tubería |
. Actúa en modo "silencioso" -q
, es decir, no muestra la coincidencia en la línea de comando. ||
Si el comando anterior falla (, es decir, no hay ninguna coincidencia ), ejecute el siguiente comando (, es decir, envíe un correo electrónico ). Esto es esencialmente lo contrario de &&
. Si el comando anterior coincide con algo, entonces el comando de correo electrónico no se ejecutará. También puede probar la lógica del flujo de comandos con algo como lo siguiente:
echo 'Skipping renew' | grep -q 'Skipping renew' || echo Mailing
echo 'Something else' | grep -q 'Skipping renew' || echo Mailing