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 :

Script stop start status en python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut Script stop start status en python
    Bonjour a tous,

    Je suis débutant en python et je souhaite faire un script en python qui me permet de faire un stop/start/status d'un service sous linux
    en shell je sais faire mais pas en python.

    en shell

    Code bash : 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
    30
    31
    32
    33
    34
    # prerequis
    ## Test de l'utilisateur
    user=`id -un`
    if [ "${user}" != "toto" ]; then
        echo "L'utilisateur doit etre toto et non `id -un`\n"; exit 1
    fi
    ## couleur dans le script
    rouge="\033[0;31m"
    jaune="\033[33;40m"
    vert="\033[32m"
    turquoise="\033[36;40m"
    blanc="\033[37;40m"
    ## usage
    usage () {
            echo -e "${jaune}usage :${blanc} monsoft start | stop | status"
           exit 0
    }
    ## Test du nombre de parametres
    if [ $# -ne 2 ]; then
      usage
    fi
    # declaration des variables
    _pid=`ps -ef | grep "mon service" | awk '{print $2}'`
    _log="/home/log/monfichier.log"
    _soft="/soft/bin/"
     
    fonction start{
    #je verifie si le PID existe 
    #si il existe alors j'informe que le soft est deja demarré
    #si pas de PID je demarre le soft
    # je verifie la presence du PID
    # je verifie dans la log en faisant un grep "start soft " est un grep sur la meme ligne sur la "date et l'heure"
    # Si tout OK j'informe que le start est demarré sinon le contraire
    }

    Pour le stop et le status c'est un peu le style de commandes
    Voila je souhaite faire ça en python quelqu'un pourrait m'aider ou me fournir des pistes ? car je connais pas bien python et je sais pas si c'est possible en python

    D'avance merci
    Seb

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Citation Envoyé par seb1945 Voir le message
    Pour le stop et le status c'est un peu le style de commandes
    Voila je souhaite faire ça en python quelqu'un pourrait m'aider ou me fournir des pistes ? car je connais pas bien python et je sais pas si c'est possible en python
    Si c'est possible avec bash, c'est possible avec Python. Pour démarrer un service, subprocess est incontournable et pour regarder les process qui tournent déjà, sous Linux vous n'en avez pas vraiment besoin mais psutil est intéressant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut Script stop start satus en python
    Bonjour,

    Merci pour votre réponse.
    Après quelque recherche, j'ai pu faire ça..finalement c'est pas trop compliqué le python. Mais bon lorsque l'on est habituer avec le shell se mettre au python demande de l’investissent

    Ce matin voici ce que j'ai pu faire afin d'avancer sur mon script en python
    _______________________________________________________________
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #! /usr/bin/env python
    from __future__ import print_function
    import sys,os,subprocess
    class maclass(object):
      __slots__ = ["val"]
      def __init__(self, value=''):
        self.val = value
     
    def Str(value):
      if isinstance(value, list):
        return " ".join(value)
      if isinstance(value, basestring):
        return value
      return str(value)
    class Expand(object):
      @staticmethod
      def hash():
        return  len(sys.argv)-1
    ## Test du User
    step=maclass("user")
    user=maclass(os.popen("id -un").read().rstrip("\n"))
    if (str(user.val) != "monuser" ):
        print("\n Le user doit etre monuser et non "+os.popen("id -un").read().rstrip("\n")+"\n")
        exit(1)
    ## Color
    RED=maclass("\033[0;31m")
    JAU=maclass("\033[33;40m")
    GREEN=maclass("\033[32m")
    TURQ=maclass("\033[36;40m")
    BLC=maclass("\033[37;40m")
    ## Help
    def usage () :
        global JAU
        global BLC
        print("\n\n\011"+str(JAU.val)+"usage :"+str(BLC.val)+" "+os.popen("basename "+__file__).read().rstrip("\n")+" -a -b")
        print("\n\011"+str(JAU.val)+"-a"+str(BLC.val)+"\011Permet de faire un ls")
        print("\011"+str(JAU.val)+"-b"+str(BLC.val)+"\011Permet de faire un ps\n")
        exit(999)
    if (Expand.hash() != 1 ):
        usage()
    if ( str(sys.argv[1]) == '-a'):
        subprocess.call(["ls"],shell=True)
    elif ( str(sys.argv[1]) == '-b'):
        subprocess.call(["ps","-ef"],shell=True)
    else:
        usage()
    ________________________________________________________________________________________
    Par contre j'ai pas encore eu le temps de voir comment faire pour rechercher un mot clé dans un fichier log et comment killer un process.

    Seb

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    salut,

    Où, diable, as-tu bien pu copier pareil fatras de lignes de code ?

    Supprime ces deux classes et cette fonction qui n'ont strictement aucune utilité. À part embrouiller les choses.

    Pour connaître un nom d'utilisateur, le module pwd est fait pour cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> import pwd
    >>> import os
    >>> p = pwd.getpwuid(os.getuid())
    >>> p.pw_name
    'vincent'
    Pour faire un ls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> ls = os.listdir()
    >>> for f in sorted(ls):
    ...     if not os.path.basename(f).startswith("."):
    ...             print(f)
    ... 
    2017.kmz
    50unattended-upgrades.ucf-dist
    Bureau
    CPython
    Capture
    Documents
    ....
    Pour ps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> ps = os.popen("ps -ef")
    >>> for i in ps:
    ...     if "python3" in i:
    ...             item = i
    ... 
    >>> print(item)
    vincent  15976 15966  0 14:04 pts/0    00:00:00 python3
    >>> # Le pid est le premier chiffre 15976
    Note: psutil est bien plus efficace que ça.

    pour lancer ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if __name__ == "__main__":
        try:
            arg = sys.argv[1]
        except IndexError:
            usage()
        else:
            if arg == "-a":
                do_ls()
            elif arg == "-b":
                do_ps()

Discussions similaires

  1. Stop-Start du service Jboss 1 fois par jour sans raison
    Par norten dans le forum Wildfly/JBoss
    Réponses: 6
    Dernier message: 07/06/2012, 09h12
  2. Associer à un script la bonne version de python
    Par jouclar dans le forum Général Python
    Réponses: 20
    Dernier message: 24/04/2012, 23h37
  3. Programmation d'un démon Unix avec stop/start commandes
    Par dlecteur dans le forum Bibliothèques, systèmes et outils
    Réponses: 8
    Dernier message: 18/07/2011, 21h41
  4. Stop Start automatique
    Par RobyLS dans le forum Flash
    Réponses: 1
    Dernier message: 28/09/2007, 07h28
  5. Soucis de stop / start : could not bind to port 80
    Par vivi_35 dans le forum Apache
    Réponses: 1
    Dernier message: 28/03/2007, 11h30

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