я пытаюсь написать простой bash-скрипт для cronjob, чтобы проверить, существуют ли какие-то интерфейсы (туннели). если нет, я бы хотел запустить другой скрипт, который (повторно) запускает их. моя проблема: у меня не работает "IF":
#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 is up
tun2 is up
tun3 is up
tun3 работает
tun4 работает
Устройство "tun5" не существует.
tun5 работает
Устройство "tun5" не существует.
печатается в stderr (стандартная ошибка).
Ваш скрипт перехватывает только stdout (стандартный вывод).
Вы можете перенаправить stderr на stdout, чтобы устранить проблему (конечный 2> & 1
).
OUT="$(ip a show $i up 2>&1)"