Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Aller à la page:  1 2 Page suivante
Page: 1 sur 2
un script qui renseigne sur les droits
Envoyé par: Nicolas_kenny

Alors voila...

je prend par exemple un fichier ici lab.rar et le but de mon bash serai que l'utilisateur puisse lire en français les différents droits de ce fichier

element="lab.rar"
droit=`ls -la $element | cut -d " " -f1`
echo "Droits : "$droit

pour l'instant ce code donne (avec echo) quelque chose du style: -rwxr-x-r-- par exemple. "il s'agit de la première partie du listing ls -la"

j'aimerai pouvoir lire 'droit' lettre par lettre et a l'aide d'un if analiser les différents droits.

le script me retournerai un truc du style:

$ -rwxr-x-r--
$ droits utilisateur: lecture ecriture execution
$ droits groupe: lecture execution
$ droits autres: lecture

merci de me répondre et de me donner un coup de main.

Poste le Saturday 9 December 2006 16:42:56
Répondre     Citer    
Re: un script qui renseigne sur les droits

Pourquoi pas ceci :

#!/bin/sh

check_droit()
{
RT=$1
[ "$RT" != "${RT/r/}" ] && printf "lecture   "
[ "$RT" != "${RT/w/}" ] && printf "ecriture  "
[ "$RT" != "${RT/x/}" ] && printf "execution "
printf "\n"
}
droit=$( stat -c '%A' file )
droit_prop=${droit:1:3}
droit_groupe=${droit:4:3}
droit_autre=${droit:7:3}
printf "droits du  proprietaire : "
check_droit $droit_prop
printf "droits du groupe :        "
check_droit $droit_groupe
printf  "droits des autres :      "
check_droit $droit_autre


--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Saturday 9 December 2006 20:51:00
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Raph__

M. Brugmans a du style.

Poste le Saturday 9 December 2006 23:29:11
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
Frédéric Brugmans
Pourquoi pas ceci :

#!/bin/sh

check_droit()
{
RT=$1
[ "$RT" != "${RT/r/}" ] && printf "lecture
"
[ "$RT" != "${RT/w/}" ] && printf
"ecriture "
[ "$RT" != "${RT/x/}" ] && printf
"execution "
printf "\n"
}
droit=$( stat -c '%A' file )
droit_prop=${droit:1:3}
droit_groupe=${droit:4:3}
droit_autre=${droit:7:3}
printf "droits du proprietaire : "
check_droit $droit_prop
printf "droits du groupe : "
check_droit $droit_groupe
printf "droits des autres : "
check_droit $droit_autre


--
Brugmans Frédéric

On peut se passer des variables intermédiaires "droit_prop" etc en lançant directemet "check_droit ${droit:1:3}" etc mais la solution est très élégante !!!!:chef:



L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Sunday 10 December 2006 14:17:46
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Hello
Tien sa tombe bien ce topic smiling smiley

Je cherche a faire a peut près la même chose sauf que c'est dans le but d'avoir un script qui permette de sauvegarder les droit des user, le groupe . et évidement de le restaurer, pour des question de faciliter (?) je compte utiliser stat pour avoir les droit en octal.

j'ai donc essayer pas mal de chose ls find stat etc mai après pas mal de recherche, il me faut passer par un fichier temporaire , sinon sa va être trop lourd.

donc l'idée c'est de faire un find / >> tmp001
ensuite de récupérer chaque chemin fichier et de lire les droit avec stat et un grep et de mettre le tout dans un fichier final.
A la limite faire 3 fichier 1 avec l'user le 2 ème le group, le 3 avec la permission en octal.
seulement le problème c'est que stat ne gère pas les espaces ?-(

donc si quelqu'un a une idée sur le sujet je suis preneur :-)
Je precise que je débute en script shell

Poste le Friday 15 December 2006 00:19:50
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
panthere noire
Hello
j'ai donc essayer pas mal de chose ls find stat
etc mai après pas mal de recherche, il me faut
passer par un fichier temporaire , sinon sa va
être trop lourd.

