Récap accès ssh
Un script pour récapituler les connexions ssh réussies
#!/usr/bin/awk -f
# Ce script est prévu pour s'appliquer sur le auth.log (ou syslog, suivant la conf) et récapituler les accès ssh.
# Quand la connexion est close immédiatemment on efface simplement (robots qui lancent des commandes à distance, ici un accès toutes les minutes).
# Sinon, on efface les lignes mais on restitue un résumé à la fin.
BEGIN {
nb=0;
only_ssh_by_key=0; # Si on ne veut pas le reste
del_short_conn=0; # en fait, supprime les fermetures qui suivent immédiatement l'ouverture
}
/Accepted p[^ ]+ for/ {
var=1; nb++;
case[nb]=$7; user[nb]=$9; pidssh[nb]=$5; ip[nb]=$11; debut[nb]=$1 " " $2 " " $3;
next;
}
{
if (var==1) {
# on oublie toujours la ligne 'session opened for user' qui suit 'Accepted publickey'
var++;
next;
}
if (var==2){
# mais ici, on a pas toujours le close sur la ligne qui suit, on vérifie
if (pidssh[nb]=$5 && del_short_conn==1) {
# OK on efface nos variables et on oublie la ligne
delete case[nb]
delete user[nb]
delete pidssh[nb];
delete ip[nb];
delete debut[nb];
var=0;
next;
}
var=0;
}
for (i in pidssh) {
if (pidssh[i]=$5) {
# on est sur le close ssh, on vire la ligne mais on mémorise l'heure
delete pidssh[i];
fin[i]=$1 " " $2 " " $3;
next;
}
}
# fin des traitements, on affiche si on ne voulait pas que le recap
if (only_ssh_by_key == 0) { print $0 }
}
END {
print "Les connexions ssh réussies :";
for (i in ip) { print user[i] "(" ip[i] ") s'est connecté de *" debut[i] "* à *" fin[i] "* (" case[i] ")";}
}
linux/scripts_awk/ssh_access.txt · Dernière modification: 20/02/2009 16:14 par daniel


