Je reviens encore avec mes questions de débutant en script bash ^^
Je chercherais à faire une sorte de mise en page d’une sortie d’un script…je m’explique.
Je liste tout les répertoire d’un dossier de partage, trouve à quel groupe il appartient et les droit en vigueur dessus.
Une fois le résultat de chacun de ces éléments j’aimerai qu’il s’affiche de la façons suivante:
quote="Ludo"
AWK mais c’est compliquer ça !
(…)[/quote] C’est un peux dur, mais c’est incontournable en shell, et ce que je t’ai indiqué c’est des trucs basiques, pour que tu puisses t’y mettre vite.
Awk est riche, peut etre trop quand on debute. Par contre une fois que tu connais les commandes dont tu as besoin, il est vraiment tres puissant.
Pour ce que tu veux faire, ton print suffit. Ou alors tu utilises printf, accessible egalement en shell et qui utilise la meme syntaxe que le printf du C.
Si tu veux des colonnes parfaitement alignees, par contre tu peux passer par latex comme c’est montre dans la doc de mattotop. Mais c’est peut etre un peu trop
[quote=“gbx”]
Si tu veux des colonnes parfaitement alignees, par contre tu peux passer par latex comme c’est montre dans la doc de mattotop. Mais c’est peut etre un peu trop [/quote]
bien vu l’html! j’y ai meme pas pense alors que c’est ce qu’on utilise au boulot
enfin je suppose que ton probleme est resolu puisqu’il n’y a pas de retour negatif…
Le but de ce script est de faire une liste des dossier d’un répertoire définis, d’afficher les permissions du groupe, lister les personnes du groupes (login) les transformer en Prénom, Nom en interrogeant l’annuaire ldap.
Donc je doit faire que chaque variable de mon script me sort sous forme de tableau chaque élément de mes variables. J’ai été conseiller par ceci sur DLFP ( tldp.org/LDP/abs/html/arrays.html ) mais le bash du serveur est 2.5. Enfin j’ai déja les commande pour les variables…
Reste à finir l’usine à gaz
p.s.: je laisse le sujet en non-résolu dès fois que l’ont me propose une solution autre que AWK car j’ai beau relire le trucs dans tout les sens ca me parle vraiment pas et le déclic ne se fait pas :’(
En fait awk te permet de faire du traitement de donnees ligne par ligne
par exemple si tu as un script qui te donne des valeurs sous cette forme :
nom_dossier permissions user1 user2 user3…
tu peux faire :
pour avoir un apercu de comment sont traitees tes donnees
note : $0 contient toute la ligne, les champs separes sont numerotes de 1 a NF et non de 0 a NF-1 comme en C
apres tu fais un script awk (commencant par #! /bin/awk -f)
dont voila la structure :
BEGIN{bloc a executer avant le traitement generique}
{for (i=1;i<=NF; i++){printf $i "separateur"}printf "fin_de_ligne"}
END {bloc a executer a la fin}
comme ca avec des printf tu peux generer ton fichier html facilement avec
si avec ca tu vois toujours pas comment faire, y a perl mais c’est plus lourd
quote="gbx"
si avec ca tu vois toujours pas comment faire, y a perl mais c’est plus lourd[/quote] J’allais le dire, mais perl étant un basé sur un mix du shell, de sed, awk, et plus, autant bien identifier le fonctionnement des composants de base pour mieux comprendre ce qui se passe, AMA.
Malheureusement je n’ai pas le temps pour la première version de ce script de m’attarder sur AWK, je suis en train d’étudier le Perl mais lentement car je fait ça le week-end.
J’ai donc bricoler une solution pour afficher mes éléments, en sachant que le nombre d’élément de mes variables est identique. J’ai utilisé ceci:
FOLDER_ALL=$($LS -lRn $path | $GREP ^d)
GRP_TRSL=$(for i in $($ECHO "$FOLDER_ALL" | $AWK -F " " '{print$4}'); do $GETENT group $i | cut -d: -f1; done)
PERM_GRP=$($ECHO "$FOLDER_ALL" | $CUT -d\ -f1)
LIST_FOLDER=$(for i in $(find $path -type d | $SED -e 's/\ /_/g'); do $ECHO "$i <br>"; done)
GRP_TRSL_TAB=$(for i in $($ECHO "$GRP_TRSL" | $SED -e 's/\ /_/g'); do $ECHO "$i <br>"; done)
PERM_GRP_TAB=$(for i in $($ECHO "$PERM_GRP"); do $ECHO "$i <br>"; done)
# Send data in html file
touch /root/folders-rules.html
cat > /root/folders-rules.html <<EOF
<TABLE BORDER="1" style="text-align: left">
<CAPTION>Table of share with the name of folder, groups and permition</CAPTION>
<TR><b>
<TH><h2>Folder path</h2></TH>
<TH><h2>Name of Group</h2></TH>
<TH><h2>Permition</h2></TH>
</b>
</TR>
<TR>
<TH>$LIST_FOLDER</TH>
<TH>$GRP_TRSL_TAB</TH>
<TH>$PERM_GRP_TAB</TH>
</TR>
</TABLE>
EOF
Je doit avouer que c’est un beau brouillon bien crado, mais bon la sortie donne ce que je veut et en peut de temps ^^
C’est clair que apprendre AWK serais plus gracieux mais je doit rendre un résultat rapidement, pour éventuellement me pencher sur un script plus lourd et mieux fait…Ce qui me laissera bien le temps d’apprendre AWK ^^
Vous le saviez déjà, vous aviez raison il faut que je passe par AWK, mon petit script était prêt, il fonctionnait très bien dans ma petite arborescence de test…Puis voila que je le lâche dans l’environnement en production et PAF, plus de 65535 donnée donc plantage…je devoir me résigner à apprendre AWK…
Enfin rien n’est perdu vu que j’ai un ralongement du temps pour cette tâche