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 :

Automatisation de script d'installation et gestion de reboot via rc.local


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Par défaut Automatisation de script d'installation et gestion de reboot via rc.local
    Bonjour

    J'ai créé un programme qui génère un script principal .sh . Ce script principal est simplement la concaténation de petit scripts .sh. Le script principal n'est exécuté qu'une seule fois (il n'a pas vocation à devenir un service par exemple)
    Dans le script principal je peux me retrouver parfois avec des commandes qui redémarrent le système (sudo reboot)

    Je souhaite prendre automatiquement en compte ces reboot de la manière suivante :
    - Lecture du script principal
    - SI la ligne contient "sudo reboot"
    - ALORS exécuter la suite des commandes après le reboot du système

    Suite à quelques recherches, j'ai vu que je pouvais gérer facilement et simplement l'exécution de la suite du script avec /etc/rc.local.
    Or, d'après la doc, ce script (rc.local) est appelé à chaque état du système (je sais pas si j'emploie le bon terme :o )

    Ma question est : y a t'il un risque que ce script soit appelé trop tôt et que les commandes qui seront exécutées après reboot échouent ?
    Par exemple, je peux avoir dans mon script principal quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # Exécution du script principal
    ...
    ...
    sudo reboot
    ... # Du coup la suite à partir d'ici serait coupée/collée dans un nouveau .sh et son chemin serait placé dans /etc/rc.local avant l'exécution du script principal 
    sudo service apache2 restart
    ...
    Est-ce qu'il n'y a pas un risque pour que des process/services ne soient pas encore "démarrés" lors de l'exécution du rc.local ? (ce qui ferait échouer certaines commandes du coup)
    Comment est-ce que je peux/dois m'y prendre ?

    Merci pour votre aide =)

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

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

    il n'existe qu'une seule raison pour redémarrer un système GNU/Linux.

    quelles peuvent bien être les tiennent ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour,
    si je comprends, ta concaténation n'est pas faite à la nain, elle est en automatique ? et les reboot te dérange

    tu peux le faire en auto dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Evh 'reboot|alt$' /mes_petits_scripts/*.sh > ~/superscript.sh
    et pour plus d'info sur ton système de démarrage; il faudrait connaitre ton système et sa version (aujourd'hui/demain on est plus à systemd...)

    Le script principal n'est exécuté qu'une seule fois
    une fois à l'installation (vu ton titre) ou une fois à chaque boot ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Par défaut
    Merci pour vos réponses

    Il s'agit effectivement de scripts d'installation qui sont concaténés de manière automatique dans un seul fichier "script principal" (qui ne sera donc exécuté qu'une seule fois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Evh 'reboot|alt$' /mes_petits_scripts/*.sh > ~/superscript.sh
    Ça m'a l'air bien plus simple que de passer par le /etc/rc.local !
    Si je comprends bien, ça retire les reboot et alt des "sous-scripts"?

    Par contre, j'ai peur qu'un sous-script (dont je ne maitrise/connais pas forcement le contenu en avance) échoue car il dépendait d'un sous-script exécuté avant, et pour que ce script précédant soit "pleinement" installé il faille redémarrer le système à la fin de ce dernier.

    Histoire d'être un peu plus clair, j'ai une suite de script (A, B, C ...) concaténés dans un même fichier. Ils s'exécutent du coup dans l'odre suivant : A puis B puis C ...
    Si C dépend des installations effectuées par le script A ET Si le script A effectue un reboot en dernière commande, je craint que le C échoue car il n'y a pas eu redémarrage du système à la fin du A

    Par exemple un des sous-scripts qui peut être généré modifie la taille d'une partition du système et redémarre le système à la fin. C'est la raison pour laquelle je cherche à traiter de manière automatique les reboot tout en les conservant =)

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par kegilko Voir le message
    Histoire d'être un peu plus clair, j'ai une suite de script (A, B, C ...) concaténés dans un même fichier. Ils s'exécutent du coup dans l'odre suivant : A puis B puis C ...
    Si C dépend des installations effectuées par le script A ET Si le script A effectue un reboot en dernière commande, je craint que le C échoue car il n'y a pas eu redémarrage du système à la fin du A

    Par exemple un des sous-scripts qui peut être généré modifie la taille d'une partition du système et redémarre le système à la fin. C'est la raison pour laquelle je cherche à traiter de manière automatique les reboot tout en les conservant =)
    Le besoin est plus clair!

    Plutôt que concaténer les scripts à exécuter, je mettrais la liste dans un fichier, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cat script_list.txt
    todo A.ksh
    todo B.ksh
    todo C.ksh
    todo D.ksh
    todo E.ksh
    et le script d'installation serait quelque chose comme ceci (à corriger et améliorer évidemment!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while grep '^todo' script_list.txt; do
      script=$(grep '^todo' script_list.txt | awk '{print $2}')
      sed -i '/^todo/{s/todo/done/;q}' script_list.txt
      $script
    done
    Le script lit le fichier, cherche le premier 'todo', le remplace dans la liste par un 'done' (et quitte l'édition du fichier), exécute le sous-script,
    puis, si le script ne reboote pas, recommence avec le 'todo' suivant,
    Si le sous-script reboote, alors, après le reboot, le script reprend là où il s'était arrêté.

Discussions similaires

  1. script d'installation automatique
    Par zero7 dans le forum Windows
    Réponses: 2
    Dernier message: 23/05/2006, 14h11
  2. Modifier le script d'installation
    Par onet dans le forum Debian
    Réponses: 2
    Dernier message: 04/04/2006, 16h54
  3. [débutant] Comment tester scripts sans installer Oracle ?
    Par belokan dans le forum Installation
    Réponses: 17
    Dernier message: 25/10/2005, 10h35
  4. Automatisation de script
    Par Batou dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2005, 04h09
  5. Réponses: 2
    Dernier message: 01/06/2004, 16h12

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