Utilisateurs de Perl à Paris

Du monde malgré les vacances

Un historique de toutes nos réunions


Table des matières

mercredi 11 août 2004

La voix du secrétaire (Jean) et celle de Sniper

Présents à la réunion :

Nous avons mangé des hamburgers, des spaghetti bolognese sans persil, des pavés d'autruche, des pièces du boucher, des salades, des chocolats liégeois, des dames blanches et une tarte aux pommes. Nous avons bu de la Beamish Red, de la Kriek, de la Grimbergen et autres bières et une margarita.

Nous avons parlé de Perl, Internet, informatique et le reste.

Perl

Internet

Informatique

Divers

Annexe

Ceci est un script que j'ai écrit en 1993 sur HP-UX, puis converti sur AIX il y a 10 ans presque jour pour jour. Le client pour lequel je travaillais était anglais, donc tous les textes, y compris les commentaires de programmes étaient censés être écrits en anglais. J'ai également laissé les commentaires institutionnels ainsi que la documentation en ligne qui ne correspond pas aux pages de man, ni dans le plan, ni dans la technique (totalement déconnectée de nroff). Comme vous pouvez le constater, le script est légèrement buggué : à chaque changement de mois, si un utilisateur ne s'est pas déconnecté la veille, il apparaîtra en fin de liste avec l'option -t, alors qu'il devrait apparaître en première position. Le même bug existait dans la version HP-UX, mais une fois par an seulement. Quant aux commentaires justifiés à gauche et à droite, la méthode a déjà été évoquée dans un compte-rendu précédent.

#------------------------------------------------------------------------------
#--- name   : lsusr
#---
#--- object :  list all currently connected users, with only one  line
#--- per  user  containing  the number of still active connections and
#--- the lowest date for these. Alternatively, with option a, list the
#--- time since the most recent activity.
#---
#--- But : afficher la liste  des  utilisateurs  connectés,  avec  une
#--- seule  ligne  par  utilisateur  contenant le nombre de connexions
#--- existantes, et la date de la  plus  ancienne  d'entre  elles.  Ou
#--- alors, avec l'option a, afficher pour chaque utilisateur le temps
#--- écoulé depuis l'action la plus récente.
#---	
#--- date   : 10/08/1994
#--- 
#------------------------------------------------------------------------------
#---   author    date        reason
#--- 
#------------------------------------------------------------------------------
#
#
utilname=$0 ; 	export utilname
sort_opt='' ;	export sort_opt
#
#---  keyword analysis loop
for i
do 
  case $i in
#--- user ask help manual  
    help)
      echo "\f
============================================================================
                            $utilname
                            ===========
purpose : 
        list all currently connected users, with  only  one  line  per
        user containing the number of still active connections and the
        lowest date for these. Alternatively, with option a, list  the
        time since the most recent activity.
keywords :
   ===> help
	Display text concerning usage of this utility
   ===> -a
	list time since last activity
   ===> -t
	sort by connection time
parameters :
   None.
result :
   List every user currently connected

============================================================================" |
      more
      exit 0;;
    -t)
      # optional output sort criteria
      #	k2bM2	: month
      #		Note: the M modifier exists on HP-UX but not AIX. Nevertheless,
      #		its only use is at the start of the month, and if a user did
      #		not log out the preceding evening. This sort criterion is
      #		discarded in the AIX version.
      #	k3b,4	: day and hour
      #
      # sort_opt='-k2bM2 -k3bn,3 -kb4,4'
      sort_opt='-k3bn,3 -kb4,4'
      ;;
    esac
done

#
# - who including activity
# - reordering fields within the line: activity, month, day, hour, user
# - replace the "old" and "." values by "24:00" and "00:00" respectively, and if
#	activity is less than 10, insert a zero to right align the numbers
# - sort criteria
#	k5,5		: user's name
#	k2bM,2		: connection month
#		Note: the M modifier exists on HP-UX but not AIX. Nevertheless,
#		its only use is at the start of some months, and if a user did
#		not log out the preceding evening. For example, if a user
#		logged in on the 31st of July and is still logged on the first
#		of August. This sort criterion is discarded in the AIX version.
#	k3b,4		: connection day and hour
# or
#	k5,5		: user's name
#	k1b,1		: time since last activity
# - keep one line per user, counting the number of lines per user
# - reordering:
#	user, month, day, hour, number of connections
# or
#	user, time since last activity, number of connections
#	number of connections is right-aligned with a leading space
# - optional sort
#
who -u	| awk '{ print $6 " " $3 " " $4 " " $5 " " $1 }' \
	| sed -e s/old/24:00/ -e 's/^\./00:00/' -e 's/^[0-9]:/0&/' \
	| if [ "$1" = "-a" ]
	  then
	    sort -k5,5 -k1b,1
	  else
	    # sort -k5,5 -k2bM,2 -k3b,4
	    sort -k5,5 -k3b,4
	  fi \
	| uniq -f 4 -c \
	| if [ "$1" = "-a" ]
	  then
	    awk '{ printf("%-10s\t%s\t%2d\n", $6, $2, $1) }'
	  else
	    awk '{ printf("%-10s\t%s %s %s\t%2d\n", $6, $3, $4, $5, $1) }'
	  fi \
	| sort $sort_opt


HTML 5 - CSS v3 Mongueurs de Paris, le 15 janvier 2013 Copyright © The Paris Perl Mongers, 1999-2017