скрипт не будет перезапущен после сбоя аутентификации - PullRequest
0 голосов
/ 15 апреля 2020

Я написал этот скрипт для подключения 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 () обходит команду и сообщение также должно быть внутри переменной. Или я должен поставить другой способ получить ответы также в переменную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...