我试图弄清楚如何返回成功 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 文件的内容。
我希望这对某人有帮助