Page 1 of 1

COD4-Server-Startscript funzt nur teilweise

Posted: 2009-08-21 07:44
by fndark
Hi,

ich hab ein Startscript für meinen COD4-Server, welchen diesen auch startet, aber nicht stoppt!
Hier mal das komplette Startscript

Code: Select all

#! /bin/sh  
DIR=/home/fndark/SCIFI-X_COD4-Server
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR
cd $DIR

#NETZSETTINGS
IP=83.142.84.186
PORT=28001

#Der Screenname
NAME=cod4_scifi-x
DESC="CoD4"
#PARA_UEBERGABE
PARA1="+set fs_basepath $DIR +set fs_homepath $DIR +set fs_game mods/scifi-x "
PARA2="+set loc_language 2 +set dedicated 2 +set net_port $PORT +set sv_ip $IP "
PARA3="+set sv_punkbuster 1 +exec server.cfg +map mp_mtl_the_rock "
PARA4=""
PARAMS=$PARA1" "$PARA2" "$PARA3" "$PARA4
#Binaer_DATEI
SCRIPT=cod4_lnxded

DAEMON=$DIR/$SCRIPT

case "$1" in
start)
   echo "Starte $DESC: $NAME"
   cd $DIR
   screen -d -m -S $NAME $DAEMON $PARAMS
   ;;

stop)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stoppe $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... Server gestoppt."
   else
       echo "Konnte keinen laufenden Server mit PID -- $NAME -- nicht finden"
   fi
   ;;

restart)
  if [[ `screen -ls |grep $NAME` ]]
  then
      echo -n "<b>Stoppe $DESC: $NAME</b>"
      kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
      echo " ... Server gestoppt ... Kommando Start wird ausgeführt"
  else
      echo "Konnte keinen laufenden Server mit PID -- $NAME -- finden ... Kommando Start wird ausgeführt.<br><br>"
  fi

  echo -n "<center>Starte $DESC: $NAME </center><br /><br />"
  cd $DIR
  screen -d -m -S $NAME $DAEMON $PARAMS
 
  sleep 1
  
  if [[ `screen -ls |grep $NAME` ]]
  then
    echo "<center> Server gestartet.</center>"
  else
    
    echo -n "<center><b>--- !!Server konnte nicht gestarted werden!! ---</b></center>"
	echo -n "$DAEMON $PARAMS" 

  fi
 ;;

*)
   echo "Usage: $0 Parameter eingeben {start|stop|restart}"
   exit 1 
   ;;
esac

exit 0


Und hier noch die ausgegebene Fehlermeldung

Code: Select all

/home/fndark/SCIFI-X_COD4-Server/start-server.sh: 73: [[: not found
Konnte keinen laufenden Server mit PID -- cod4_f -- nicht finden
Für hilfe wäre ich dankbar weil den immer per Prozesskilling zu stoppen ist auch nicht die feine

Gruss, Dark

Re: COD4-Server-Startscript funzt nur teilweise

Posted: 2009-08-21 11:26
by Joe User
fndark wrote:Und hier noch die ausgegebene Fehlermeldung

Code: Select all

/home/fndark/SCIFI-X_COD4-Server/start-server.sh: 73: [[: not found
Konnte keinen laufenden Server mit PID -- cod4_f -- nicht finden
Was ist an der Fehlermeldung nun missverständlich? Deine Shell kann mit [[ nichts anfangen und sagt Dir das so gar...

Re: COD4-Server-Startscript funzt nur teilweise

Posted: 2009-08-21 13:09
by EdRoxter
Die [[..]] Syntax wird bei den gängigen Linux-Distributionen am Ehesten von bash interpretiert. Wenn /bin/sh nicht auf die Bash linkt, könnte das das Problem sein. Also sollte es gehen, wenn du als Shebang in dem Initscript

Code: Select all

#!/bin/bash
setzt.

Re: COD4-Server-Startscript funzt nur teilweise

Posted: 2009-08-21 15:44
by daemotron
[[ wird nur von Bash und ZSH interpretiert; alle anderen Shells verstehen nur [ oder test.

Ich vermute, Du verwendest Debian oder Ubuntu. Dort ist unter /bin/sh die Debian Almquist Shell (Dash) zu finden, die obige Syntax natürlich nicht versteht. Du kannst also einfach folgendes tun: Wie EdRoxter schon sagte, Shebang ersetzen - und dem Autor des Skripts einen überbraten. Einen IEEE1003.1 Shebang verwenden und sich dann beim programmieren nicht an selbigen Standard halten ist nämlich allergröbstes *Pfui* :twisted:

Re: COD4-Server-Startscript funzt nur teilweise

Posted: 2009-08-27 05:04
by fndark
Hi,

@ Joe

Wo das Problem liegt? Ganz einfach - ich kann zwar an / mit der Bash arbeiten, aber mit Scripting oder in dieser Richtung kenn ich mich nicht aus, leider wie ich manchmal feststellen muss

EdRoxter

Genau das war das Problem! Vielen dank!

jfreund

Richtig vermutet, es ist Ubuntu 9.04 Jaunty. Naja, das Script war vor vor 2 Jahren meine letzte Rettung als es um "Enemy Territory Sedrver" ging und hatte das irgendwo gefunden, dann einfach etwas umgebaut mit viel "Googln" und war froh das es wenigstens das starten übernahm da die ganze Befehlszeile doch heftig lang ist um sich alles zumerken

Vielen dank an euch alle für die schneller hilfe.

Gruss, Sven