donc l'idée c'est de faire un find / >>
tmp001
ensuite de récupérer chaque chemin fichier et de
lire les droit avec stat et un grep et de mettre
le tout dans un fichier final.
A la limite faire 3 fichier 1 avec l'user le 2 ème
le group, le 3 avec la permission en octal.
seulement le problème c'est que stat ne gère pas
les espaces

donc si quelqu'un a une idée sur le sujet je suis
preneur
Je precise que je débute en script shell

1) Je vais être assez bateau mais en général il n'est pas besoin de restaurer les droits car il n'y a aucune raison de les perdre.
2) Cependant, si ça arrive et que t'as archivé ton dossier avec "tar cvf", tu peux restaurer ton dossier et tous les droits de ses fichiers en tapant "tar xpvf"
3) c'est dommage de faire 3 fichiers là où un seul suffit. Un fichier contenant sur chaque ligne "nom_fichier:user:group:droit". C'est toujours mieux de regrouper ensemble les choses qui vont ensemble. Et c'est pas compliqué de traiter un tel fichier et d'éclater chaque ligne avec "cut"
4) Qu'entends-tu par "stat ne gère pas les espaces" ???

Ma solution (je tape de tête car j'ai pas de shell sous la main pour tester)
#!/bin/sh

# Fonction qui donne les droits en octal d'un groupe de 3 lettres rwx
droitOctal()
{
....(
........octal=0
........test "`echo $1 |cut -c1`" = "r" && octal=`expr $octal + 4`
........test "`echo $1 |cut -c2`" = "w" && octal=`expr $octal + 2`
........test "`echo $1 |cut -c3`" = "x" && octal=`expr $octal + 1`
....)
....echo $octal
}

# Traitement de tous les fichiers
find / -exec ls -ld {} \; |while read ligne
do
....# Analyse des infos du "ls"
....droits=`echo $ligne |awk '{print $1}'`
....user=`echo $ligne |awk '{print $3}'`
....group=`echo $ligne |awk '{print $4}'`
....nom=`echo $ligne |awk '{print $NF}'`

....# Analyse des droits
....u=`echo $droits |cut -c2-4`
....u=`droitOctal $u`
....g=`echo $droits |cut -c5-7`
....g=`droitOctal $g`
....o=`echo $droits |cut -c8-10`
....o=`droitOctal $o`

....# Ecriture
....echo "$nom:$user:$group:$u$g$o"
done
Et sans fichier temporaire. Tout passe par la mémoire

Citation
panthere noire
Je precise que je débute en script shell
[fr.lang.free.fr]

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Friday 15 December 2006 01:54:42
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Citation
Sve@r
1) Je vais être assez bateau mais en général il n'est pas besoin de restaurer les droits car il n'y a aucune raison de les perdre.
2) Cependant, si ça arrive et que t'as archivé ton dossier avec "tar cvf", tu peux restaurer ton dossier et tous les droits de ses fichiers en tapant "tar xpvf"
3) c'est dommage de faire 3 fichiers là où un seul suffit. Un fichier contenant sur chaque ligne "nom_fichier:user:group:droit". C'est toujours mieux de regrouper ensemble les choses qui vont ensemble. Et c'est pas compliqué de traiter un tel fichier et d'éclater chaque ligne avec "cut"
4) Qu'entends-tu par "stat ne gère pas les espaces" ???

alors :
1.- quand ce trompe de répertoire par exemple a la place de /home/user/file on le fait dans une branche plus haut /home/user sa risque d'etre assez pénible de restaurer tout les droits des fichier des utilisateurs, et sa peux arriver n'importe ou.

2.- archiver c'est pas très rapide et surtout sa prend de la place, par contre je pensse archiver les fichier obtenu !
3.- tout a fait d'accord ];-) je ne connaissait pas cut en detail je vai voire mon pote google smiling smiley
4.- il ne parvien pas a obtenire les information si le fichier contien un espace par exemple monfichier_pouet.txt va marcher , mai pas monfichier pouet.txt


