Page 1 of 1

{tuto} Scripts de serveur linux

Posted: Mon May 21, 2007 9:41 pm
by Gamall
Copie de l'essentiel d'un ancien topic sur conseiljedi.com
Corran Horn wrote:Voilà, comme je t'en avais parlé précédemment, j'ai commandé un serveur dédié sous Linux (Debian 4.0).

Je me demandais donc si tu avais des scripts, reboot, changements de mods, création de serveurs, ou d'autres choses de ce genre que tu accepterais de me donner (ou m'expliquer comment tout cela fonctionne :love ).

Merci d'avance :fleur


Corran Horn.
Avec un avatar pareil, je peux difficilement refuser :fleur



En vrac, ce que j'ai bricolé pour mes serveurs : (j'insiste sur "bricolé", j'avais besoin de ça, et j'ai improvisé en apprenant au fur et à mesure, donc ma solution (qui marche très bien) n'est pas très esthétique et il y a sans doute plus élégant...)

l'interface :

Code: Select all

#!/bin/bash

while :
do
    	clear
	myname=`whoami`
	echo "Utilisateur en ligne : $myname"
    	echo "*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*  Gamall"
    	echo "*     §    Gestion du Serveur    §      * v. Alpha"
    	echo "*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* 22-01-07"
	echo ""
    	echo " [1] Démarrer le serveur en alternance Japlus/Base"
    	echo " [B] Démarrer le serveur en Base"
    	echo " [J] Démarrer le serveur en Japlus"
	echo ""
	echo " [C] Démarrer le serveur à la carte"
	echo ""
	echo " [M] Opérations de maintenance"
	echo ""
	echo " [T] Tuer le serveur (s'il bugge)"
	echo " [A] Arrêter totalement le serveur"
	echo ""
    	echo " [Q] Quitter ce script"
	echo ""
    	echo "*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*"
	echo ""
    	echo -n "Entrez votre choix : "
    	read usin
	choice=`echo "$usin" | tr "a-z" "A-Z"`
    	case $choice in
      	Q) echo "Vous pouvez terminer la connexion SSH maintenant." ; 
		killall sshd ;
		read ; exit ;;

		1) XbootJAP--BASE.sh ; echo "Pressez une touche..." ; read ;;

		B) XbootBASE.sh ; echo "Pressez une touche..." ; read ;;

		J) XbootJAP.sh ; echo "Pressez une touche..." ; read ;;

		C) XbootCARTE.sh ; echo "Pressez une touche..." ; read ;;

		T) killall -v linuxjampded ; 
			lastrestart=`/bin/date`;
			echo "§ Serveur tué ponctuellement le $lastrestart" >> ./restart_log.txt ; 
			echo "Pressez une touche..." ; read  ;;

		A) Xstop.sh ; echo "Le serveur est totalement arrêté." ; echo "Pressez une touche..." ; read ;;

		M) echo "Opérations de maintenance disponibles: " ; Xmain.sh ; echo "Pressez une touche..." ; read ;;

           	*) echo "Choix incorrect. Vous devez sélectionner une action valide.";
         	   echo "Pressez une touche..." ; read ;;
 	esac
done
Toutes les commandes sont transparentes à part

Code: Select all

choice=`echo "$usin" | tr "a-z" "A-Z"`
Il s'agit juste de la conversion MAJ/min

Pour éviter les problèmes de nohup, j'utilise deux couches de scripts pour démarrer les servs :

XbootJAP--BASE.sh (il y en a plein d'autres du même style pour toutes les variantes)

Code: Select all

#!/bin/bash

#  ********* Serveurs Standard du Conseil Jedi *****************
#  *************************************************************
echo "§ Tue les serveurs existants..." 

Xstop.sh

echo "§ Démarre le serveur..." 

cd ;

cd bin/ ;

myport=`more port.txt` ;

cd ;

cd jkaserver/

echo "§ Port détecté pour le serveur : $myport";

       
nohup XstartJAP--BASE.sh $myport &

XstartJAP--BASE.sh

Code: Select all

#!/bin/bash

#  ********* Serveurs Standard du Conseil Jedi *****************
#  *************************************************************

cd

cd jkaserver/

/bin/ps ux > ./.temp 
alive=`grep -l '+set net_port $1' ./.temp | wc -l`;
     
if [ $alive -eq 0 ]
then
     
     	lastrestart=`/bin/date`;
	echo "Serveur JAPLUS redemarre le $lastrestart" >> ./restart_log.txt ;        
       

	nohup ../jkaserver/linuxjampded +set dedicated 2 +set net_port $1 +set fs_game japlus +set com_hunkmegs 64 +exec serv.cfg >> log.txt 2>&1 
   	      
          

        sleep 10;
        
        nohup XstartBASE--JAP.sh $1 &
	
fi
Xstop.sh

Code: Select all

#!/bin/bash

#  ********* Serveurs Standard du Conseil Jedi *****************
#  *************************************************************

cd ;

cd jkaserver/ ;

echo "§ Termine le serveur" ;

lastrestart=`/bin/date`;
echo "§ Serveurs tués le $lastrestart" >> ./restart_log.txt ; 
       
killall -v XstartJAP--BASE.sh ; 
killall -v XstartBASE--JAP.sh ; 
killall -v XstartJAPonly.sh ;
killall -v XstartBASEonly.sh ;
killall -v XstartCARTE.sh ;
killall -v linuxjampded ;
et je stocke le port du serv dans port.txt (il est transmis comme arg d'un script à l'autre)

Le résultat est cette interface : -> http://conseiljedi.com/f/viewtopic.php?t=298


Voilivoilou :fleur


@+

~ Ida

___

J'oubliais :

utilise

Code: Select all

.bash_profile
pour que tes utilisateurs débarquent directement dans ton script ;)

edit :--------------------------------------------

Xcarte c'est ça

Code: Select all

#!/bin/bash

#  ********* Serveurs Standard du Conseil Jedi *****************
#  *************************************************************

cd

cd jkaserver/

/bin/ps ux > ./.temp 
alive=`grep -l '+set net_port $1' ./.temp | wc -l`;
     
if [ $alive -eq 0 ]
then
     
     	lastrestart=`/bin/date`;
	echo "Serveur $2 redemarre le $lastrestart" >> ./restart_log.txt ;        
       

	nohup ../jkaserver/linuxjampded +set dedicated 2 +set net_port $1 +set fs_game $2 +set com_hunkmegs 64 +exec $3 >> log.txt 2>&1 
   	      
          

        sleep 10;
        
        nohup XstartCARTE.sh $1 $2 $3 &
	
fi
pour démarrer un serv avec un fs_game perso