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

Python Discussion :

Lancer des commandes Linux


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Lancer des commandes Linux
    Bonjour,
    je souhaiterais que Python lance les commandes suivantes car j'en ai marre de les taper dans le Terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sudo chown -R userName pathOfTheDir
    chmod -R 0755 pathOfTheDir
    find pathOfTheDir -type d -exec chmod 755 {} \;
    find pathOfTheDir -type f -exec chmod 644 {} \;
    Le script Python demanderait la nom d'utilisateur, le mot de passe si besoin ainsi que le chemin du dossier à traiter, tout ceci se faisant en ligne de commande.

    Toute info. est la bienvenue.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    et bien soit tu écris un script en python pur à base de os.walk, os.chmod, os.chown et consort, soit tu utilises subprocess pour appeler les commandes système.

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour rambc,

    Effectivement os est ta solution. avec os.path.isfile/isdir et os.chmod cela devrais aller.
    Par contre fais attention à ceci.

    @+

    Edit : Si tu veux tester tu a aussi os.access(item, os.R_OK) et os.access(item, os.W_OK)

    @++
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci.

    Effectivement c'est tout bête. Le code suivant est fonctionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import os
     
    userName = "a_vous_de_remplir"
    pathOfTheDir = "a_vous_de_remplir"
     
    os.system("sudo chown -R " + userName + " " + pathOfTheDir)
    os.system("chmod -R 0755 " + pathOfTheDir)
    os.system("find " + pathOfTheDir + " -type d -exec chmod 755 {} \\;")
    os.system("find " + pathOfTheDir + " -type f -exec chmod 644 {} \\;")

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Citation Envoyé par rambc Voir le message
    Effectivement c'est tout bête. Le code suivant est fonctionnel
    Dans le cadre d'un je souhaiterais que Python lance les commandes suivantes car j'en ai marre de les taper dans le Terminal oui, mais attention toutefois aux droits si tu compte l'intégrer à du code que tu diffuse.

    De plus j'aurais fais avec os.path pour faire plus universel mais ce n'est pas ta demande.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    C'est juste pour un usage très perso. effectivement.

    Citation Envoyé par PauseKawa Voir le message
    ...attention toutefois aux droits si tu compte l'intégrer à du code que tu diffuse.

    De plus j'aurais fais avec os.path pour faire plus universel mais ce n'est pas ta demande.
    Peux-tu préciser un peu STP ou à défaut donner des liens ? Désolé, je suis curieux.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    re bonjour,

    et bien par exemple pour faire l'équivalent de ton chmod -R 755 TONPATH:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import os
    for root,dirs,files in os.walk('TONPATH'):
       for f in files:
          os.chmod(os.path.join(root,f),0755)
       for d in dirs:
          os.chmod(os.path.join(root,d),0755)
    par contre en python pur, pas moyen de faire un sudo il me semble, du coup c'est le script python qu'il faudra lancer en sudo.

  8. #8
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    OK c'est plus Pythonique.

    Merci pour cette précision.

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pour ce qui est du os.walk

    @+
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Citation Envoyé par rambc Voir le message
    Peux-tu préciser un peu STP ou à défaut donner des liens ? Désolé, je suis curieux.
    Pour la réponse 'Pythonique' de l'os.path tu l'as.

    Pour les droits > ...attention toutefois aux droits si tu compte l'intégrer à du code que tu diffuse. >
    Citation Envoyé par PauseKawa Voir le message
    Par contre fais attention à ceci
    @+

    Edit : Par contre cette histoire de droits m'intéresse et je vais regarder de plus prêt.
    Merci d'utiliser le forum pour les questions techniques.

  11. #11
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Je garde cela sous le coude au cas où...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peut-on utiliser des commandes linux avec PERL
    Par undercrash dans le forum Linux
    Réponses: 2
    Dernier message: 01/03/2007, 14h12
  2. [FreePascal] Interpréter des commandes Linux
    Par llaurentt dans le forum Free Pascal
    Réponses: 8
    Dernier message: 23/01/2006, 18h08
  3. Réponses: 4
    Dernier message: 19/12/2005, 21h10
  4. Lancer des commandes dos à partir d'un fichier texte
    Par tpdm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2005, 16h56
  5. Réponses: 1
    Dernier message: 30/04/2004, 11h36

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