我为openconnect vpn连接编写了此脚本。现在,我想检查存储在$ vpn中的输出是否包含“身份验证失败”。如果包含,则应执行。再次脚本。
我的脚本如下:
#!/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()绕过命令,并且消息也应该在变量内。 还是我必须换一种方式将变量也接收到答案?