Я написал этот скрипт для подключения OpenConnect VPN. Теперь я хочу проверить, содержит ли вывод, который хранится в $ vpn, «Ошибка аутентификации». Если он содержит, то он должен exe c. скрипт снова.
Мой скрипт выглядит так:
#!/bin/bash
echo Bitte Passwort eingeben:
read x
if [ -z "$x" ]
then
echo "Kein Passwort eingegeben!!!"
echo "Bitte erneut versuchen"
exec "/home/ubuntu/Dokumente/vpn.sh"
else
vpn=$(echo $x |
sudo openconnect vpn.domain.de --user=test.vpn --passwd-on-stdin --authgroup vpn-client-no-ise --no-dtls)
fi
if [[ $vpn == *"Authentication failed"* ]]; then
echo "Dein Passwort war falsch!"
exec "/home/ubuntu/Dokumente/vpn.sh"
fi
read
Когда я набираю неправильный пароль, он просто показывает «Аутентификация не пройдена». Но он не перезапускает скрипт, как ожидалось. И второе: когда я набираю правильный пароль, он тоже не подключается. Когда я удаляю эту часть:
if [[ $vpn == *"Authentication failed"* ]]; then
echo "Dein Passwort war falsch!"
exec "/home/ubuntu/Dokumente/vpn.sh"
fi
, соединение с правильным паролем работает. Но я хочу перезапустить скрипт, если $ vpn содержит «Ошибка аутентификации». Может быть, кто-то может увидеть мою ошибку.
Обновление: Хорошо, теперь я понял, что сообщение "Ошибка аутентификации" отсутствует в $ vpn. Это каждый раз вне переменной. Но я не понимаю почему, потому что $ vpn () обходит команду и сообщение также должно быть внутри переменной. Или я должен поставить другой способ получить ответы также в переменную?