Help - Search - Members - Calendar
Full Version: Script Pour Démarrage Serveur Dédié Linux
Forum 17B > Counter Strike 1.6 > General discussion
godzilla
[B]Salut a tous, j ai crée sur mon serveur root ( suse 9.0 Linux) , des serveurs jeux dédié ( CS 1.6 - Source - DOD - Rally )qui fonctionne sans problèmes et s ´actualisent automatiquement après chaque reboot et restart automatiquement en cas de crash de ceux-ci .
Mon problème est de corriger mon script de demarrage des serveurs jeux pour qu il puissent automatiquement se mettre en fonctionement après un reboot complet du serveur root .
Le script suivant fonctionne uniquement sur root ( je veus le démarrer en user pub24 uniquement )et de plus il ne fonctionne que après un démarrage manuel et non après un reboot serveur complet.
Merci d´avance pour votre aide.



voici les renseignements de mon serveur :
exemple pour un jeux CS1.6
le jeux CS est dans le répertoire suivant : /home/pub24/cs16
le user qui devrais démarrer le serveur s ´appelle : pub24
j ai mis mon script (s appelle hlds) dans le répertoire : /etc/init.d/
et mis celui-ci en execution avec : chmod 755 /etc/init.d/hlds
apres ca mis les links avec : ln -s /etc/init.d/hlds /etc/init.d/rc3.d/S90hlds
:ln -s /etc/init.d/hlds /etc/init.d/rc3.d/K30hlds

script:

#!/bin/sh
#
# Start the Counter-Strike dedicated server as non-root.
#
# A modification of the CS Server startup script, to run the server
# as a non-root user.
#
# ORIGINAL AUTHORS :
#
# Julien Escario ( pandemik@asylog.net )
# &
# Cedric Rochat ( crochat@younics.org )
#
# ===========================================
#
# What you need:
#
# Linux smile.gif
# awk
# screen
# the hlds_l & cstrike-files OR
# a STEAM-installation
#
# YES, this script works fine with STEAM and CS 1.6
#
# How to use:
#
# Edit the DIR-var to fit your system (just contains the path to the dir that contains hlds_run)
# Edit the PARAMS-var to fit your needs
# Edit the CS_USER-var to the name of the user that will run the server
#
# How to see the server-console:
#
# Just type in: screen -r hlds (or whatever you set $NAME to)
# More info about screen can be found by typing "man screen" or using this nice link
# http://server.counter-strike.net/server.ph...wto&show=screen
#
# The easist way is to use this script simple as a start-script for your server
# If you want to use it as a script to start the server at boot-time:
#
# When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the
# scripts for starting the services
# Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
# (THIS IS FOR DEBIAN! If you use e.g. Redhat you must change these dirs!!!)
#
# ln -s /etc/init.d/hlds /etc/rc3.d/S90hlds
# ln -s /etc/init.d/hlds /etc/rc6.d/K50hlds
#
# Or use it manualy like:
# /etc/rc.d/init.d/hlds start
# /etc/rc.d/init.d/hlds stop
#
# If you don't want to start the server as root you have to change this:
# add the var CS_USER and uncomment it
# change the lines at the "start-block"
#
# You must be logged in as this user to re-attach the screen!
#
# DOC by jwm (jwm@counter-strike.de)

# The user that will run the server
CS_USER=pub24

# Leave this alone.
NAME=hlds

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/home/pub24/cs16

# Leave this alone.
DAEMON=hlds_run

# Internet-server:
PARAMS="-game cstrike +map de_aztec +maxplayers 16"

# Leave this alone.
DESC="Counter-Strike dedicated server"

case "$1" in
start)
if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]]
then
echo "HLDS is already running!"
else
echo "Starting $DESC: $NAME"
su $CS_USER -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS"
fi
;;

stop)
if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;

