最近、LibreSwan VPNをセットアップしましたが、ほとんどの場合、うまく機能しています。私たちが問題を抱えていることの1つは、現在ログインしているユーザーを確認することです。アクティブなソリューションの数を確認するためのソリューションを https://lists.openswan.org/pipermail/users/2011-)で見つけました。 January/020042.html ただし、セッションにログインしているユーザーを実際に確認するためのものではありません(grepを削除すると、接続されているIPを含む多くの詳細が表示されますが、実際のユーザー名は表示されません)。
私の現在の考えは、接続の/ var/log/messagesをgrepし、切断メッセージが付随していないものを報告することです。 PPPDは、すべてにPIDのタグを付けるのに十分なほど優れているため、多少簡単ですが、もっと良い方法があることを望んでいました。
他の誰かがこれに遭遇した場合に備えて、これが私が使用することになったスクリプトです。/var/log/messagesでログインメッセージを検索し、pppdがPIDをまだ使用しているかどうかを確認します。ユーザー名とログイン時刻のみを出力します。
#!/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アドレスを記録しないことです。