Outils pour utilisateurs

Outils du site


linux:scripts_awk:ssh_access

Ceci est une ancienne révision du document !


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 virer les lignes d'accès ssh par clé.
# 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=1; # Si on ne veut pas le reste
  del_short_conn=0; # en fait, supprime les fermetures qui suivent immédiatement l'ouverture, dans mon cas => > 1min.
}
 
/Accepted publickey for/ {
  var=1; nb++; 
  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 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 par clé :";
  for (i in ip) { print user[i] "(" ip[i] ") s'est connecté de *" debut[i] "* à *" fin[i] "*";}
}
linux/scripts_awk/ssh_access.1235142210.txt.gz · Dernière modification : 20/02/2009 16:03 de daniel