restart)
if [[ `su $CS_USER -c "screen -ls |grep $NAME"` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
su $CS_USER -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS"
echo " ... done."
;;

status)
ps aux | grep -v grep | grep hlds_r > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "HLDS is UP" || echo "HLDS is DOWN"
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac

exit 0
Patxi
simple question de non connaisseur : t'es bien sur que ton script se lance bien ? que tu rentres bien dans le start apres un reboot auto ?

t'as pas moyen de mettre a jour un fichier pour "tracer" le passage ?
godzilla
en fait le script démarre uniquement si je met la commande suivante :

/etc/init.d/hlds start

et ca uniquement si je change mon user en root


que veut tu dire avec les tracantes ? tu parle du plugins ´pour mettre la derniere balle tracante quand tu meurt sur CS
benneb
j'aurais bienn voulu te repondre, mais je trouve que tu te melanges entre login, serveur ( materiel ) et serveurs de jeux blink.gif

même en lisant 3 fois ton post, j'arrive pas a comprendre ce que tu veux exactement hum.gif

et ce que quand ton serveur demarre (materiel j'espere blink.gif ) , ca te logge automatiquement en pub24 ? ou en root ?
benneb
QUOTE (godzilla @ 02/06/2005 à 20:57:54)
j ai crée sur mon serveur root ( suse 9.0 Linux)


exemple ici, un serveur root, ca se creeait pas , tu crees un serveur avec un login root (si c'est bien materiel ),


QUOTE
reboot et restart automatiquement en cas de crash de ceux-ci .


serveur materiel ?
Klendhaar
je me permet de repondre pour lui, lol je sais ou est le serveur..

le login est en root oui tu as compris..

le reste oui c est materiel, car en cas de plantage ou restart soft, c ets deja reglé;

le blem c est que quand on fait un rebbot hardware apres faut tout relancer a la main.

et si vous connaissez un dieu du script on cherche aussi afaire des bouton de gestion ( ex restart) a partir du web
icon_ami.gif icon_kimouss.gif
Patxi
1)
QUOTE (godzilla @ 02/06/2005 à 23:00:16)
que veut tu dire avec les tracantes ? tu parle du plugins ´pour mettre la derniere balle tracante quand tu meurt sur CS
*

non non du tout, on oublie CS, on essaie de voir si ton script se lance correctement au reboot de ta machine (tu lancerais un ftp, ca serait pareil en gros).

donc ce ue je veux dire par tracer c'est au lieu de faire des :

CODE
echo "HLDS is already running!"


essayer de mettre des lignes dans un fichier texte, histoire de pouvoir le consulter et voir dans quelles lignes passe ton script.

2) es tu sur que le init.d peux executer des scripts sous un autre user que root (je connais pas assez linux pour savoir dsl)

3) as tu essayé de modifier ton cron plutot que de rajouter ton script dans le init.d ?
godzilla
Merci pour les réponses , effectivement comme a dit klendhaar il sagit bien du problème après un démarrage (matériel) qui m empeche de relancer le serveur jeux ( software) automatiquement , je dois dire aussi que je suis sur la connaissance du system linux depuis 1 mois et que je ne connais pas encore vraiment le system ou toutes les possibiliées de celui-ci.
Je cherche une solution simple a realisée si possible pour démarrer comme tu la dit au dessus un soft automatiquement apres un reboot de la machine, quel sont les droits obligatoires pour le User qui devrais avoir l autorisation du démarrage sous init.d nécessaire ? ou a tu une autre solution plus simple comme cron ? ( j ai deja entendu mais je connais pas encore les commandes et comment l employer ) , qui aurait un script déjà en fonctionement que je pourrais employer ? merci encore pour les réponses

bienvenu a tous sur nos serveur aussi http://www.coolserveur.com du coolclan
benneb
QUOTE
j ai mis mon script (s appelle hlds) dans le répertoire : /etc/init.d/


pourquoi ne pas le mettre ailleurs ?
godzilla
Voila , j ai trouvé un script qui fonctionne avec le user (pub24) et non pas sur root ( admin) et de plus il est facile a employer , la seule chose encore que j aurais besoin serait de me dire comment je dois faire pour démarrer le script automatiquement apres un reboot de la machine (materiel), le script ici est mis dans le repertoire du jeux et est demarrer par l odre ./serv_start avec la console manuellement .merci d avance

en fait il existe 2 scripts mis dans le repertoire du jeux:
le 1 donne l acces au 2
voici le 1:( s appelle serv_start)

#!/bin/sh
/home/pub24/cs16/serv_astart &


voici le 2: (s appelle serv_astart)

#!/bin/sh
dir="/home/pub24/cs16/"
MAP="de_dust"
PORT="27015"
IP="192.168.1.8"
PLAYERS="12"
logfile=$dir"/serv_astart.txt"
while : ; do
echo "Serveur lancé sans problèmes"
start=`date '+%d%H%M%S'`
echo "Serveur lancé : `date`" >> $logfile
export LD_LIBRARY_PATH=$dir:$LD_LIBRARY_PATH
cd $dir
./hlds_run -game cstrike +maxplayers $PLAYERS +map $MAP -port $PORT -ip $IP -pingboost 3

stop=`date '+%d%H%M%S'`
echo "Serveur Arreté: `date`" >> $logfile
t=`expr $stop - $start`
if test 0 -le $t -a $t -lt 5 ; then
failcount=`expr $failcount + 1`
else
failcount=0
fi
if test $failcount -gt 5 ; then
echo "Arrêt du serveurs, problème interne à HLDS,Veuillez regarder la configuration" >&2
exit 1
fi
sleep 10
done
Patxi
godzilla, ton script qui lance CS on va considérer qu'il marche et on en parle plus.

