Pages : 1
#1 Le 04/11/2006, à 19:36
- toxotoes
Perl
Bonjour,
j'utilisais etadmi_mod pour mon serveur true combat elite sous Dapper Drake, et depuis que j'ai installé Edgy, plus rien ne fonctionne.
(82.233.36.218:27962 pour le serveur TCE sous Dapper avec etadmin_mod)
Voici le message d'erreur que je peux lire dans mon fichier etadmin.log sous Edgy:
./etadmin_mod.sh: 118: -p:: not found
je vous colle ici le fichier etadmin_mod.sh :
(la ligne 118 est "esac")
je me demande donc bien ce qui peu se passer, perl a t'il changer de place depuis Dapper ou des paquets ne sont plus la ?
Merci
David
#! /bin/sh
#######################################################################
# CONFIG:
# General note: If you specify more then one parameter or config files:
# use brackets. e.g. "-r -e" or "1.cfg 2.cfg"
# Choose your config file(s) (space seperated):
# Remember: The last can overwrite parameters of the prior configs.
# Useful for hoster to deactivate or fix parameters
# Also see ADMIN_CONFIG for overwriting.
CONFIGS="etc/etadmin.cfg"
# This config is ALWAYS loaded after the CONFIGS have been loaded
# (even after a !loadconfig or map configs).
ADMIN_CONFIG=""
#ADMIN_CONFIG="etc/admin.cfg"
# Further Options (space seperated):
# -e to deactivate the including of a "external" section in map specific configs
# -r to reset the external section on every new section block.
# -d to completly deactivate the use of external programs (
# -> ignores the [external] section in the config.
#
# Note: for game hosters:
# - To completly disable external commands, use -d and fix the tail binary in a second config.
# - To define a preset of external commands to use for the user, use 2 configs
# (one for the user and one for you) and define the [external] section in your config,
# as well as the tail binary. Then use -r -e, so the user can't reset, add or modify the commands.
OPTIONS=""
# CHANGE THIS to the location of the extracted mod:
BASEDIR=/usr/local/games/enemy-territory/etadmin_mod
# Set this to a unique string for every instanz of etadmin_mod
# running on your server.
INSTANZ_NAME=base
#######################################################################
# You don't need to change anything below this line #
#######################################################################
cd $BASEDIR
PERL=`type -p perl`
PID=`ps axw|grep etadmin_mod.pl |grep "instanz_$INSTANZ_NAME" |grep -v grep | awk '{print $1}'`
case "$1" in
start)
echo -n "Starting etadmin_mod: "
# Adding admin config to the options
if (test -n "$ADMIN_CONFIG") then
OPTIONS="$OPTIONS --admin-config=$ADMIN_CONFIG"
fi
if (test -z "$PID") then
$PERL bin/etadmin_mod.pl $OPTIONS instanz_$INSTANZ_NAME $CONFIGS >>log/etadmin.log 2>&1 &
sleep 1
STATUS=`ps axw|grep "etadmin_mod.pl" | grep "instanz_$INSTANZ_NAME" |grep -v grep `
if (test -n "$STATUS") then
echo "OK! [$STATUS]"
else
echo "FAILED! [$STATUS] (See logfile log/etadmin.log for details!)"
fi
else
echo "FAILED! (etadmin_mod is already running)"
fi
;;
stop)
echo -n "Stopping etadmin_mod: "
if (test -n "$PID") then
# First determine tail pid
PID_TAIL=`ps axw|grep tail |grep etconsole.log |grep " $PID " |awk '{print $2}'`
# killing etadmin_mod
kill $PID
# Killing tail:
if (test -n "$PID_TAIL") then
kill $PID_TAIL
fi
echo "OK!"
else
echo "FAILED! (etadmin_mod isn't running)"
fi
;;
reload)
echo -n "Reloading etadmin_mod: "
if (test -n "$PID") then
kill -HUP $PID
echo "OK! ($PID)"
else
echo "FAILED! (etadmin_mod isn't running)"
fi
;;
status)
if (test -n "$PID") then
echo "Status: running"
else
echo "Status: not running"
fi
;;
restart)
$0 stop
# Need to sleep here, because etadmin_mod needs some seconds to shutdown
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
# Inform the caller not only verbosely and set an exit status.
exit 0
Hors ligne
#2 Le 06/11/2006, à 20:38
- JoelS
Re : Perl
Je ne connais pas etadmin_mod, mais c'est bizarre.
Lances ton script de la façon suivante:
$ sh -x ./etadmin_mod.sh
et regardes bien la trace de ce qu'il exécute.
Hors ligne
#3 Le 06/11/2006, à 21:02
- toxotoes
Re : Perl
Merci pour la diligence de la réponse.
J'ai donc efectué ce que vous demandiez et voici le résultat...
un probleme avec PERL n'est ce pas ?
Salutations
david@david-desktop:/usr/local/games/enemy-territory/etadmin_mod$ sh -x ./etadmin_mod.sh
+ CONFIGS=etc/etadmin.cfg
+ ADMIN_CONFIG=
+ OPTIONS=
+ BASEDIR=/usr/local/games/enemy-territory/etadmin_mod
+ INSTANZ_NAME=base
+ cd /usr/local/games/enemy-territory/etadmin_mod
+ type -p perl
+ PERL=-p: not found
perl is /usr/bin/perl
+ ps axw
+ grep etadmin_mod.pl
+ grep instanz_base
+ grep -v grep
+ awk {print $1}
+ PID=
+ echo Usage: ./etadmin_mod.sh {start|stop|restart|reload|status}
Usage: ./etadmin_mod.sh {start|stop|restart|reload|status}
+ exit 1
david@david-desktop:/usr/local/games/enemy-territory/etadmin_mod$
Hors ligne
#4 Le 06/11/2006, à 21:43
- JoelS
Re : Perl
un probleme avec PERL n'est ce pas ?
Non, un problème avec la commande type
...
+ type -p perl
+ PERL=-p: not found
perl is /usr/bin/perl
...
En fait, la commande type, qui est intrinséque au shell, fonctionne différemment sous bash ou sous sh. Or ton script démarre en mode sh, pas en bash!
Essayes dans un terminal:
$ type -p perl # la tu es sous bash
/usr/bin/perl
$ sh # la tu va sous sh en interactif
$ type -p perl
-p: not found
perl is /usr/bin/perl
$ exit # la tu reviens sous bash
$
Pour vérifier, tu peux modifier le script etadmin_mod.sh en changeant la 1iere ligne par #!/bin/bash et ça devrait marcher. Si c'est ça un rapport de bug s'impose :-)
Hors ligne
#5 Le 06/11/2006, à 22:57
- toxotoes
Re : Perl
Bon et bien le message d'erreur a changer dans mon fichier /home/.ewolf depuis que j'ai lancé ./etadmin.sh start avec la commande :
etadmin.log : /usr/local/games/enemy-territory/etadmin_mod/./etadmin_mod.sh: 118: -p:: not found
et la copie de ce que j'ai fait dans al console :
david@david-desktop:~$ type -p perl
/usr/bin/perl
david@david-desktop:~$ sh
$ type -p perl
-p: not found
perl is /usr/bin/perl
$ /usr/local/games/enemy-territory/etadmin_mod/./etadmin_mod.sh start
Starting etadmin_mod: FAILED! [] (See logfile log/etadmin.log for details!)
$ exit
david@david-desktop:~$
Heuu j'avoue que tout ceci est un peu compliqué pour moi maintenant ...
Merci et à bientôt
Hors ligne
#6 Le 07/11/2006, à 22:16
- JoelS
Re : Perl
Heuu j'avoue que tout ceci est un peu compliqué pour moi maintenant ...
Non, ça change rien ou presque. Tu as lancé la commande avec un paramétre qui est récupéré dans le case, alors qu'avant tu n'avais pas de paramétre. C'est tout. L'erreur est la même.
Dans tous les cas, le shell utilisé par ton script est /bin/sh car c'est ce qu'il y a écrit dans la 1iere ligne: au démarrage d'un ficher a exécuter, le système examine si ce fichier contient le shebang (c'est le terme utilisé) #! et si oui, prend les N 1iers caratères qui suit le shebang comme commande a exécuter réellement en ajoutant le fichier en fin de paramétre. Donc tu peux être sur n'importe quel shell interactif (et il y en a des trillions) tu lanceras en fait /bin/sh et ça ne marchera pas.
As-tu essayé de changer la ligne comme je te l'ais indiqué. Au mieux, force bash à lire le fichier comme une suite de commandes (bash donc) a exécuter:
$ /bin/bash ./etadmin_mod.sh start
Dans ce cas, bash va lire le fichier comme une suite de commande, et donc ignorer les lignes commençant par le diése.
Hors ligne
#7 Le 08/11/2006, à 19:14
- toxotoes
Re : Perl
WARFFFF et bien la ca marche !!!!!!!
Comme quoi je ne comprenais pas tout hein ...
voici ce que j'ai fait :
david@david-desktop:~$ type -p perl
/usr/bin/perl
david@david-desktop:~$ sh
$ type -p perl
-p: not found
perl is /usr/bin/perl
$ cd /usr/loacl/games/enemy-territory/etadmin_mod
cd: 2: can't cd to /usr/loacl/games/enemy-territory/etadmin_mod
$ cd /usr/local/games/enemy-territory/etadmin_mod
$ /bin/bash ./etadmin_mod.sh start
Starting etadmin_mod: OK! [21709 pts/1 S+ 0:00 /usr/bin/perl bin/etadmin_mod.pl instanz_base etc/etadmin.cfg]
$
Mais n'y a t'il pas un moyen pour que cela fonctionne comme avec Dapper ?
Quoiqu'il en soit, je tiens à te remercier pour ton aide rapide et conscise !
A quand des cours de perl pour un débutant comme moi ?
David
Hors ligne
#8 Le 08/11/2006, à 20:33
- JoelS
Re : Perl
Mais n'y a t'il pas un moyen pour que cela fonctionne comme avec Dapper ?
Fais la modif comme indiqué dans le fichier etadmin_mod.sh, et fais un rapport de bug :-)
A quand des cours de perl pour un débutant comme moi ?
Rien à voir avec Perl, c'est un problème de shell bash/sh
Hors ligne
#9 Le 06/12/2007, à 14:43
- Krist
Re : Perl
le plus gros problème à mon avis vis à vis de tons script, est que tu l'exécute avec "sh"
or "sh" ne pointe plus vers "bash", mais vers "dash"...
j'ai eu pas mal de soucis de script, j'ai refais le lien de "sh" vers "bash", et tout refonctionne à merveille chez moi...
#10 Le 06/12/2007, à 15:08
- toxotoes
Re : Perl
Oops,
celai fait un an que le pb est résolu, je n'ai pas coché "résolu"
Warf ca marche bien depuis ce temps
Malheureusement plus trop le temps pour mon serveur TCE sous linux depuis.
Cordialement
Toxo
=mave= for life
Hors ligne
Pages : 1