我试图写一个终端脚本;一旦成功,我想触发一个功能,当它失败时,我想发送一个警报。除非脚本成功运行,否则它会在“完成”之后继续运行命令;线不确定正确的语法或正确的书写方式。
我只希望完成后的命令在失败时处理,而不是成功时处理。
check_connection_wireguard(){
n=0
until [ "$n" -ge 1 ]
do
ping -c 1 $remoteIdrac &> /dev/null && echo 'Success' && break
n=$((n+1))
echo "Connection Failed Attempt" $n
sleep 15
done
ssh $localIp wg-quick down $wireguardInterface
ssh $localIp /usr/local/emhttp/webGui/scripts/notify -i alert -s \"Backup Remote Connection\" -d \"Backup Operation failed to connect\"
}
所以我用下面的代码解决了这个问题,只是添加了一个if语句,但我想知道是否有比下面更优雅的解决方案。
check_connection_wireguard(){
n=0
until [ "$n" -ge 1 ]
do
ping -c 1 10.10.20.100 &> /dev/null && echo 'Success' && break
n=$((n+1))
echo "Connection Failed Attempt" $n
sleep 15
if [[ $n > 1 ]]; then
ssh $localIp wg-quick down $wireguardInterface
ssh $localIp /usr/local/emhttp/webGui/scripts/notify -i alert -s \"Backup Remote Connection\" -d \"Backup Operation failed to connect\"
fi
done
}