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/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

toxotoes a écrit :

un probleme avec PERL n'est ce pas ?

Non, un problème avec la commande type

toxotoes a écrit :

...
+ 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

toxotoes a écrit :

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

toxotoes a écrit :

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 :-)

toxotoes a écrit :

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