Code, [ls] en octal

Bonjour,

Script dans le but d’avoir les droits en octal.
Tout commentaire est bienvenu, surtout que les gens peuves l’utiliser.
J’avais posté pour demander comment le faire.
Mais la seule réponse était en Perl

Aux besoin les admin peuve déplacer le script :smt006

#!/bin/sh
# l'indentation peut être modifiée par le forum!
#**************************************************************************
# Auteur Panthere noire     Date de mise a jours 2008-08-01
# Site de l'auteur www.panthere-noire.com 
# Ce  programme  est un logiciel libre.
# Vous  pouvez en redistribuer des copies selon les termes
# de   la   GNU  [ General   Public   License ]
# <http://www.gnu.org/licenses/gpl.html>.
# Il n’y a AUCUNE GARANTIE dans la mesure autorisée par la loi.
# Dépandance du programme [ls], si une modification 
# est faite de celui-ci cela pourrait affecter le fonction. : ls 
#**************************************************************************

echo "ls Vertion 0.1"
# Groupe de variable non protégé, risque d'écrasement
# Pour éviter cela, il faudrait les exécuter dans un sous processus
# exemple : fonction (){(code, sous processus)}
URet="SUNull" 
GRet="SGNull" 
ARet="SGNull" 
ALLCalc="SCNull"
textutilisateur1=" Fonction utilisateur. \
Erreur caractère non reconnu ou combinaison non gérée."
textgroup1="Fonction goute. \
Erreur caractère non reconnu ou combinaison non gérée."
textautre1="Fonction autres. \
Erreur caractère non reconnu ou combinaison non gérée."

I=0
I=$(($I+1)) # on saute la premiere ligne

function utilisateur()
{
    URet="UNull"
    if [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        URet="00400"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "" ] ;then
        URet="00200"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        URet="00100"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        URet="00500"
    elif [ "$1" = "r" ] && [ "$2" = "w" ] && [ "$3" = "-" ] ;then
        URet="00600"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        URet="00300"
    elif [ "$1" = "r" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        URet="00700"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "S" ] ;then
        URet="04000"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "s" ] ;then
        URet="04100"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "s" ] ;then
        URet="04300"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "S" ] ;then
        URet="04400"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "s" ] ;then
        URet="04500"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        URet="00000"
    else
        echo "$Textutilisateur" $1 $2 $3
    fi
}
function grouputilisateur()
{
    Gret="GNull"
    if [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        GRet="00040"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "" ] ;then
        GRet="00020"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        GRet="00010"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        GRet="00050"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        GRet="00030"
    elif [ "$1" = "r" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        GRet="00070"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "S" ] ;then
        GRet="02000"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "s" ] ;then
        GRet="02010"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "s" ] ;then
        GRet="02030"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "S" ] ;then
        GRet="02040"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "s" ] ;then
        GRet="02050"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        GRet="00000"
    else
        echo "$textgroup1. $1 $2 $3"
    fi
}
function autreutilisateur()
{
    ARet="ANull"
    if [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        ARet="00004"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "" ] ;then
        ARet="00002"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        ARet="00001"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "x" ] ;then
        ARet="00005"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        ARet="00003"
    elif [ "$1" = "r" ] && [ "$2" = "w" ] && [ "$3" = "x" ] ;then
        ARet="00007"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "T" ] ;then
        ARet="01000"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "t" ] ;then
        ARet="01001"
    elif [ "$1" = "-" ] && [ "$2" = "w" ] && [ "$3" = "t" ] ;then
        ARet="01003"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "T" ] ;then
        ARet="01004"
    elif [ "$1" = "r" ] && [ "$2" = "-" ] && [ "$3" = "t" ] ;then
        ARet="01005"
    elif [ "$1" = "-" ] && [ "$2" = "-" ] && [ "$3" = "-" ] ;then
        ARet="00000"
    else
        echo "$textautre1 $1 $2 $3"
    fi
}
function listing_one_car()
{
    V1=`echo $* |cut -d":" -f1`
    V2=`echo $* |cut -d":" -f2`
    V3=`echo $* |cut -d":" -f3`
    V4=`echo $* |cut -d":" -f4`
    V5=`echo $* |cut -d":" -f5`
    V6=`echo $* |cut -d":" -f6`
    V7=`echo $* |cut -d":" -f7`
    V8=`echo $* |cut -d":" -f8`
    V9=`echo $* |cut -d":" -f9`
    V10=`echo $* |cut -d":" -f10`
    utilisateur "$V2" "$V3" "$V4"
    grouputilisateur "$V5" "$V6" "$V7"
    autreutilisateur  "$V8" "$V9" "$V10"
    ALLCalc=`echo "$URet + $GRet + $ARet" |bc`

}
function main ()
{
ls -Al |while read ligne ;do
I=$(($I+1))
    if [ "2" != "$I" ] ;then
        R1=`echo $ligne |cut -d" " -f1|cut -c1`
        U1=`echo $ligne |cut -d" " -f1|cut -c2`
        U2=`echo $ligne |cut -d" " -f1|cut -c3`
        U3=`echo $ligne |cut -d" " -f1|cut -c4`
        G1=`echo $ligne |cut -d" " -f1|cut -c5`
        G2=`echo $ligne |cut -d" " -f1|cut -c6`
        G3=`echo $ligne |cut -d" " -f1|cut -c7`
        A1=`echo $ligne |cut -d" " -f1|cut -c8`
        A2=`echo $ligne |cut -d" " -f1|cut -c9`
        A3=`echo $ligne |cut -d" " -f1|cut -c10`
        listing_one_car  "$R1:$U1:$U2:$U3:$G1:$G2:$G3:$A1:$A2:$A3"
       echo "$ALLCalc" "$ligne"
    fi
done
}
main
exit 0

