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

Shell et commandes GNU Discussion :

script avec pidof pour tests services


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut script avec pidof pour tests services
    Salutation !

    Je rencontre une erreur lors de l'execution de ce petit script :

    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
    #!/bin/bash
     
    # turn on debug mode
    set -x
     
    sshd='pidof sshd'
    smtpd='pidof snmpd'
     
    if [ -z $sshd ]
    then
     echo "sshd OK"
    else
     echo "sshd down"
    fi
     
    if [ -z $snmpd ]
    then
     echo "snmpd OK"
    else
     echo "snmpd down"
    fi
    c'est juste pour tester si les services sont lancés

    comment feriez vous ?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Cela me semble plus court et plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    service='xterm bash smtpd ssh'
    for s in $service
    do
      if [  "S$(pidof $s)"  != "S" ]
      then
      echo $s OK
      else
      echo $s ne tourne pas 
      fi
    done

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    en effet, bien mieux merci

    c'est quoi ce "S" et "S$" ?

    comment on peut tester dans un if si la valeur d'une variable est null ou si elle a une valeur ?

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Pourquoi $S et S ? C'est juste une habitude que j'ai

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Ton erreur dans le script initial réside à ce niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sshd='pidof sshd'
    smtpd='pidof snmpd'
    Tu utilises des single quotes '' au lieu des backquotes `` ou encore $().

    Les backquotes ou $() stockent le résultat d'execution d'une commande (pidof <deamon> dans ton cas) tandis que les single quotes stockent la chaine de caractères 'pidof <daemon>' dans ta variable.

  6. #6
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Si tu as le petit script /sbin/service dans ta distribution, le test des deux services devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    service sshd status
    service snmpd status
    et j'obtiens chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    openssh-daemon (pid  1784) is running...
    snmpd is stopped

  7. #7
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Il est plus facile d'utiliser pidof que service à mon avis

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    oui je préfère pidof car si le service qui tourne n'as pas de script d'init il passera a trave

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    j'ai trouvé plus simple mais y a un petit bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    services='httpd xinetd snmpd sshd auditd master exim sendmail master vsftpd'
     
    for i in $services
    do
    if [ -z `pidof $i` ]
    then
     echo $i OFF
    else
     echo $i ON
    fi
    done
    a cause de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ++ pidof sshd
    + '[' -z 23950 23948 23411 23409 1540 ']'
    ./test1.sh: line 10: [: too many arguments

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

Discussions similaires

  1. script avec psexec netsh test ping
    Par rotordao dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 14/03/2013, 17h40
  2. Réponses: 1
    Dernier message: 30/05/2012, 20h47
  3. [WD16] Recherche Mini Appli Windev avec ODBC pour test
    Par pdemeure dans le forum WinDev
    Réponses: 6
    Dernier message: 17/11/2011, 11h28
  4. Réponses: 1
    Dernier message: 11/10/2007, 13h24
  5. [WD11] Copie d'analyse avec données pour test
    Par routmout dans le forum WinDev
    Réponses: 1
    Dernier message: 31/07/2007, 10h27

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