Qui est connecté à mon serveur ftp?

[testé sur vsftp installé sur debian etch]

[origine: une discussion sur le forum: http://forum.debian-fr.org/viewtopic.php?t=9493&start=0 ]

EN CONSTRUCTION

On utilise la ligne suivante (en console sous root):

# lsof -i :21  -u^root -u^nobody | mawk '{print  $3 "   "$2"    "$8}' | sort -u |  | grep -v 'USER'

Cela donne si les utilisateurs “tyrtamos” et “jeanpaul” sont connectés à partir de la machine “192.168.0.99”:

jeanpaul   5103     192.168.0.215:ftp->192.168.0.99:1105
tyrtamos   5089     192.168.0.215:ftp->192.168.0.99:1103

Commentaires:

Amélioration possible: il est inutile de répéter le nom de la machine serveur. Il faudrait que la colonne:

nestidebian.local:ftp->192.168.0.99:1103

devienne:

192.168.0.99:1103

On devrait pouvoir faire ça par une expression régulière.

La commande est assez lente à cause de la tentative de convertion adresse IP → nom de domaine. Si on ne veut que les adresses IP, on utilise l'option ”-n” de “lsof”, et la réponse est très rapide.

Avec tout cela, on a bien la liste demandée: les utilisateurs connectés à un moment donné au serveur ftp, avec l'IP de leur machine.

Mais je ne sais pas ce que ça donne si on configure vsftp avec des utilisateurs virtuels. Dans mes essais, mon vsftp est configuré avec les utilisateurs ayant un compte linux sur la machine qui a le serveur ftp.

En complétant par une recherche dans le fichier log, on devrait pouvoir dire depuis combien de temps la connexion est active, et donner la liste des fichiers téléchargés (dans les 2 sens).