如何测试OpenVPN隧道是否已建立?

l0b*_*0b0 1 openvpn

为了测试OpenVPN隧道设置,我需要在尝试通过隧道发送内容之前检测新启动的OpenVPN守护程序何时建立了隧道(或尝试并且未能这样做).

l0b*_*0b0 5

基于一种很好的超时方式tail:

ssh hostname '
    sleep 5 &
    timerPID=$!;
    tail -n0 -F --pid=$timerPID /var/log/messages | grep openvpn | while read -r line;
    do
        if echo "$line" | grep -qF -e "Initialization Sequence Completed" -e "Connection refused";
        then
            kill $timerPID;
            break;
        fi;
    done &
    /etc/init.d/openvpnA start &
    wait $timerPID'
Run Code Online (Sandbox Code Playgroud)

那是:

  1. 连接到VPN客户端或服务器
    1. 异步启动计时器
    2. 收集异步包含的日志行,openvpn直到计时器终止
      1. 寻找连接成功或被拒绝的迹象
        1. 杀掉计时器
        2. 退出循环
    3. 启动守护进程
    4. 等待计时器死亡

它似乎工作,但不熟悉OpenVPN我不知道这是否是检测连接状态的正确方法.由于我是唯一一个使用该机器的人,我认为grep由于早期的流程启动而导致成功问题的可能性可以忽略.但我猜测只有熟悉OpenVPN代码的人才能真正回答这个问题:目前的测试是否足以确定连接是成功还是被拒绝?