next up previous contents index
suivant: Création des répertoires utilisateurs monter: Développement précédent: Suppression des répertoires inutiles   Table des matières   Index


Création des nouvelles entrées "projet"

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
$\cdots$
done

Pour rappel (cf. tableau [*]), le format utilisé ici est :

La transformation du nom de projet OpenVMS vers le nom UNIX sera effectué grâce à la combinaison des commandes "echo(1)", "cut(1)" et "tr(1)". L'affectation du "GID" se fera avec "SEARCHID" (cf. exemple [*]). Nous avons :
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


next up previous contents index
suivant: Création des répertoires utilisateurs monter: Développement précédent: Suppression des répertoires inutiles   Table des matières   Index
baudry@esme.fr