IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Créer un batch pour modifier des droits de fichiers.


Sujet :

Linux

  1. #1
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut Créer un batch pour modifier des droits de fichiers.
    Bonjour,

    Je ne sais pas trop si je suis dans la bonne rubrique alors merci de votre indulgence

    Voilà mon problème :
    J'utilise putty pour me connecter à un serveur distant.
    Sur ce serveur, je récupére des fichiers avec un certain login et je m'amuse à faire la manip suivant à chaque fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >chmod 644 de_mon_fichier
    >chown nouveau_user:nouveau_user de_mon_fichier
    >su - nouveau_user
    >cd /mon_repertoire_destination
    >mv /mon_ancien _repertoire/* .
    >go
    Donc, rien de bien pationnant.
    L'informatique étant un monde merveilleux je suis persuadée qu'il m'est possible d'automatiser ce traitement via un batch, un script ou autre mais je n'ai aucune idée de comment faire, comment le nommer, comment l'implémenter...

    Donc dans l'idée, ou trouver un exemple ou de l'aide :

    Merci

  2. #2
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    ton script pour automatiser ?

    mmontig.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    chmod 644 de_mon_fichier
    chown nouveau_user:nouveau_user de_mon_fichier
    su - nouveau_user
    cd /mon_repertoire_destination
    mv /mon_ancien _repertoire/* .
    go
    Et ensuite, sur ton prompt, tu tapes :

    fin du travail.
    Ah si change "sh" par ton shell par défaut.
    commande "ps" pour le voir

  3. #3
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    D'accord, tout simplement ?

    Alors petites questions supplémentaires :
    quand je fais ps, j'obtiens ça:
    PID TTY TIME COMMAND
    451 pts/tj 0:00 ksh
    7576 pts/tj 0:00 ps
    1236 pts/tj 0:00 ksh
    430 pts/tj 0:00 telnetd
    Je dois en déduire quoi ? que je dois mettre .ksh et non pas .sh :

    Je voudrai pouvoir mettre en parametre de mmontig.sh le nom de mes fichiers (par 5 souvent) à modifier.
    Donc intégrer une boucle while je pense mais, heu comment faire ?
    (un petit exemple me suffirai )


    Pas besoin de rajouter ca : #!/bin/ksh en en-tete du .ksh ?
    Merci

  4. #4
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Tu est bien en ksh par défaut.

    Si tu met en paramètre, sache que $0 = ton programme, $1 le premier argument ...etc

    Evidemment un petit #!/bin/ksh pour aider (et executer le programme avec ./mmontig.ksh

    donc

    mmontig.ksh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #!/bin/ksh
     
    NEWUSER=nouveau_user
    NEWGROUP=nouveau_group
    OLDREP=/mon_ancien _repertoire
    NEWREP=/mon_repertoire_destination
    Fic1=$OLDREP/$1
    Fic2=$OLDREP/$2
    Fic3=$OLDREP/$3
    Fic4=$OLDREP/$4
    Fic5=$OLDREP/$5
     
    chmod 644 $Fic1 $Fic2 $Fic3 $Fic4 $Fic5;
    chown $NEWUSER:$NEWGROUP $Fic1 $Fic2 $Fic3 $Fic4 $Fic5;
    su - $NEWUSER;
    cd $NEWREP;
    mv $Fic1 $Fic2 $Fic3 $Fic4 $Fic5 $NEWREP;
    go;
    Avec des tests à rajouter pour vérifier s'il y a tous les arguments...
    http://marcg.developpez.com/ksh pour plus t'aider

  5. #5
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Citation Envoyé par Katyucha
    Avec des tests à rajouter pour vérifier s'il y a tous les arguments...
    http://marcg.developpez.com/ksh pour plus t'aider
    Merci, j'ai plus qu'à tester

    Marie

  6. #6
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Citation Envoyé par Katyucha
    Avec des tests à rajouter pour vérifier s'il y a tous les arguments...
    Heu tite question car je suis un peu paumée, je fais comment si je veux faire une boucle du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (j'ai des paramétres d'entrée)
    je fais mes actions
    :

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    pas de while,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i
    do
      # $i est successivement l'argulment 1 puis 2 .....
       echo $i
    done
    ce qui ce lit pour tout les arguments de la ligne de commande affiche celui-ci .....

  8. #8
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Citation Envoyé par MarcG
    ce qui ce lit pour tout les arguments de la ligne de commande affiche celui-ci .....
    Ok, et ca s'incrémente tout seul de 1 en 1 la boucle for ?

    pas besoin de tester si l'argument existe ?

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    non le for en shell utilise une liste de valeur, ici, dans l'exemple sur les arguments la liste de valeur est la liste des arguments donc pas d'increment ..... D autre methode existent, sous Unix il est rare de n'avoir qu'unepossibilité, mais celle-ci est la plus rapide aussi bien en execution que en ecriture.

  10. #10
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Bon alors premier essai et résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh: script.ksh: cannot execute
    MOn script :
    #!/bin/ksh
    NEWUSER=clarify
    NEWGROUP=clarify
    OLDREP=/users/apeignie
    NEWREP=/interfaces/CLFY/in/35

    for i
    do
    echo $i
    Fic=$OLDREP/$i
    chmod 644 $Fic
    done

    for j
    do
    echo $j
    Fic=$OLDREP/$j
    chown $NEWUSER:$NEWGROUP $Fic
    done

    su - $NEWUSER;
    cd $NEWREP;
    go;
    La je suis un peu paumée

  11. #11
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Bon, en mettant en 777 mon script ca marche
    problème de droits

  12. #12
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Fait gaffe de pas modifier les droits de script.ksh dans ton script avec le chmod 644

  13. #13
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut


    Alors j'ai (je pense) réussi à de dépatouiller avec le script mais il ne va pas jusqu'au bout. Il s'arrete à su - $NEWUSER. Il ne fait pas le cd ni le mv ensuite.
    Une idée de pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #!/bin/ksh
     
    NEWUSER=clarify
    NEWGROUP=clarify
    OLDREP=/users/apeignie
    NEWREP=/interfaces/CLFY/in/35/
     
    for i
    do
      Fic=$OLDREP/$i
      chmod 644 $Fic
    done 
     
    for j
    do
      Fic=$OLDREP/$j
      chown $NEWUSER:$NEWGROUP $Fic
    done 
     
    su - $NEWUSER
    cd $NEWREP
     
    for k
    do
      mv Fic $NEWREP
    done 
     
    go;

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    la commande su exige la saisie d'un mot de passe ..

  15. #15
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Citation Envoyé par MarcG
    la commande su exige la saisie d'un mot de passe ..
    Ha bon, car quand je le fais sous putty, je n'en ai pas besoin!

    je fais su - clarify et ca me dirige bien! d'ailleur, aprés le passage du script, je me retrouve bien dans le répertoire /users/clarify donc le su passe bien, seul le cd bug ...

  16. #16
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Tu lances ton script en root
    C'est mal.

    je crois que cd est directement intégré au shell.

    J'aime pas les cd dans les scripts, c'est très souvent contournable.

    Tu fais un su, uniquement pour ne pas avoir de chown à faire ?
    ça m'a l'air tout autant contournable.

  17. #17
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    J'avais pas capté le su - ...

    Normal pour ton cd, qui ne passe pas.
    Il faut faire Mais le "su -" pas glop de lancer un script en root ...

  18. #18
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Ca ne marchera pas ...

    su lance un nouveau shell donc toutes les commandes situées après le su ne seront pas exécutées, il faudrait sortir du second shell ... et du coup le su n'aura pas d'effet.

  19. #19
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    hum hum, je comprends pas tout
    Mais quand je le fais en tapant avec mes petits doigts les commandes, ca fonction

    Pourquoi ca marche pas dans le script alors ? car ca ne me lance pas une nouvelle fenetre ni rien, je fais mon su - clarify puis le mv et ca marche

    Enfin si c'est pas possible, tant pis

    Merci quand même pour le reste, ca me fait mon chmod et chown tout seul au moins

    Marie

  20. #20
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    se serait possible (mais mal ....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    su - user -c "cd machin;la_commande que tu veut;autre commande"
    effectivement le su ouvre un nouveau shell

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/12/2012, 17h44
  2. Réponses: 1
    Dernier message: 09/02/2007, 22h51
  3. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  4. Editeur pour modifier des ressource
    Par soumia dans le forum Delphi
    Réponses: 14
    Dernier message: 08/08/2006, 16h49
  5. Batch pour copier des fichier
    Par borgfabr dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/03/2004, 07h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo