如何返回 OpenVPN 连接成功的正常运行时间?

如何返回 OpenVPN 连接成功的正常运行时间?

我试图弄清楚如何返回成功 OpenVPN 连接的 UP 时间。

我尝试了以下代码的不同变体:

#!/bin/bash
TMP=$(grep 'tun0: link up' /var/log/syslog* | tail -1 | cut -f2- -d':' | sed "s/ "$(uname -n)" kernel:/*/")
WHEN=$(echo "$TMP" | cut -f1 -d '*')
SEC=$(echo "$(date +%s) - $(date -d "$WHEN" +%s)" | bc)
echo "Last link up: $WHEN ($SEC seconds ago)."

但它只返回 eth0 连接的正常运行时间。我究竟做错了什么?

答案1

好吧,我没有找到一种无需添加额外脚本即可完成此操作的方法,但这是我可以做到的最简单的方法。

首先将这些行添加到您的 *.conf 文件中(确保 up.sh 和 down.sh 文件具有 755 权限):

script-security 2
# Run when Connection is up
up /etc/openvpn/up.sh
# Run when connection is down
down /etc/openvpn/down.sh

这是 up.sh 文件的内容:

#!/bin/sh
echo $(date) > ovpnTime.txt

这是 down.sh 文件的内容:

#!/bin/sh
cat /dev/null > ovpnTime.txt

up.sh 脚本会将连接日期字符串添加到 ovpnTime.txt,如下所示:

Fri Nov 28 03:18:46 EET 2014

然后您可以将日期与现在进行比较以获得差异,即“正常运行时间”。

当连接设置为关闭时,down.sh 脚本只是删除 ovpnTime.txt 文件的内容。

我希望这对某人有帮助

相关内容