Device "tun5" does not exist.
é impresso em stderr (erro padrão).
Seu script captura somente stdout (saída padrão).
Você pode redirecionar o stderr para o stdout para corrigir o problema (trailing 2>&1
).
OUT="$(ip a show $i up 2>&1)"
Estou tentando escrever um script simples para um cronjob para verificar se algumas interfaces (túneis) estão existindo. se não, gostaria de começar outro script que (re) os inicie. meu problema é: eu não entendo o "IF" funcionando:
#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
a saída atual é:
./check_tunnel.sh
tun1 is up
tun2 is up
tun3 is up
tun3 is up
tun4 is up
Device "tun5" does not exist.
tun5 is up