要测试 OpenVPN 隧道设置,我需要检测新启动的 OpenVPN 守护程序何时建立了隧道(或尝试过但未成功),然后再尝试通过隧道发送内容。
问问题
7177 次
1 回答
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'
那是:
- 连接到 VPN 客户端或服务器
- 异步启动计时器
- 异步收集日志行,
openvpn
直到计时器终止- 寻找连接成功或被拒绝的迹象
- 杀死计时器
- 退出循环
- 寻找连接成功或被拒绝的迹象
- 启动守护进程
- 等待计时器结束
它似乎有效,但不熟悉 OpenVPN 我不确定这是否是检测连接状态的正确方法。由于我是唯一使用该机器的人,我认为grep
可以忽略由于较早的进程启动而导致成功的时间问题的可能性。但我猜只有熟悉 OpenVPN 代码的人才能真正回答这个问题:当前测试是否足以确定连接是成功还是拒绝?
于 2013-09-20T19:12:48.830 回答