placer le dans le répertoire /user/bin/le_nom_que_vous_voulez
et exécuter le via son nom comme d’habitude :slightly_smiling:

Note: c’est lent, c’ est normal c est pas du #C

Hum, il suffit de faire

Ainsi un script permettant de sauvegarder les droits est

#!/bin/bash
cd /
find . -printf "chmod %m %p\n" > /tmp/sauvegarde_droit

La restauration des droits se fait par

sh /tmp/sauvegarde_droit

Ah bon, j’ai écrit pour rien : viewtopic.php?f=3&t=13328

Donc j’ai lu la man page pour toi :
stat --printf=%a mon_fichier;

[quote=“thialme”][quote=“panthere”]
Script dans le but d’avoir les droits en octal.
Tout commentaire est bienvenu, surtout que les gens peuves l’utiliser.
J’avais posté pour demander comment le faire.
Mais la seule réponse était en Perl
[/quote]
Ah bon, j’ai écrit pour rien : viewtopic.php?f=3&t=13328

Donc j’ai lu la man page pour toi :
stat --printf=%a mon_fichier;[/quote]

sorry marche pas chez moi, du moin pas pour lister les fichiers :unamused:
Merci pour la réponse, je me suis un peux louper. certainement une fausse manipe avec iceweasell et son mots de passe qui déconne :smt011

[quote=“fran.b”]Hum, il suffit de faire

Ainsi un script permettant de sauvegarder les droits est

#!/bin/bash
cd /
find . -printf "chmod %m %p\n" > /tmp/sauvegarde_droit

La restauration des droits se fait par

sh /tmp/sauvegarde_droit[/quote]

Question comment on limite aux répertoire, donc sans lister les sous répertoires ?
Sinon sa marche bien :slightly_smiling:
Je vais l’ajouter aux topic sauvegarde :slightly_smiling:

stat --printf="%n %a\n" * aprés, tu peux affiner les infos que tu affiches (man stat)

Tu pousses le bouchon un peu loin non :smiling_imp: C’est pas une modification de la sorte qui va te faire mal au crâne.

[quote=“thialme”][quote=“panthere”]
sorry marche pas chez moi, du moin pas pour lister les fichiers :unamused:
[/quote]

Tu pousses le bouchon un peu loin non :smiling_imp: C’est pas une modification de la sorte qui va te faire mal au crâne.[/quote]

Un peux loin ? faudrai déjà qu’il soie parti… :laughing:
Bah je doit dire que j’ai pas vraiment cherche, mai la vrai question c’est pourquoi n’as-tu pas donner la bonne réponse d’office, sa mange pas de pain que je sache 8)

Ceci dit laisse Béton :astonished:

nikel :smt023 Merci

[quote=“panthere”]
Un peux loin ? faudrai déjà qu’il soie parti… :laughing:
Bah je doit dire que j’ai pas vraiment cherche, mai la vrai question c’est pourquoi n’as-tu pas donner la bonne réponse d’office, sa mange pas de pain que je sache 8)

Ceci dit laisse Béton :astonished:[/quote]
J’aime bien cette technique, ce serait presque de ma faute et en plus je n’aurais même pas le droit de répondre :open_mouth:

Je ne suis pas la pour te tenir la main et te donner toutes les réponses. Si celà m’avait intéressé un peu plus j’aurais été jusqu’au bout ; je t’ai déjà donné un bon élément de réponse pour remplacer des dizaines de lignes. Ce n’est pas moi qui pose les questions sur le forum.

Hum il faut pas le prendre de cette manière. :smt056 Cependant je te remercie pour ta réponse,

L’intention (le bouchon ? :smt003 le poisson ? :smt077 ) était là :smt006 . Oui j’aime plaisanter, j’ai le droit que je sache, évidement si tu prends tout de travers.
M’enfin c’est pas compliquer quoi keep cool