Poste le Friday 15 December 2006 07:28:32
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
panthere noire
3.- tout a fait d'accord je ne connaissait pas cut en detail je vai voire mon pote google smiling smiley
man cut

Citation
panthere noire
4.- il ne parvien pas a obtenire les information
si le fichier contien un espace par exemple monfichier_pouet.txt va marcher , mai pas
monfichier pouet.txt
Au lieu de faire
stat monfichier pouet.txt
Demande
stat "monfichier pouet.txt"
Et là, t'auras plus de soucis d'espace.

Donc si le nom est stocké dans une variable "$file", tu demandes
stat "$file"
D'ailleurs, si tu regardes attentivement mon script, chaque fois que je m'intéresse à une variable, je la mets toujours entre double guillemets...



L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Friday 15 December 2006 19:55:55
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Oui Merci smiling smiley)

j'ai dejä un peut modifié le code

#!/bin/sh
echo " Vetion 1.4"

# Fonction  pour avoire les droits en octet
droitOctal()
{
#j'ai supprimer les () pour crée un processus fils car cela ne marchait pas !
	octal=0
		test "`echo $1 |cut -c2`" = "r" && octal=`expr $octal + 400`
		test "`echo $1 |cut -c3`" = "w" && octal=`expr $octal + 200`
		test "`echo $1 |cut -c4`" = "x" && octal=`expr $octal + 100`
		test "`echo $1 |cut -c5`" = "r" && octal=`expr $octal + 40`
		test "`echo $1 |cut -c6`" = "w" && octal=`expr $octal + 20`
		test "`echo $1 |cut -c7`" = "x" && octal=`expr $octal + 10`
		test "`echo $1 |cut -c8`" = "r" && octal=`expr $octal + 4`
		test "`echo $1 |cut -c9`" = "w" && octal=`expr $octal + 2`
		test "`echo $1 |cut -c10`" = "x" && octal=`expr $octal + 1`
		test "`echo $1 |cut -c4`" = "s" && octal=`expr $octal + 4100`
		test "`echo $1 |cut -c7`" = "s" && octal=`expr $octal + 6110`
		test "`echo $1 |cut -c10`" = "t" && octal=`expr $octal + 7001`
		test "`echo $1 |cut -c4`" = "S" && octal=`expr $octal + 4000`
		test "`echo $1 |cut -c7`" = "S" && octal=`expr $octal + 6000`
		test "`echo $1 |cut -c10`" = "T" && octal=`expr $octal + 7000`
#echo permet d'avoire un retour de la fonction
	echo $octal
}
# listing des fichier 
find / -exec ls -ld {} \; |while read ligne
do
	# Analyse des infos du "ls"
	droits=`echo $ligne |awk '{print $1}'`
	user=`echo $ligne |awk '{print $3}'`
	group=`echo $ligne |awk '{print $4}'`
	nom=`echo $ligne |awk '{print $NF}'`
	o=`echo $droits |cut -c0-10`
	ret=`droitOctal $o`
# Ecriture
#j'ai mis d'abort les droit  avant le fichier pour des facilité de lecture pour la suite
Full="$ret:$user:$group:$droits:$nom"
echo $Full
echo $Full >> "`pwd`/Desktop/droit000.txt"

#on fait une pause pour lire les info
#sleep 1
done
exit 0

Je me demande si il n'y a pas un moyen d'optimiser le code car c est lent et c'est pas la commande find qui fait ramer le tout donc je ne voit pas ou est le problème ?-(
peut etre que awk est lent ?
Ceci ce produit meme si j'enleve l'écriture dans le fichier.




Poste le Friday 15 December 2006 22:37:29
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: oudoubah

Tu peux essayer :
#!/bin/sh

analyse() {
    for name in $(ls $1) ; do
        stats=$(stat $1/$name | tr '()/' '   ' | awk '/Access.*Uid/ {print $2 ":" $5 ":" $8}')
        echo "$1/$name:$stats"
        [ -d $1/$name ] && analyse $1/$name
    done
}

