Недавно мы установили LibreSwan VPN, и по большей части он отлично работает. Одна вещь, с которой у нас возникли некоторые проблемы, - это попытка узнать, кто в настоящее время вошел в систему. Я нашел решение для просмотра количества активных решений на https://lists.openswan.org/pipermail/users/2011-January/020042.html но не для того, чтобы на самом деле видеть, кто вошел в сеансы (удаление grep дает много деталей, включая подключенные IP-адреса, но не фактические имена пользователей).
Моя текущая мысль - использовать grep / var / log / messages для подключений и сообщать обо всех, у которых нет сопутствующего сообщения об отключении. PPPD достаточно хорош, чтобы пометить все с помощью PID, что делает его несколько простым, но я надеялся, что есть лучший способ.
Если кто-то еще столкнется с этим, вот сценарий, который я в итоге использовал. Он ищет в / var / log / messages сообщения входа в систему, а затем проверяет, используется ли PID по-прежнему pppd. Он выводит только имя пользователя и время входа в систему.
#!/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, он не записывает IP-адрес подключающегося клиента.