Назад | Перейти на главную страницу

простой сценарий bash для проверки существования туннеля [захват stdout и stderr]

Я пытаюсь написать простой сценарий 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)"