analyse $1

Sur chaque ligne tu auras:
nom_du_fichier:permissions:uid:gid

Et pour le lancer :
nom_du_script repertoire_a_faire

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 15 December 2006 23:02:58
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: oudoubah

Et pour rajouter la gestion des fichiers cachés et des espaces dans les noms :
#!/bin/sh

analyse() {
    ls -A "$1" | while read name
    do
        stats=$(stat "$1/$name" | tr '()/' '   ' | awk '/Access.*Uid/ {print $2 ":" $5 ":" $8}')
        echo "$1/$name:$stats"
        [ -d "$1/$name" ] && analyse "$1/$name"
    done
}

analyse "$1"

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 15 December 2006 23:13:40
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: oudoubah

Citation
RTFM stat
#!/bin/sh

analyse() {
    ls -A "$1" | while read name
    do
        stat -c '%n:%a:%u:%g' "$1/$name"
        [ -d "$1/$name" ] && analyse "$1/$name"
    done
}
analyse "$1"

Les sticky bits ne sont affichés que si ils sont positionnés.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 15 December 2006 23:33:24
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Mushroom

Je sais pas si je comprends bien le problème, mais il me semble qu'il y a plus simple :

find $dossier/  -mindepth 1 -exec stat -c "%a %u:%g {}" {} \; >$restauration

Et si le but est vraiment de restaurer, on peut même se payer le luxe de faire directement un script de régénération :
#!/bin/sh

echo '#!/bin/sh' >restauration
find ${1}/ -exec stat -c "chmod %a {} ; chown %u:%g {}" {} \; | tac >>restauration

tac assurant ici que les fichiers les plus en profondeurs seront traités en premier, en inversant la sortie. J'ai rien compris (?)

Poste le Saturday 16 December 2006 15:15:56
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
panthere noire
Oui Merci smiling smiley)

j'ai dejä un peut modifié le code

#!/bin/sh
echo " Vetion Version 1.4"

# Fonction pour avoire les droits en octet OCTAL
droitOctal()
{
#j'ai supprimer les () pour crée un processus fils
car cela ne marchait pas !
octal=0
test "`echo $1 |cut -c2`" = "r" &&
octal=`expr $octal + 400`
test "`echo $1 |cut -c3`" = "w" &&
octal=`expr $octal + 200`
test "`echo $1 |cut -c4`" = "x" &&
octal=`expr $octal + 100`
test "`echo $1 |cut -c5`" = "r" &&
octal=`expr $octal + 40`
test "`echo $1 |cut -c6`" = "w" &&
octal=`expr $octal + 20`
test "`echo $1 |cut -c7`" = "x" &&
octal=`expr $octal + 10`
test "`echo $1 |cut -c8`" = "r" &&
octal=`expr $octal + 4`
test "`echo $1 |cut -c9`" = "w" &&
octal=`expr $octal + 2`
test "`echo $1 |cut -c10`" = "x" &&
octal=`expr $octal + 1`
test "`echo $1 |cut -c4`" = "s" &&
octal=`expr $octal + 4100`
test "`echo $1 |cut -c7`" = "s" &&
octal=`expr $octal + 6110`
test "`echo $1 |cut -c10`" = "t" &&
octal=`expr $octal + 7001`
test "`echo $1 |cut -c4`" = "S" &&
octal=`expr $octal + 4000`
test "`echo $1 |cut -c7`" = "S" &&
octal=`expr $octal + 6000`
test "`echo $1 |cut -c10`" = "T" &&
octal=`expr $octal + 7000`
#echo permet d'avoire un retour de la fonction
echo $octal
}
# listing des fichier
find / -exec ls -ld {} \; |while read ligne
do
# Analyse des infos du "ls"
droits=`echo $ligne |awk '{print $1}'`
user=`echo $ligne |awk '{print $3}'`
group=`echo $ligne |awk '{print $4}'`
nom=`echo $ligne |awk '{print $NF}'`
o=`echo $droits |cut -c0-10`
ret=`droitOctal $o`
# Ecriture
#j'ai mis d'abort les droit avant le fichier pour
des facilité de lecture pour la suite
Full="$ret:$user:$group:$droits:$nom"
echo $Full
echo $Full >> "`pwd`/Desktop/droit000.txt"

