Je développe un site web pour gérer les utilisateurs d'OpenVPN avec le framework Django. Mais j'ai besoin de savoir s'il existe un moyen d'extraire les utilisateurs actifs d'OpenVPN ? Mon serveur fonctionne sous Ubuntu 12.04.
Réponses
Trop de publicités?J'ai fait un petit script qui peut soit faire une vérification unique ou être configuré pour continuer à surveiller avec des intervalles spécifiés.
Je pense que c'est mieux que de surveiller le fichier /etc/openvpn/openvpn-status.log car il est très lent à mettre à jour. Il y a peut-être un moyen d'ajuster les intervalles dans certains paramètres MAIS, je n'ai besoin de surveiller les connexions vpn que de temps en temps. Pas 24 heures sur 24, 7 jours sur 7. De plus, c'est un journal assez désordonné.
Ce script est sur le serveur OpenVPN. Testé uniquement sur Ubuntu 20.04
Un seul passage suffit :
./ovpn-activity.sh
Pour garder le contrôle avec un intervalle de 20 secondes :
./ovpn-activity.sh view 20
Enregistrez le tout dans un fichier .sh (exemple : oven-activity.sh) :
Veillez à modifier le sous-réseau VPN pour qu'il corresponde au vôtre.
#!/bin/bash
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# MODIFY this to match your network
vpn_network="0.0.0.0/24"
####### FUNCTIONS ########
act_check () {
sudo echo "looking for active clients"
#Look for Virtual IPs that are online and save them.
activeIPs=$(fping -ag "$vpn_network")
i=0
for ip in $activeIPs; do
if [[ $i -eq 0 ]]
then
i=$i+1
continue
fi
echo " -- Active --"
echo "| "$(sudo grep '/.*Learn: '$ip /var/log/openvpn.log | head -1 | sed 's/\/.*$//')
echo "| ip: $ip"
echo " ------------"
echo " "
done
}
##########################
if [ "$1" = "view" ] ; then
echo "view is set"
if [ -z "$2" ] ; then
watch "$SCRIPT_DIR""/ovpn-activity"
else
watch -n $2 "$SCRIPT_DIR""/ovpn-activity"
fi
else
act_check
fi
exit 0
Il y a sans doute des améliorations possibles, mais je ne suis pas un script. J'en avais besoin pour voir quand les collègues utilisaient le VPN afin de voir s'il était sûr de redémarrer le serveur. Et si oui, je pouvais voir qui était en ligne et les appeler pour leur demander si c'était ok pour redémarrer sans interrompre leur travail.
- Réponses précédentes
- Plus de réponses