maintenant, tu veux lancer un script au démarrage de ta machine(cs, ftp, hello).

d'apres ce que j'ai lu, en plus de devoir rajouter ton script dans le init.d (endroit par defaut) tu dois rajouter un "lien" pour le rendre valide :

http://www.alionet.org/lofiversion/index.php/t595.html (un exemple pour suse)

Renseigne toi sur le fonctionnement de la commande rc-update (add - remove) pour activer/desactiver un service ...

voila ... aide pas bien complète desole ...

j'ai pas de serv sous la main, donc peux pas te dire mieux icon_neutral.gif
benneb
apres un reboot, si ca te loggue automatiquement en pub24, tu mets la commande dans ton .bash_profile.

jamais testé sur Suse, mais doit etre pareil
panda
faut que tu mettes un lien symbolique de ton script vers tt les run level de ta distrib
comme ca a chaque demarrage de ta machine le script se lancera automatiquement

renseigne toi la sessus et tu devrais trouver ton bonheur
Nosferatu
QUOTE (godzilla @ 02/06/2005 à 19:57:54)
Salut a tous, j ai crée sur mon serveur root ( suse 9.0 Linux) , des serveurs jeux dédié  ( CS 1.6 - Source - DOD - Rally )qui fonctionne sans problèmes et s ´actualisent automatiquement après chaque reboot et restart automatiquement en cas de crash de ceux-ci .
Mon problème est de corriger mon script de demarrage des serveurs jeux pour qu il puissent automatiquement se mettre en fonctionement après un reboot complet du serveur root .
Le script suivant fonctionne uniquement sur root ( je veus le démarrer en user pub24 uniquement )et de plus il ne fonctionne que après un démarrage manuel et non après un reboot serveur complet.
Merci d´avance pour votre aide.
voici les renseignements de mon serveur :
exemple pour un jeux CS1.6
le jeux CS est dans le répertoire suivant                    : /home/pub24/cs16
le user qui devrais démarrer le serveur s ´appelle      : pub24
j ai mis mon script (s appelle hlds)  dans le répertoire  :  /etc/init.d/
et mis celui-ci en execution avec                                : chmod 755 /etc/init.d/hlds
[B]apres ca mis les links avec                                        : ln -s /etc/init.d/hlds /etc/init.d/rc3.d/S90hlds
                                                                              :ln -s /etc/init.d/hlds /etc/init.d/rc3.d/K30hlds


*



tu es sur de démarrer en runlevel 3 ?


regarde dans le fichier /etc/inittab

tu dois avoir un ligne du style
QUOTE
# The default runlevel.
id:2:initdefault:


avec à la place de 2 le runlevel icon_biggrin.gif
et place tes liens symbolique dans le bon répertoire rc2.d, rc3.d ou rc4.d

ensuite, tout les scripts de démarrage sont executer par root, mais tu peux dire à root d'executer une commande en tant qu'un autre utilisateur, c'est entre autre ce que fait ton script avec la commande su, tu pourrais également regarder du coté de la commande
start-stop-daemon par exemple, au lieu d'utiliser screen

un bon moyen de verifier que tes serveurs tournent bien sous l'utilisateur pub52 est de taper :
ps -fe |grep hlds_run

et de regarder quel est l'utilisateur propriétaire du process icon_biggrin.gif
godzilla
Merci a vous tous , pour les réponses a mes questions , j ai pris l habitude de démarrer les serveur jeux semi automatique , ce qui veut dire que apres un reboot de la machine complete je vais démarrer les scripts des serveurs jeux manuellement pour verifier aussi les actualisations de ceux -ci en plus , l avantage est aussi le moyen de voir la console de démarrage du jeux et de résoudre les problémes eventuels , ceci est évidemment avec 2 machines differentes et + de 6 serveur jeux et 1 teamspeak un peus de boulot , mais aureusement les serveurs linux sont assez stable et me permet de ne pas devoir redemarrer trop souvent ceux-ci.

merci encore a+ a tous
Acidounet
sinon perso a l epoque de clubic pour les lancer sans problmee et les relancer en cas de crach je me servait du cron

c'etait parfait icon_kimouss.gif
Nosferatu
monsieur l'administrateur reseau, je ne sais pas qui est ce monsieur cron qui m'envoi des mails tous les soirs, mais veuillez lui dire de cesser de me harceler sinon je me plaindrais à la direction !
Patxi
QUOTE (Nosferatu @ 08/10/2005 à 22:46:12)
monsieur l'administrateur reseau, je ne sais pas qui est ce monsieur cron qui m'envoi des mails tous les soirs, mais veuillez lui dire de cesser de me harceler sinon je me plaindrais à la direction !
*


icon_ane.gif icon_ane.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.