Bonjour
L'orginie de ce script provient de Rom1.
voir
http://forum.ovh.com/showthread.php?...=script+screen
Je l'ai un peu adapté depuis la sortie de la Orangebox, L4D, etc.. soit un remaniement des répertoires.
Je ne vais pas détailler son fonctionnement de base car cela est déjà bien expliqué dans le poste à Rom1.
Ce script demande 4 arguments: stop|start|restart|update
Code:
./monscript.sh start
start:
Lance le serveur de jeu dans un screen linux avec un ulilisateur et un nom définis.
stop:
Arrête le serveur de jeux et ferme le screen
restart:
stop et start
update:
stop le serveur
copie les fichiers maplist.txt, gameinfo.txt et motd.txt dans un répertoire défini. Car lors d'une mise à jour steam, ces fichiers sont réinitialisés.
lance la commande d'update de steam
remet les fichiers précédemments copie à leur place d'origine
start le serveur
créé un petit fichier log.txt pour le fun..
Remarques:
Si vous lancez ce script avec un utilisateur autre que root, un mot de passe sera demandé. Ce mot de passe est celui de l'utilisateur linux que vous avez défini dans le script. Ce mot de passe provient de l'action
Code:
su USER -C "commande"
Mais si votre script est mit dans /etc/init.d et passé dans
Code:
update-rc.d monscript.sh defaults 99
ce sera root qui va le lancer. Cette dernière commande ajoute à Linux le script au démarrage du serveur avec une priorité de 99 (la plus haute), c'est 20 par défault je crois...
Code:
#!/bin/sh
#############################################
## Script de lancement des serveurs ##
## Update par SwissDadou, Feb 2009 ##
#############################################
#############################################
## Début des variables ##
#############################################
# Paramètres serveur Linux
USER_NAME="linux-user" # Nom de l'utilisateur linux
SCREEN_NAME="nom-du-screen" # Nom du screen
SRCDS_BIN="./srcds_run" # Binaire du serveur
# Répertoires
PATH_INSTALL="/home/..." # Répertoire d'installation
PATH_BIN=${PATH_INSTALL}"/orangebox" # Répertoire du binaire
PATH_GAME=${PATH_BIN}"/dod" # Répertoire du jeu
PATH_CONF="/home/..." # Répertoire pour les logs et config du jeu
# Paramètres serveur Jeux
GAME_NAME="dod" # Nom de lancement du jeu
GAME_INSTALLNAME="dods" # Nom d'installation du jeu
GAME_TICK="100" # Tickrate du serveur
GAME_PLAYERS="20" # Nombre de joueurs max
GAME_MAP="dod_flash" # Map de lancement
GAME_IP="xx.xx.xx.xx" # IP du serveur
GAME_PORT="27015" # Port de lancement
GAME_TVPORT="27025" # Port de lancement TV
GAME_FPS="1000" # FPS du serveur
#############################################
## Paramètre divers (ne rien éditer) ##
#############################################
# Options de lancement
SRCDS_OPTS="-game $GAME_NAME \
-console \
-tickrate $GAME_TICK \
+maxplayers $GAME_PLAYERS \
+map $GAME_MAP \
-ip $GAME_IP \
+tv_port $GAME_TVPORT \
-port $GAME_PORT \
+fps_max $GAME_FPS \
-autoupdate "
# Ligne de commande pour l'update
STEAM_UPDATE="./steam -command update -game $GAME_INSTALLNAME -dir $PATH_INSTALL"
srcds_start() {
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
OWD=`pwd`
cd $PATH_BIN
echo "Commande de lanceement: [su $USER_NAME -c "screen -AmdS $SCREEN_NAME $SRCDS_BIN $SRCDS_OPTS"]"
su $USER_NAME -c "screen -AmdS $SCREEN_NAME $SRCDS_BIN $SRCDS_OPTS"
cd $OWD
echo "---------------------------------------------------------------------"
echo "Lancement du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_stop() {
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
echo "su ${USER_NAME} -c "screen -dr $SCREEN_NAME -X quit""
su ${USER_NAME} -c "screen -dr $SCREEN_NAME -X quit"
echo "---------------------------------------------------------------------"
echo "Arret du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_restart() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur : Fin de la sequence"
echo "---------------------------------------------------------------------"
}
srcds_update() {
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Debut de la sequence"
echo "---------------------------------------------------------------------"
srcds_stop
echo "Debut de l'update le `date`" >> ${PATH_CONF}/log.txt
# Sauvegarde des paramètres
cp -f ${PATH_GAME}/maplist.txt ${PATH_CONF}/maplist.bak
cp -f ${PATH_GAME}/gameinfo.txt ${PATH_CONF}/gameinfo.bak
cp -f ${PATH_GAME}/motd.txt ${PATH_CONF}/motd.bak
#cp -f ${PATH_GAME}/host.txt ${PATH_CONF}/host.bak
# Mise à jour
echo "Commande: [su ${USER_NAME} -c "${STEAM_UPDATE}"]"
OWD=`pwd`
cd $PATH_INSTALL
su ${USER_NAME} -c "${STEAM_UPDATE}"
cd $OWD
# Restauration des paramètres
cp -f ${PATH_CONF}/maplist.bak ${PATH_GAME}/maplist.txt
cp -f ${PATH_CONF}/gameinfo.bak ${PATH_GAME}gameinfo.txt
cp -f ${PATH_CONF}/motd.bak ${PATH_GAME}/motd.txt
#cp -f ${PATH_CONF}/host.bak ${PATH_GAME}/host.txt
# Mise en place des propriétaires
chown -R $USER_NAME:$USER_NAME $PATH_INSTALL
echo "Fin de l'update le `date`" >> ${PATH_CONF}/log.txt
srcds_start
echo "---------------------------------------------------------------------"
echo "Reboot du serveur avec mise a jour : Fin de la sequence"
echo "---------------------------------------------------------------------"
echo "Serveur démarré le `date`" >> ${PATH_CONF}/log.txt
}
if [ -z $1 ]; then
usage
fi
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: ${SRCDS_NAME} (stop|start|restart|update)"
echo "---------------------------------------------------------------------"
exit 2
}
case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
*)
usage
esac
exit 0