La création des nouvelles entrées "projet" se fait grâce aux informations contenues dans "LCLUAF". Comme pour les étapes précédentes, nous allons effectuer une boucle de lecture sur ce fichier. Ce qui donne :
cat $LCLUAF |\ while read line do
done
Pour rappel (cf. tableau ), le format utilisé ici
est :
vms_project="`echo $line | cut -d: -f1 | tr '[A-Z]' '[a-z]'`" unix_project="p${vms_project}" project_gid=`$SEARCHID -g` $ECHO "${unix_project}:*:${project_gid}:\c" >> $GROUP_NEW
Remarque 16..7 :
La terminaison par "\c
" de la commande "ECHO" nous permettra
de compléter la ligne qui, pour l'instant, n'est pas encore complète. En effet, il
manque encore les membres de ce groupe, c'est-à-dire la liste des "logname"
UNIX adéquats.
Une liste, sous UNIX est composée chaines de caractères séparées par un ou plusieurs espaces, il faudra donc substituer "," par un espace. Cette opération sera réalisée par la commande "sed(1)". Il faudra toutefois, extraire au préalable l'information de l'enregistrement courrant avec la commande "cut(1)". La liste des membres pour le projet courrant sera stocké dans la variable locale "members". Elle contient les "usernames" OpenVMS associés. Il ne reste plus alors qu'à rechercher le "logname" UNIX correspondant. Pour cela, il suffit de faire une boucle sur chaque membre de la liste contenue dans "members", d'extraire l'enregistrement correspondant dans "USERS_INFO_FILE" et d'en afficher que le premier champ. Ceci sera effectué grâce à la commande "awk". Le résultat sera mémorisé dans la variable locale "group_members".
Le format de "group(5)" demande une liste de "lognames" séparés
par ",". Par commodité, le programme "awk(1)" affichera donc
systématiquement le "logname" suivi de ",". Il ne restera donc
qu'à supprimer la dernière virgule. Ce critère correspond à l'expression régulière
",$
". Il suffira d'appliquer une substition avec la commande "sed(1)"
sur le contenu de la variable "group_members" et lui réaffecter le résultat.
Il ne restera plus qu'à compléter l'entrée dans "GROUP" et générer l'entrée
associée à ce projet dans "AUTO_PROJECTS".
Nous obtenons donc :
members="`echo $line | cut -d: -f2 | sed -e 's/,/ /g'`" group_members=`for this_member in $members do awk -F: -v this_member=$this_member ' $2 == this_member { printf ("%s,",$1) } ' $USERS_INFO_FILE done` echo "$group_members" | sed -e 's/,$//' >> $GROUP_NEW echo "${unix_project} ${FS_SERVER}:${FS_PROJECTS}/${unix_project}" \ >> $AUTO_PROJECTS