Я пытаюсь написать простой сценарий bash для cronjob, чтобы проверить, существуют ли некоторые интерфейсы (туннели). в противном случае я бы хотел запустить другой сценарий, который (повторно) запускает их. моя проблема: у меня не работает "ЕСЛИ":
#bin/bash
for i in tun1 tun2 tun3 tun3 tun4 tun5
do OUT="$(ip a show $i up)";
if [[ $OUT == *"does not exist."* ]]; then
echo "$i is down"
else
echo "$i is up"
fi
done
текущий выход:
./check_tunnel.sh
tun1 работает
tun2 работает
tun3 работает
tun3 работает
tun4 работает
Устройство "tun5" не существует.
tun5 работает
Device "tun5" does not exist.
печатается в stderr (стандартная ошибка).
Ваш скрипт ловит только стандартный вывод (стандартный вывод).
Вы можете перенаправить stderr на stdout, чтобы устранить проблему (конечный 2>&1
).
OUT="$(ip a show $i up 2>&1)"