bonjour amis HFRiens et HFRiennes,
Comme le dit le sujet, j'ai un problème de jointure. Parce que de longs discours ne valent pas mieux que du code, voila le script :
Code :
- #!/bin/bash
- sort -t: -n -k4 /etc/passwd -o tripasswd
- cut -d : -f1,3 /etc/group | sort -t: -n -k2 -o trigroup
- join -t: -1 4 -2 2 -a 1 -e "--ERR GROUP--" tripasswd trigroup > jointureA
|
Le but de la jointure est d'affichier pour toutes mes lignes du fichier /etc/passwd le nom du groupe associé.
Pour cela je trie d'abord le fichier /etc/passwd sur le champ 4 qui correspond au GID
Ensuite je coupe le champ 3 (parce que souvent vide) du fichier /etc/group et le trie sur le champ 2 qui correspond au GID
Maintenant la jointure et les soucis, elle se passe pour le premier fichier sur le champ 4 et pour le second sur le champ 2 et je veux affichier --ERR GROUP-- si un champ vide est détecté. Hors la jointure se passe mal ! Toutes les lignes ne sont pas affichées.
J'ai été obligé d'ajouter l'option -a 1 pour affichier les lignes non appariées (qui ne peuvent être mises ensembles, mais pourquoi???). Voici une partie de mon fichier jointureA :
Code :
- 0:halt:x:7:halt:/sbin:/sbin/halt:root
- 0:operator:x:11:operator:/var:/bin/sh:root
- 0:root:x:0:root:/root:/bin/bash:root
- 0:shutdown:x:6:shutdown:/sbin:/sbin/shutdown:root
- 0:suisa:x:0:isabelle:/home/root/suisa:/bin/bash:root
- 0:sumarc:x:0:marc:/root:/bin/bash:root
- 0:suoli:x:0:olivier:/home/root/suoli:/bin/bash:root
- 0:suseb:x:0:seb:/home/root/suseb:/bin/bash:root
- 0:sync:x:5:sync:/sbin:/bin/sync:root
- 1:bin:x:1:bin:/bin:/bin/sh:bin
- 2:daemon:x:2:daemon:/sbin:/bin/sh:daemon
- 4:adm:x:3:adm:/var/adm:/bin/sh:adm
- 7:lp:x:4:lp:/var/spool/lpd:/bin/sh:lp
- 12:mail:x:8:mail:/var/spool/mail:/bin/sh:--ERR GROUP--
- 13:news:x:9:news:/var/spool/news:/bin/sh:--ERR GROUP--
- 14:uucp:x:10:uucp:/var/spool/uucp:/bin/sh:--ERR GROUP--
- 69:vcsa:x:69:virtual console memory owner:/dev:/sbin/nologin:--ERR GROUP--
- 70:xfs:x:70:system user for XFree86:/etc/X11/fs:/bin/false:--ERR GROUP--
- 71:apache:x:71:system user for apache2:/var/www:/bin/sh:--ERR GROUP--
|
Cela marche correctement pour les 7 premiers groupes alors que le tri du fichier /etc/passwd est comme ceci (je ne mets pas toutes les lignes volontairement car trop long) :
Code :
- root:0
- bin:1
- daemon:2
- sys:3
- adm:4
- tty:5
- disk:6
- lp:7
- mem:8
- kmem:9
- wheel:10
- mail:12
- news:13
- uucp:14
- man:15
- floppy:19
- games:20
- cdrom:22
- utmp:24
- usb:43
- vcsa:69
- xfs:70
- apache:71
|
et le tri du fichier /etc/passwd comme ca :
Code :
- halt:x:7:0:halt:/sbin:/sbin/halt
- operator:x:11:0:operator:/var:/bin/sh
- root:x:0:0:root:/root:/bin/bash
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- suisa:x:0:0:isabelle:/home/root/suisa:/bin/bash
- sumarc:x:0:0:marc:/root:/bin/bash
- suoli:x:0:0:olivier:/home/root/suoli:/bin/bash
- suseb:x:0:0:seb:/home/root/suseb:/bin/bash
- sync:x:5:0:sync:/sbin:/bin/sync
- bin:x:1:1:bin:/bin:/bin/sh
- daemon:x:2:2:daemon:/sbin:/bin/sh
- adm:x:3:4:adm:/var/adm:/bin/sh
- lp:x:4:7:lp:/var/spool/lpd:/bin/sh
- mail:x:8:12:mail:/var/spool/mail:/bin/sh
- news:x:9:13:news:/var/spool/news:/bin/sh
- uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh
- vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
- xfs:x:70:70:system user for XFree86:/etc/X11/fs:/bin/false
- apache:x:71:71:system user for apache2:/var/www:/bin/sh
|
Si quelqu'un voit pourquoi cela ne marche pas pour toutes les lignes, je suis preneur. j'ai déjà testé -a2 cela fait pratiquement la mêmes chose, je sèche
merci^^
Message édité par dem0ntibul le 31-01-2006 à 20:13:08