#on fait une pause pour lire les info
#sleep 1
done
exit 0

Je me demande si il n'y a pas un moyen d'optimiser
le code car c est lent et c'est pas la commande
find qui fait ramer le tout donc je ne voit pas ou
est le problème
peut etre que awk est lent ?
Ceci ce produit meme si j'enleve l'écriture dans
le fichier.
J'apprécie beaucoup ton script. Il montre que t'as hyper bien assimilé
- le echo d'une fonction que tu utiliseras ensuite avec "a=`fonction`"
- l'effet des parenthèses dans la fonction (quoique tu aies fait une erreur sur la cause de l'échec => la variable "$octal" étant modifiée dans le sous-process, il aurait fallu l'afficher dans le sous-process et non au dehors et ça aurait marché même avec les parenthèses mais comme c'est moi qui ait fait l'erreur...)
- la nuance entre les bits spéciaux écrits en minuscule et ceux écrits en majuscule (petite erreur pour le second "s", le droit associé est "2010" et non "6110" ainsi que pour le "t" qui donne "1001" et non "7001")

En revanche, tu remarqueras que les algo pour chaque droit octal ugo sont répétitifs donc t'aurais pu essayer de simplifier la recherche de la lettre et appliquer la même recherche pour les 3 groupes rwx(u), rwx(g) et rwx(o).

Quand à la lenteur, elle ne vient absolument pas de "awk" qui est hyper rapide. Probable les multiples "echo ... |cut" surtout mis entre backquottes => sous-processus à chaque fois...

Citation
Mushroom
Je sais pas si je comprends bien le problème, mais il me semble qu'il y a plus simple :
Oui mais là, je crois qu'on est parti dans un délire que seuls ceux qui aiment faire des folies en shell peuvent apprécier...
Citation
Mushroom
tac assurant ici que les fichiers les plus en profondeurs seront traités en premier, en inversant la sortie. J'ai rien compris
Tiens ? je ne connaissais pas "tac"... mais il y a à peine 2 ans je ne connaissais pas non plus "rev" ni "xargs"...

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Saturday 16 December 2006 16:17:05
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Citation
Sve@r
J'apprécie beaucoup ton script. Il montre que t'as hyper bien assimilé
C'est sure que cela m'aide deja beaucoup quand on a un point de départ, merci

J'ais donc chercher a savoire ce qui fait que c'est lent comme ça.

Alors en gros cut et awk y sont pour quelque chose ceci est normal car tout ce qui est de traitment de texte demande de traiter chaque caractere.

j'ai tout fois trouvé une autre piste que awk et echo , quitte a supprimer la fonction, moin propre ,mai plus rapide

voici le code
read -a tb <<< $ligne

Et toutes les infos son stoqué dans tb sous forme de tableau. voila c'est tout pour l'instant
Je cherche a éviter cut qui mange pas mal de cpu , mai bon on a pas trop le choix pour le moment.

Poste le Saturday 16 December 2006 23:33:35
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

on peut pas editer ici ??

bref voila le code , je rencontre un problème de syntaxe

#!/bin/sh
echo " Vesion 1.5"
# listing des fichier 
find / -exec ls -ld {} \; |while read ligne
do
	# Analyse des infos du "ls"
