我们最近设置了一个LibreSwan VPN,并且大部分它工作得很好。 我们遇到的一件事情是尝试查看当前login的用户。我在https://lists.openswan.org/pipermail/users/2011-January/020042find了一个用于查看活动解决scheme数量的解决scheme。但不是真正看到谁login会话(删除grep给出了很多细节,包括连接的IP,但不是实际的用户名)。
我目前的想法是grep / var / log / messages的连接和报告任何没有伴随的断开连接消息。 PPPD是足够好的标记所有的PID,这使得它有点直接,但我希望有一个更好的办法。
如果有其他人遇到这个,这里是我最终使用的脚本。 它search/ var / log / messages来login消息,然后检查PID是否仍然被pppd使用。 它只输出用户名和login时间。
#!/bin/bash # Process each log in message grep "logged in" /var/log/messages | grep pppd | while read -r line ; do #echo "$line" # Useful for debugging # Extract the PID pid=$(echo $line | cut -d "[" -f2 | cut -d "]" -f1) user=$(echo $line | grep -o -P '(?<=user ).*(?= logged)') #echo $pid # Useful for debugging # See if the PID is still in use ps aux | grep pppd | grep $pid > /dev/null disconnectCheck=$? # If it is in use report the user who logged in as active if [[ $disconnectCheck -eq 0 ]] ; then echo "$user logged in at ${line:0:15}" fi done
我把这个添加到我的/etc/ppp/options.xl2tpd:
plugin /usr/lib64/pptpd/pptpd-logwtmp.so
(我的服务器也安装了PPTPD,但是禁用了。)
有了这个,我可以做到:
last | grep ppp | grep "still logged in"
唯一不足的是,与pptp会话不同,它不会logging连接客户端的IP地址。