Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/10/2005, à 01:26

webdnc

Script de lancement de serveurs

Bonsoir,
J'ai installé un serveur apache et un serveur ftp (proftpd). Comme je veux maitriser leur lancement (je ne veux pas qu'ils se lancent avec le système), je me suis lancé dans la création d'un petit script que j'appelle depuis une lanceur dans ma starterbar de gdesklets.

Seulement voilà, mes connaissances sont minables, j'ai tusté un ptit peu sur certains scripts (c'est comme ça qu'on apprend après tout...), mais les fonctionnalités sont pour le moment très limitées et peu ergonomiques...
Alors voilà le code, comprenne qui pourra et m'aide qui voudra, l'intérêt étant bien entendu de partager ici astuces et codes et d'en faire profiter tout le monde...

#!/bin/bash

function serveur {
	# Display the action selector
	RET=`zenity --list --checklist  \
		--title "Demarrage serveur" \
		--column="" --column "Serveur" --column "Description" \
		FALSE	$"Apache"		$"demarrer le serveur Apache" \
		FALSE	$"Proftpd"		$"demarrer Proftpd" `

	if echo "$RET" | grep $"Apache"; then
		if gksudo 'apache2 -k start';then
			zenity --info --title "Gestion du serveur" --text "Serveur Apache démarré";
		else
			zenity --info --title "Gestion du serveur" --text "Erreur lors du démarrage d'Apache";
		fi
	else
		if gksudo 'apache2 -k stop';then
			zenity --info --title "Gestion du serveur" --text "Serveur Apache arrêté";
		else
			zenity --info --title "Gestion du serveur" --text "Erreur lors de l'arrêt d'Apache";
		fi
	fi

	if echo "$RET" | grep $"Proftpd"; then
		if gksudo '/etc/init.d/proftpd start';then
			zenity --info --title "Gestion du serveur" --text "Proftpd démarré";
		else
			zenity --info --title "Gestion du serveur" --text "Erreur lors du démarrage de Proftpd";
		fi
	else
		if gksudo '/etc/init.d/proftpd stop';then
			zenity --info --title "Gestion du serveur" --text "Proftpd arrêté";
		else
			zenity --info --title "Gestion du serveur" --text "Erreur lors de l'arrêt de Proftpd";
		fi
	fi

}

serveur

Les premiers objectifs évidents sont :
- gérer l'état des applications (les serveurs sont-ils déjà lancés ?);
- gérer les erreurs ;
- rendre le tout plus ergonomique (toutes les idées sont les bienvenues...);

A++
Brice

Hors ligne

#2 Le 05/10/2005, à 00:02

sksbir

Re : Script de lancement de serveurs

salut
Je ne veux surtout pas te décourager, mais à vrai dire, je ne comprend pas ta démarche...

D'abord pour une raison technique:
Les scripts de lancement qui se trouvent dans /etc/init.d héritent déjà de toute une structure et d'une discipline de commande : on lance le service associé au nom du script avec "start", on l'arrête avec "stop", et on vérifie son état avec "status", si le concepteur a codé cette option..

Ensuite pour une raison fonctionnelle : un serveur apache a pour objectif d'etre dispo le plus souvent possible habituellement., idem pour un serveur FTP.
Donc, pour quelle raison veux tu ce controle ? Je veux dire : quel est l'évenement déclencheur du lancement de tes serveurs http et ftp ?
Parce que j'imagine que c'est pas " ha tient, le soleil sort des nuages, je vais lancer mes serveurs"....:P

Hors ligne

#3 Le 05/10/2005, à 00:49

webdnc

Re : Script de lancement de serveurs

Salut,
Ben en fait dans mon cas, ce n'est pas une utilisation "serveur" banale que je veux. En effet, je ne cherche pas à avoir un serveur web et un serveur ftp en permanence mais de pouvoir les démarrer à volonté si je veux tester/montrer un site, ou partager des fichiers avec des tiers...
Donc je n'ai pas besoin de les démarrer avec le système. Au contraire, si je peux eviter d'exposer mon pc et économiser de la ram...
Pour le coup du lancement des services avec start, stop, et status, l'interface que je veux utiliser permet justement d'automatiser tout ca...
++
Brice

Hors ligne

#4 Le 05/10/2005, à 01:27

sksbir

Re : Script de lancement de serveurs

Ha je commence à comprendre ce que tu cherches à faire. Je ne connais pas du tout zenity ni gksudo, mais c'est facile de deviner comment ça marche.

Donc, en fait, ce que tu cherches à faire, c'est d'encapsuler les scripts d'arrêt et de démarrage de tes serveurs dans une interface graphique.

Par contre, je ne vois pas l'intéret de reposer la question de savoir ce qu'il faut faire  (le choix apache/proftpd) pourquoi ne pas utiliser directement les menus de gnome ?

Je pense que ça serait intéressant de faire en sorte que le script soit relativement universel : A toi, il te servira à lancer/arreter apache et ftpd, mais il pourrait servir à d'autres pour lancer/arreter autre chose.

Pour qu'il soit universel, il faudrait qu'on puisse le mettre dans les menus de gnome avec des arguments en ligne de commande:
Pour ton cas particulier, il te faudrait deux entrées dans les menus gnome:
- l'entrée "démarrer mes serveurs" du menu gnome exécuterait le script avec les options "start apache proftpd"
- l'entrée "arreter mes serveurs" executerait le même script avec les arguments "stop apache proftpd".

Le script pourrait éventuellement demander confirmation de l'action,
Evidemment, les mots clés "apache" et "proftpd" doivent correspondre aux scripts présents dans /etc/init.d (le script pourrait d'ailleurs le vérifier), puis passerait à l'exécution des actions.

Comme ça, tu n'aurais qu'à dérouler le menu gnome, choisir l'action à effectuer , valider ,et zou!

sinon, concernant l'écriture de ton script, je ne vois pas quel est l'intéret de décrire une fonction , puisque le corps principal de ton script consiste en une seule commande : appeler la fonction en question.

en adaptant ton script, voila les grosses lignes de ma proposition:

case $1 in
start) $TEXTACTION="Démarrage";;
stop) $TEXTACTION="Arrêt";;
*) zenity --warning erreur interne
exit 0 ;;
esac
SCANARG=2
# boucle de scan des arguments a partir de $2 : verifier présence /etc/init.d/$x
###### a ecrire...

zenity --question  --title "Confirmez SVP" --texte "$TEXTACTION $2 $3 $4 $5 $6 : êtes vous sûr ?

# boucle d'execution des actions avec l'action $1
###### a ecrire...

Hors ligne