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 :

Tester si un service est démarré


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut Tester si un service est démarré
    Bonjour,

    Dans ma quête d'apprendre à écrire des scripts bash, je viens vous en présenter un nouveau et en profiter pour poser une question. Aujourd'hui, j'ai fait un script pour configurer mon NAS avec autofs.

    A la fin du script, je relance les services autofs et rpcbind, je pense idéalement avant faudrait que je fasse des tests pour savoir si ils sont déjà démarrés. Mais comment faire?

    Voici le 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #!/bin/bash
    ADRESSESERVEUR=nas.ip
    CREDENTIALS=/root/.auto_nas
    DOSSIERNAS=/media/nas
    FICHIERMASTER=/etc/auto.master
    FICHIERNAS=/etc/auto.nas
     
    if [ "$EUID" -ne 0 ] ; then
    	echo "Il vous faut les droits administrateurs!"
    	exit
    fi
     
     
    apt-get -y install autofs nfs-common rpcbind
     
    echo "Nom d'utilisateur:"
    read USERNAME
     
    echo "Mot de passe:"
    read PASSWORD
     
    mkdir -p "$DOSSIERNAS"
     
    cat > "$FICHIERMASTER" << EOF
    +dir:/etc/auto.master.d
    $DOSSIERNAS $FICHIERNAS --ghost,--timeout=300
    EOF
     
    cat > "$CREDENTIALS" << EOF
    username=$USERNAME
    password=$PASSWORD
    EOF
     
    cat > "$FICHIERNAS" << EOF
    backup -fstype=nfs,rw,intr,credentials=$CREDENTIALS $ADRESSESERVEUR:/Backup
    document -fstype=nfs,rw,intr,credentials=$CREDENTIALS $ADRESSESERVEUR:/Documents
    videos -fstype=nfs,rw,intr,credentials=$CREDENTIALS $ADRESSESERVEUR:/Multimedia
    download -fstype=nfs,rw,intr,credentials=$CREDENTIALS $ADRESSESERVEUR:/Download
    EOF
     
    service autofs restart
    service rpcbind restart
    Sinon avez-vous des critiques générales ou amélioration à faire sur mon script?

    Merci et salutation

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    demande à service le status de chacun.

    NB: les noms de variables entièrement en majuscules sont réservés aux variables d'environnement.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Merci pour la réponse!

    Je pensais que les majuscule était pour toutes les variables. Donc c'est que les variables d'environnements alors je peux le faire simplement comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    adresseServeur=nas.ip
    credentials=/root/.auto_nas
    dossierNAS=/media/nas
    fichierMaster=/etc/auto.master
    fichierNAS=/etc/auto.nas
    Oui je sais utiliser la commande service mais c'est pour le traitement après. Je pensais cherché avec grep:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service apache2 status | grep "inactive (dead)"
    Mais avec le retour, je ne sais pas trop comment le traiter avec un if?

    Salutation merci

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    si tu n'as qu'une seule action à effectuer, un ET (&&) ou un OU (||) logique feras l'affaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service <tonService> status || service <tonService> restart
    parce que a priori tu sais que le service est installé !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Bonjour,

    Merci pour la réponse. Si je comprends bien l'exemple, il redémarre le service si son statut est désactivé? Si le statut est activé, il ne fait rien? Donc c'est pas mieux de démarrer au lieu redémarrer?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service <service> status || service <service> start
    Car moi à la fin de mon script, j'ai absolument besoin de le redémarrer pour prendre en compte ma configuration. Techniquement, ma première solution fonctionne mais ce qu'il me gêne de dans c'est que si le statut est désactivé, il le redémarre à la place de le démarrer. Je sais la nuance est faible mais je ne connais pas suffisamment pour savoir si cela crée un problème. Je voudrais savoir si c'est possible de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI service == activé ALORS
        redémarrer service
    AUTREMENT
        démarre service
    FIN
    Es-ce que je pinaille un peu trop?

    Merci

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 26
    Par défaut
    Bonjour,

    Désoler de revenir à la charge mais personnes a d'idée de comment je pourrais faire??

    Merci salutation

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

Discussions similaires

  1. tester si le serveur MS SQL Server est démarré
    Par Chatbour dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/08/2020, 21h21
  2. [XL-2010] Comment tester si un TCD est connecté à un cube Analysis Services SQL Server
    Par fmarguin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/08/2016, 11h34
  3. Réponses: 2
    Dernier message: 02/08/2010, 10h59
  4. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17
  5. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54

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