Bonsoir.
Mon but est de récupéréer le user and grouup d'un fichier avant écrasement
pour le réinstaller après.
Voici une partie test de mon invention épurée:
echo "user= $user et groupe= $groupe"
echo "est-ce correct? "
read reponse
if ($reponse = "O" |$reponse = "o")
then
echo "poursuite"
chown -R $user:$groupe /mnt/lin_e/asselec/facturation
else
echo "anulation "
fi
le probleme est le suivant
le user est "531" donc ma réponse est:
user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner.
Comment corriger de truc? Je voyage depuis des jours sur google pour trouver
une solution mais rien à faire.
Merci de toute aide
--
Thierry de Champagne... pour me repondre remplacer 9 par 9online
echo "user= $user et groupe= $groupe" echo "est-ce correct? " read reponse if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in o|O) ... esac
then echo "poursuite" chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
[...]
le probleme est le suivant le user est "531" donc ma réponse est: user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner. Comment corriger de truc? Je voyage depuis des jours sur google pour trouver une solution mais rien à faire. [...]
echo "user= $user et groupe= $groupe"
echo "est-ce correct? "
read reponse
if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in
o|O) ...
esac
then
echo "poursuite"
chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins
d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified"
pour les liens symboliques.
[...]
le probleme est le suivant
le user est "531" donc ma réponse est:
user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner.
Comment corriger de truc? Je voyage depuis des jours sur google pour trouver
une solution mais rien à faire.
[...]
echo "user= $user et groupe= $groupe" echo "est-ce correct? " read reponse if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in o|O) ... esac
then echo "poursuite" chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
[...]
le probleme est le suivant le user est "531" donc ma réponse est: user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner. Comment corriger de truc? Je voyage depuis des jours sur google pour trouver une solution mais rien à faire. [...]
echo "user= $user et groupe= $groupe" echo "est-ce correct? " read reponse if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in o|O) ... esac
then echo "poursuite" chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
[...]
le probleme est le suivant le user est "531" donc ma réponse est: user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner. Comment corriger de truc? Je voyage depuis des jours sur google pour trouver une solution mais rien à faire. [...]
Utilise les uid au lieu des user names.
eval "$(stat -c 'user=%u group=%g')"
He bé.... Ya pas à dire, je suis vraiment un débutant. Merci pour tout...
-- Thierry de Champagne... pour me repondre remplacer 9 par 9online
echo "user= $user et groupe= $groupe"
echo "est-ce correct? "
read reponse
if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in
o|O) ...
esac
then
echo "poursuite"
chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins
d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified"
pour les liens symboliques.
[...]
le probleme est le suivant
le user est "531" donc ma réponse est:
user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner.
Comment corriger de truc? Je voyage depuis des jours sur google pour
trouver une solution mais rien à faire.
[...]
Utilise les uid au lieu des user names.
eval "$(stat -c 'user=%u group=%g')"
He bé.... Ya pas à dire, je suis vraiment un débutant. Merci pour tout...
--
Thierry de Champagne... pour me repondre remplacer 9 par 9online
echo "user= $user et groupe= $groupe" echo "est-ce correct? " read reponse if ($reponse = "O" |$reponse = "o")
if [ "$response" = O ] || [ "$response" = o ]; then
ou
case $response in o|O) ... esac
then echo "poursuite" chown -R $user:$groupe /mnt/lin_e/asselec/facturation
Ne jamais laisser de variable hors des guillemets a moins d'avoir une bonne raison de le faire.
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
[...]
le probleme est le suivant le user est "531" donc ma réponse est: user= UNKNOWN et groupe= saned
Avec un resultat pareil le chown ne peut pas fonctionner. Comment corriger de truc? Je voyage depuis des jours sur google pour trouver une solution mais rien à faire. [...]
Utilise les uid au lieu des user names.
eval "$(stat -c 'user=%u group=%g')"
He bé.... Ya pas à dire, je suis vraiment un débutant. Merci pour tout...
-- Thierry de Champagne... pour me repondre remplacer 9 par 9online
Note que stat est une commande recente de GNU coreutils qui n'est pas du tout portable.
Les alternatives sont de parser l'output de ls -l mais ce n'est pas portable ni fiable non plus (tous les ls n'affichent pas le groupe par defaut et des champs peuvent se retrouver collés).
Sinon, tu as perl ou zsh ou GNU find.
#! /bin/zsh - die() { print -ru2 -- "${0:t}:" "$@" exit 1 } zmodload -i zsh/stat || die need stat module stat -H st -- "$FILE" || exit
Note que stat est une commande recente de GNU coreutils qui
n'est pas du tout portable.
Les alternatives sont de parser l'output de ls -l mais ce n'est
pas portable ni fiable non plus (tous les ls n'affichent pas le
groupe par defaut et des champs peuvent se retrouver collés).
Sinon, tu as perl ou zsh ou GNU find.
#! /bin/zsh -
die() {
print -ru2 -- "${0:t}:" "$@"
exit 1
}
zmodload -i zsh/stat || die need stat module
stat -H st -- "$FILE" || exit
Note que stat est une commande recente de GNU coreutils qui n'est pas du tout portable.
Les alternatives sont de parser l'output de ls -l mais ce n'est pas portable ni fiable non plus (tous les ls n'affichent pas le groupe par defaut et des champs peuvent se retrouver collés).
Sinon, tu as perl ou zsh ou GNU find.
#! /bin/zsh - die() { print -ru2 -- "${0:t}:" "$@" exit 1 } zmodload -i zsh/stat || die need stat module stat -H st -- "$FILE" || exit
chown "$st[uid]:$st[gid]" -- ... || die ...
-- Stephane
Stephane Chazelas
2004-12-20, 13:03(+01), Etienne de Tocqueville:
Stephane Chazelas writes:
chown -R "$user:$groupe" ...
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
Logiquement, le comportement de chown avec "-R" est précisé dans le man.
Tout a fait. C'etait pour le cas ou on veuille ecrire un script qui doive marcher sur d'autres machines que la sienne.
Et s'il s'agit de faire un script portable, alors l'argument "-P" ne convient pas. C'est "-h" sur les différents unix que je pratique.
D'apres la Single Unix Specification, version 3:
-h If the system supports user IDs for symbolic links, for each file operand that names a file of type symbolic link, chown shall attempt to set the user ID of the symbolic link. If the system supports group IDs for symbolic links, and a group ID was specified, for each file operand that names a file of type symbolic link, chown shall attempt to set the group ID of the symbolic link. If the system does not support user or group IDs for symbolic links, for each file operand that names a file of type symbolic link, chown shall do nothing more with the current file and shall go on to any remaining files. [...] -P If the -R option is specified and a symbolic link is specified on the command line or encountered during the traversal of a file hierarchy, chown shall change the owner ID (and group ID, if specified) of the symbolic link if the system supports this operation. The chown utility shall not follow the symbolic link to any other part of the file hierarchy. -R Recursively change file user and group IDs. For each file operand that names a directory, chown shall change the user ID (and group ID, if specified) of the directory and all files in the file hierarchy below it. Unless a -H, -L, or -P option is specified, it is unspecified which of these options will be used as the default.
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne garantit pas que les liens symboliques (trouvés lors de la descente recursive) ne seront pas suivis.
Attention au chown -R sans -P ou le resultat est "unspecified"
pour les liens symboliques.
Logiquement, le comportement de chown avec "-R" est précisé dans le
man.
Tout a fait. C'etait pour le cas ou on veuille ecrire un script
qui doive marcher sur d'autres machines que la sienne.
Et s'il s'agit de faire un script portable, alors l'argument "-P"
ne convient pas. C'est "-h" sur les différents unix que je pratique.
D'apres la Single Unix Specification, version 3:
-h
If the system supports user IDs for symbolic links, for
each file operand that names a file of type symbolic
link, chown shall attempt to set the user ID of the
symbolic link. If the system supports group IDs for
symbolic links, and a group ID was specified, for each
file operand that names a file of type symbolic link,
chown shall attempt to set the group ID of the symbolic
link. If the system does not support user or group IDs
for symbolic links, for each file operand that names a
file of type symbolic link, chown shall do nothing more
with the current file and shall go on to any remaining
files.
[...]
-P
If the -R option is specified and a symbolic link is
specified on the command line or encountered during the
traversal of a file hierarchy, chown shall change the
owner ID (and group ID, if specified) of the symbolic
link if the system supports this operation. The chown
utility shall not follow the symbolic link to any other
part of the file hierarchy.
-R
Recursively change file user and group IDs. For each
file operand that names a directory, chown shall change
the user ID (and group ID, if specified) of the
directory and all files in the file hierarchy below it.
Unless a -H, -L, or -P option is specified, it is
unspecified which of these options will be used as the
default.
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne
garantit pas que les liens symboliques (trouvés lors de la
descente recursive) ne seront pas suivis.
Attention au chown -R sans -P ou le resultat est "unspecified" pour les liens symboliques.
Logiquement, le comportement de chown avec "-R" est précisé dans le man.
Tout a fait. C'etait pour le cas ou on veuille ecrire un script qui doive marcher sur d'autres machines que la sienne.
Et s'il s'agit de faire un script portable, alors l'argument "-P" ne convient pas. C'est "-h" sur les différents unix que je pratique.
D'apres la Single Unix Specification, version 3:
-h If the system supports user IDs for symbolic links, for each file operand that names a file of type symbolic link, chown shall attempt to set the user ID of the symbolic link. If the system supports group IDs for symbolic links, and a group ID was specified, for each file operand that names a file of type symbolic link, chown shall attempt to set the group ID of the symbolic link. If the system does not support user or group IDs for symbolic links, for each file operand that names a file of type symbolic link, chown shall do nothing more with the current file and shall go on to any remaining files. [...] -P If the -R option is specified and a symbolic link is specified on the command line or encountered during the traversal of a file hierarchy, chown shall change the owner ID (and group ID, if specified) of the symbolic link if the system supports this operation. The chown utility shall not follow the symbolic link to any other part of the file hierarchy. -R Recursively change file user and group IDs. For each file operand that names a directory, chown shall change the user ID (and group ID, if specified) of the directory and all files in the file hierarchy below it. Unless a -H, -L, or -P option is specified, it is unspecified which of these options will be used as the default.
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne garantit pas que les liens symboliques (trouvés lors de la descente recursive) ne seront pas suivis.
-- Stephane
Etienne de Tocqueville
Stephane Chazelas a écrit sur fr.comp.os.unix :
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne garantit pas que les liens symboliques (trouvés lors de la descente recursive) ne seront pas suivis.
Possible. Mais ce que je voulais dire, c'est qu'avec une telle option -P, on aura beau être compatible avec la norme, on ne sera plus compatible avec beaucoup de machines ;-) J'ai regardé sur la dernière version (dispo ici) de Solaris, de Irix et de HP-UX, aucun des 3 ne connais ce -P
Et comme moi je suis assez terre à terre, quand je cherche à faire un script qui portable, avant de vérifier si ça respecte la norme, je verifie que ça marche sur tous les OS qui sont autour de moi !
Stephane Chazelas <cette.adresse@est.invalid> a écrit sur fr.comp.os.unix :
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne
garantit pas que les liens symboliques (trouvés lors de la
descente recursive) ne seront pas suivis.
Possible. Mais ce que je voulais dire, c'est qu'avec une telle option
-P, on aura beau être compatible avec la norme, on ne sera plus
compatible avec beaucoup de machines ;-) J'ai regardé sur la dernière
version (dispo ici) de Solaris, de Irix et de HP-UX, aucun des 3 ne
connais ce -P
Et comme moi je suis assez terre à terre, quand je cherche à faire un
script qui portable, avant de vérifier si ça respecte la norme, je
verifie que ça marche sur tous les OS qui sont autour de moi !
Donc, pour etre POSIX/SUS conformant, il faut utiliser -P. -h ne garantit pas que les liens symboliques (trouvés lors de la descente recursive) ne seront pas suivis.
Possible. Mais ce que je voulais dire, c'est qu'avec une telle option -P, on aura beau être compatible avec la norme, on ne sera plus compatible avec beaucoup de machines ;-) J'ai regardé sur la dernière version (dispo ici) de Solaris, de Irix et de HP-UX, aucun des 3 ne connais ce -P
Et comme moi je suis assez terre à terre, quand je cherche à faire un script qui portable, avant de vérifier si ça respecte la norme, je verifie que ça marche sur tous les OS qui sont autour de moi !