read -a tb <<< $ligne
#La boucle ici pour s'assurer que le nom et le chemin du fichier
#ne son pas tronquée par read si un espace ce trouve dans un nom d'unrepertoire ou un fichier
	b=7
	a=${#tb[*]}
	while true
	do
		if [ $a -ge $b ]
		then
# l'erreur ce situe ici l'orceque il rencontre le /
			PathFile=$(($PathFile + ${tb[$b]}))
			echo "ok " $PathFile
		else
			echo sortie
			break
		fi
		b=$(($b + 1))
		sleep 0.0001
	done
# la suite doit encore etre modifier
	octal=0
	test "`echo $1 |cut -c2`" = "r" && octal=`expr $octal + 400`
	test "`echo $1 |cut -c3`" = "w" && octal=`expr $octal + 200`
	test "`echo $1 |cut -c4`" = "x" && octal=`expr $octal + 100`
	test "`echo $1 |cut -c5`" = "r" && octal=`expr $octal + 40`
	test "`echo $1 |cut -c6`" = "w" && octal=`expr $octal + 20`
	test "`echo $1 |cut -c7`" = "x" && octal=`expr $octal + 10`
	test "`echo $1 |cut -c8`" = "r" && octal=`expr $octal + 4`
	test "`echo $1 |cut -c9`" = "w" && octal=`expr $octal + 2`
	test "`echo $1 |cut -c10`" = "x" && octal=`expr $octal + 1`
	test "`echo $1 |cut -c4`" = "s" && octal=`expr $octal + 4100`
	test "`echo $1 |cut -c7`" = "s" && octal=`expr $octal + 6110`
	test "`echo $1 |cut -c10`" = "t" && octal=`expr $octal + 7001`
	test "`echo $1 |cut -c4`" = "S" && octal=`expr $octal + 4000`
	test "`echo $1 |cut -c7`" = "S" && octal=`expr $octal + 6000`
	test "`echo $1 |cut -c10`" = "T" && octal=`expr $octal + 7000`



# Ecriture
#j'ai mis d'abort les droit  avant le fichier pour des facilité de lecture pour la suite
#Full="$ret:$user:$group:$droits:$nom"
#echo $Full 
#echo $Full >> "`pwd`/Desktop/droit000.txt"

#on fait une pause pour lire les info
#sleep 1
done
exit 0



Poste le Sunday 17 December 2006 01:42:34
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
panthere noire
on peut pas editer ici ??
Non, on peut pas.

Citation
panthere noire
bref voila le code , je rencontre un problème de
syntaxe

#!/bin/sh
echo " Vesion 1.5"
# listing des fichier
find / -exec ls -ld {} \; |while read ligne
do
# Analyse des infos du "ls"
read -a tb <<< $ligne
#La boucle ici pour s'assurer que le nom et le
chemin du fichier
#ne son pas tronquée par read si un espace ce
trouve dans un nom d'unrepertoire ou un fichier
b=7
a=${#tb[*]}
while true
do
if [ $a -ge $b ]
then
# l'erreur ce situe ici l'orceque il rencontre le
/
PathFile=$(($PathFile + ${tb[$b]}))
echo "ok " $PathFile
else
echo sortie
break
fi
b=$(($b + 1))
sleep 0.0001
done
# la suite doit encore etre modifier
octal=0
test "`echo $1 |cut -c2`" = "r" &&
octal=`expr $octal + 400`
test "`echo $1 |cut -c3`" = "w" &&
octal=`expr $octal + 200`
test "`echo $1 |cut -c4`" = "x" &&
octal=`expr $octal + 100`
test "`echo $1 |cut -c5`" = "r" &&
octal=`expr $octal + 40`
test "`echo $1 |cut -c6`" = "w" &&
octal=`expr $octal + 20`
test "`echo $1 |cut -c7`" = "x" &&
octal=`expr $octal + 10`
test "`echo $1 |cut -c8`" = "r" &&
octal=`expr $octal + 4`
test "`echo $1 |cut -c9`" = "w" &&
octal=`expr $octal + 2`
test "`echo $1 |cut -c10`" = "x" &&
octal=`expr $octal + 1`
test "`echo $1 |cut -c4`" = "s" &&
octal=`expr $octal + 4100`
test "`echo $1 |cut -c7`" = "s" &&
octal=`expr $octal + 6110`
test "`echo $1 |cut -c10`" = "t" &&
octal=`expr $octal + 7001`
test "`echo $1 |cut -c4`" = "S" &&
octal=`expr $octal + 4000`
test "`echo $1 |cut -c7`" = "S" &&
octal=`expr $octal + 6000`
test "`echo $1 |cut -c10`" = "T" &&
octal=`expr $octal + 7000`

# Ecriture
#j'ai mis d'abort les droit avant le fichier pour
des facilité de lecture pour la suite
#Full="$ret:$user:$group:$droits:$nom"
#echo $Full
#echo $Full >> "`pwd`/Desktop/droit000.txt"

#on fait une pause pour lire les info
#sleep 1
done
exit 0

Bon, à vue d'oeuil ton code a l'air correct. Sauf que je ne connais pas la triple redirection "<<<" (ciel ? Il y a donc un truc en shell que je ne connais pas ???) donc pour l'erreur faut chercher avec "vi" qui te colorise ton shell. Si a un moment donné la couleur devient mauvaise, c'est qu'il y a un pb de guillemet non fermé...
peut-être aussi "sleep 0.001" qui me semble douteux (je crois que "sleep" veut une valeur entière)...

Juste 2 remarques:
- t'as pas encore intégré le fait que le setgid donne le droit "2010" et non "6110". Si tu mets "6110" cela veut dire que les droits sont "--s--s---". Comment peux-tu affirmer que le setgid prouve aussi la présence du setuid ???
- ">`pwd`/Desktop/..." peut se remplacer par ">Desktop/..." puisqu'un nom ne commençant pas par "/" est automatiquement pris dans "pwd" par défaut...

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Sunday 17 December 2006 13:19:29
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Citation
Sve@r
Bon, à vue d'oeuil ton code a l'air correct. Sauf que je ne connais pas la triple redirection "<<<" (ciel ? Il y a donc un truc en shell que je ne connais pas ???)

Je suis ou plutôt j'étais programmeur , j'ai abandonner partiellement car une maladie me met sérieusement des batons dans les roue, en gros j'arrive plus a aussi bien me concentrer qu'avant. et ce dans tout les domaines.:-/

Oui la triple direction existe je l'ai trouver quelque part, le temps que je remette le mulot dessus. et j'expliquerai le tout dans les commentaires du post.

Citation
Sve@r
t'as pas encore intégré le fait que le setgid donne le droit "2010" et non "6110". Si tu mets "6110" cela veut dire que les droits sont "--s--s---". Comment peux-tu affirmer que le setgid prouve aussi la présence du setuid ??? [/quote

dans le code il y a ecrit : # la suite doit encore etre modifier ;-) en gros je vai virifié mai avant il me faut le code ou je coince.

Citation
Sve@r
">`pwd`/Desktop/..." peut se remplacer par ">Desktop/..." puisqu'un nom ne commençant pas par "/" est automatiquement pris dans "pwd" par défaut...

c'est noter Merci smiling smiley

Poste le Monday 18 December 2006 03:24:22
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: panthere noire

Petite précision bon l'erreur c'est le code suivant qui coince

#pour tester
p="/sdf1/sdf2/sdf3 /dsf4"
PathFile=$(($PathFile + $p))
echo $PathFile

ceci a cause des /
sinon le reste ne derange pas plus.

Poste le Monday 18 December 2006 04:30:43
Répondre     Citer    
Re: un script qui renseigne sur les droits
Envoyé par: Sve@r

Citation
panthere noire
Petite précision bon l'erreur c'est le code
suivant qui coince

#pour tester
p="/sdf1/sdf2/sdf3 /dsf4"
PathFile=$(($PathFile + $p))
echo $PathFile

ceci a cause des /
PathFile=$PathFile$p


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Tuesday 19 December 2006 20:25:52
Répondre     Citer    
Aller à la page:  1 2 Page suivante
Page: 1 sur 2

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
un script qui renseigne sur les droits
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.
Nouveau sujet sur ce forum

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons