Script pour démarrer Apache/MySQL - Avis ?
oliviertomgo
Messages postés
305
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je débute dans la création de scripts linux alors je ne sais pas si celui que je viens de faire est correct. Avant de le lancer pour le tester, j'aurai aimé l'avis d'utilisateurs avertis.
Mon script :
bjr="Bonjour $USER ..."
aplc="Démarrage du serveur Apache ..."
mlc="Démarrage du serveur MySQL ..."
exap="/etc/init.d/apache2 start"
exm="/etc/init.d/mysql start"
set bjr
set aplc
set mlc
set exap
set exm
echo $bjr
echo $aplc
echo $exap
if [!$exap]
then
echo "Erreur lors du démarrage d'Apache ..."
exit 1
else
echo "Apache démarré avec succès ..."
echo $mlc
echo $exm
if [!$exm]
then
echo "Erreur lors du démarrage de MySQL"
exit 1
else
echo "Apache et MySQL OK ... FIN du script"
Merci à vous !
EDIT: Il se peut qu'il y ait de belles bourdes dans ce script ayant l'habitude de développer en PHP, j'avoue m'être déjà planté avec les if ! en mettant des accolades au lieu de then et des parenthèses au lieu de crochets.
Le ! signifiant que le résultat retourné est différent de celui qui est attendu, je m'attends là aussi peut-être à une belle confusion avec le php ou tout au moins m'être trompé dans la façon de tourner le code. A vous de me dire !
Merci encore par avance pour vos avis !
Je débute dans la création de scripts linux alors je ne sais pas si celui que je viens de faire est correct. Avant de le lancer pour le tester, j'aurai aimé l'avis d'utilisateurs avertis.
Mon script :
bjr="Bonjour $USER ..."
aplc="Démarrage du serveur Apache ..."
mlc="Démarrage du serveur MySQL ..."
exap="/etc/init.d/apache2 start"
exm="/etc/init.d/mysql start"
set bjr
set aplc
set mlc
set exap
set exm
echo $bjr
echo $aplc
echo $exap
if [!$exap]
then
echo "Erreur lors du démarrage d'Apache ..."
exit 1
else
echo "Apache démarré avec succès ..."
echo $mlc
echo $exm
if [!$exm]
then
echo "Erreur lors du démarrage de MySQL"
exit 1
else
echo "Apache et MySQL OK ... FIN du script"
Merci à vous !
EDIT: Il se peut qu'il y ait de belles bourdes dans ce script ayant l'habitude de développer en PHP, j'avoue m'être déjà planté avec les if ! en mettant des accolades au lieu de then et des parenthèses au lieu de crochets.
Le ! signifiant que le résultat retourné est différent de celui qui est attendu, je m'attends là aussi peut-être à une belle confusion avec le php ou tout au moins m'être trompé dans la façon de tourner le code. A vous de me dire !
Merci encore par avance pour vos avis !
A voir également:
- Script pour démarrer Apache/MySQL - Avis ?
- Script vidéo youtube - Guide
- Pc long a demarrer - Guide
- Apache open office gratuit - Télécharger - Suite bureautique
- Windows ne veut pas démarrer - Guide
- Demarrer pc a distance - Guide
6 réponses
Bonsoir,
Premièremnt:
Ls scripts de démarrage ne sont pa lancés. Tu peux t'inspirer de ceci:
Tu places ta comande dans ne variable et tu l'exécutes; tu récupères le code d'erreur avec la variable $?.
Deuxièmement:
Les tests , correspondent à des commandes internes ou externes
Tu dois donc IMPERATIVEMENTI placer un espace entre les crochets et les commandes:
Troisièmement:
Respecte la syntaxe des instructions conditionnelles:
As-tu lu le tutoriel: bash https://abs.traduc.org/abs-5.0-fr/ ?
Bon scripting.
Johan
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
Premièremnt:
Ls scripts de démarrage ne sont pa lancés. Tu peux t'inspirer de ceci:
[root@osiris ]~#exap="/etc/init.d/apache2 inxistant" ; $exap ; echo $? Usage: /etc/init.d/apache2 {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}. 1 [root@osiris ]~# exap="/etc/init.d/apache2 start" [root@osiris ]~# exap="/etc/init.d/apache2 inxistant" [root@osiris ]~# exap="/etc/init.d/apache2 stop" [root@osiris ]~#$exap; echo $? Stopping web server: apache2 ... waiting . 0
Tu places ta comande dans ne variable et tu l'exécutes; tu récupères le code d'erreur avec la variable $?.
Deuxièmement:
Les tests , correspondent à des commandes internes ou externes
[root@osiris ]~# which [ /usr/bin/[ [root@osiris ]~# help [ |head -3 [: [ arg... ] Evaluate conditional expression.
Tu dois donc IMPERATIVEMENTI placer un espace entre les crochets et les commandes:
[root@osiris ]~# [-e .bashrc ] ; echo $? -su: [-e : commande introuvable 127 [root@osiris ]~# [ -e .bashrc ] ; echo $? 0
Troisièmement:
Respecte la syntaxe des instructions conditionnelles:
johand@osiris:~/tmp$ cat isroot if [ $UID -eq 0 ] ; then echo "You are root" else echo "Sorry" fi johand@osiris:~/tmp$ source isroot SorryVoilà en gros les principales remarques
As-tu lu le tutoriel: bash https://abs.traduc.org/abs-5.0-fr/ ?
Bon scripting.
Johan
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
Bonsoir Johan, merci pour tes explications ! Déjà pour les crochets et les espaces à respecter, de même que pour le ; je pensais que la fin d'un echo était reconnu d'emblée sans avoir à ajouter de ;
Sinon, je ne cherche pas à lancer le script au démarrage. Pour ça, un service apache et mysql fait déjà l'affaire que j'ai désactivé pour ne lancer les serveurs qu'à la demande lorsque je développe. Pour cette raison pour simplifier le lancement des serveurs sans avoir à chaque fois passer par le terminal. Avec ce script, je n'aurai plus qu'à l'exécuter ce qui sera tout de suite plus pratique et plaisant à la fois de voir son propre script s'exécuter surtout que celui-ci est une première.
Merci pour ton lien que je ne connaissais pas. Je ne l'ai donc pas lu mais je vais me pencher dessus ! Sacré tuto ! De quoi bien m'occuper !
Sinon, je ne cherche pas à lancer le script au démarrage. Pour ça, un service apache et mysql fait déjà l'affaire que j'ai désactivé pour ne lancer les serveurs qu'à la demande lorsque je développe. Pour cette raison pour simplifier le lancement des serveurs sans avoir à chaque fois passer par le terminal. Avec ce script, je n'aurai plus qu'à l'exécuter ce qui sera tout de suite plus pratique et plaisant à la fois de voir son propre script s'exécuter surtout que celui-ci est une première.
Merci pour ton lien que je ne connaissais pas. Je ne l'ai donc pas lu mais je vais me pencher dessus ! Sacré tuto ! De quoi bien m'occuper !
euh les ; à la fin d'une instruction en fait non pas en fin d'un echo ... décidemment pas évident de se détacher du php. En php il n'y a pas de ; en ouvrant une instruction mais une ouverture d'accolade et éventuellement un ; après un echo ou variable $variable = 'toto'; par ex ... tandis que là ça n'a plus grand chose à voir !
D'ailleurs je serais bien curieux de connaître le language utilisé. Ce serait pas du C ?
D'ailleurs je serais bien curieux de connaître le language utilisé. Ce serait pas du C ?
salut,
la commande set ne fait pas ce que tu crois : elle (dés)active des options du shell.
les commandes dans des variables, c'est pas top : utilise des fonctions.
les tests d'exécution de commandes se font sans crochets :
dans ton code tu testes la variable, pas son action.
et pas besoin de négation si il y a une alternative.
if se termine par fi
les ; sont utilisés lorsque des commandes sont sur la même ligne.
bonne continuation
la commande set ne fait pas ce que tu crois : elle (dés)active des options du shell.
les commandes dans des variables, c'est pas top : utilise des fonctions.
les tests d'exécution de commandes se font sans crochets :
if /etc/init.d/apache2 stop then echo "Apache et MySQL OK ... FIN du script" else echo "Erreur lors du démarrage de MySQL" exit 1 fi
dans ton code tu testes la variable, pas son action.
et pas besoin de négation si il y a une alternative.
if se termine par fi
les ; sont utilisés lorsque des commandes sont sur la même ligne.
bonne continuation
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aie m.... je pensais effectivement que la commande set servait à déclarer les variables ! Gloups ...
Par contre une chose que je comprends pas. dans le code donné, tu vérifies qu'apache soit bien arrêté :
if /etc/init.d/apache2 stop et tu met l'echo ensuite comme quoi apache est ok ? ce serait pas plutôt start au lieu de stop ? ou une vérification contraire quelque chose du genre :
a = /etc/init.d/apache2 stop
if !$a
# je me sers directement de la variable puisqu'à priori associer a à quelque chose déclare a d'emblée.
then
echo "Apache Ok"
fi
Juste pour l'exemple car pas très logique comme procédé. Mieux vaut tester qu'il soit bien démarré mais alors comment vérifier l'action d'une variable si en fait je ne fais que tester la variable ?
Pour l'instant, j'essaye comme ça. Les fonctions je verrai plus tard. En tout cas merci pour le conseil
Par contre une chose que je comprends pas. dans le code donné, tu vérifies qu'apache soit bien arrêté :
if /etc/init.d/apache2 stop et tu met l'echo ensuite comme quoi apache est ok ? ce serait pas plutôt start au lieu de stop ? ou une vérification contraire quelque chose du genre :
a = /etc/init.d/apache2 stop
if !$a
# je me sers directement de la variable puisqu'à priori associer a à quelque chose déclare a d'emblée.
then
echo "Apache Ok"
fi
Juste pour l'exemple car pas très logique comme procédé. Mieux vaut tester qu'il soit bien démarré mais alors comment vérifier l'action d'une variable si en fait je ne fais que tester la variable ?
Pour l'instant, j'essaye comme ça. Les fonctions je verrai plus tard. En tout cas merci pour le conseil
vu que la syntaxe n'est pas correcte, et que l'indentation est absente, j'ai compris comme j'ai pu.
désolé si j'ai mal retranscrit tes intentions ;)
il est possible d'utiliser des tests simplifiés
tu verras tout ça en lisant l'ABS.
bonne continuation.
désolé si j'ai mal retranscrit tes intentions ;)
il est possible d'utiliser des tests simplifiés
/etc/init.d/apache start && echo "Succès"
/etc/init.d/apache stop || echo "Echec"et de combiner
/etc/init.d/apache start && echo "démarrage : Succès" || echo "démarrage : Echec"c'est très pratique pour des tests simples
tu verras tout ça en lisant l'ABS.
bonne continuation.