Startscript für Linux Gameserver (Vorschlag)

DJKnuffel
So..wer es brauch bitte schön*g*, hab es in einem anderen Board gefunden, die Anpassung der einzelnen Vars erklärt sich von selbst, wenn nicht dann hier nachfragen...es funktioniert auf jeden fall!!

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
#! /bin/sh 
######################################################### 
# THIS FILE IS FOR STARTING AN Call of Duty 1.2 SERVER  # 
######################################################### 
# Use at your Own Risk   !!!!!!!!!!!                    # 
# You need screen installed on your server              # 
######################################################### 
# Vars:                                                 # 
#	G_USER		Username			#
#       NAME            The Screen Name                 # 
#       DESC            Server Desciption               # 
#       PARAMS          Start Parameter		        # 
#       DIR             HLDS Directory (absolut)        # 
#       SCRIPT          Serverstart Script              # 
#       DAEMON          Daemon	                        # 
######################################################### 
# OPTIONS: (start|stop|restart|status)                         # 
######################################################### 

################## User ################################
# Username unter dem der Server laufen soll
# NICHT als root laufen lassen
G_USER=games
################## Vars ################################# 
# Screen NAME 
# Attach Screen : # screen -r NAME 
# Detach Screen : # [CTRL]+[A]; [D] 
# Don't press [CTRL]+[C] it will terminate screen 
NAME=extcod2
################## Server Description ################### 
# Single Word           DESC=myserver 
# Multiple Words        DESC="This is my Server" 
DESC="Call of Duty 2 eXtrem Mod Server" 
################## Parameter ############################ 
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg 
PARAMS="+set fs_game eXtreme +set dedicated 2 +exec eXtreme.cfg" 
################## Directory ############################ 
# Your Path to cod Directory (absolute) 
DIR=/srv/games/cod2
################## DAEMON ############################## 
# You place your startscript here, normally hlds_run 
SCRIPT=cod2_lnxded 
######################################################## 
####    DONT CHANGE ANYTHINK BELOW THIS LINE ! ! !  #### 
######################################################## 

DAEMON=$DIR/$SCRIPT 

case "$1" in
 start)
    if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
       then
       echo "$DESC läuft bereits!"
    else
       echo "Starte $DESC "
       su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
    fi
    ;;

 stop)
    if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
       then
       echo -n "Stoppe $DESC "
       kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
       echo " ... done."
    else
       echo "Kein laufenden $DESC gefunden!"
    fi
    ;;

 restart)
    if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
       then
       echo -n "Stoppe $DESC "
       kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
       echo " ... done."
    else
       echo "Kein laufenden $DESC gefunden!"
    fi

    echo -n "Starte $DESC"
    su $G_USER -c "cd $DIR; screen -d -m -S $NAME $DAEMON $PARAMS"
    echo " ... done."
    ;;

 status)
    ps aux | grep -v grep | grep cod > /dev/null
    CHECK=$?
    [ $CHECK -eq 0 ] && echo "$DESC ist online" || echo "$DESC ist offline"
    ;;
 *)

   echo "Benutze: $0 {start|stop|restart|status}" 
   exit 1 
   ;; 
esac 

exit 0



wo ihr das script dann hinpackt auf eurem root ist égal..da sowieso ein wechsel des users und verzeichnisses erfolgt, das script muss entweder CHMOD 500 (nur Besitzer kann ausführen) oder auch 775 haben.

Mögliche Aufrufe:

./server.sh start
./server.sh restart
./server.sh stop oder
./server.sh status

Have Fun
yoda
Nice, wenn man es versteht Augenzwinkern

Danke schön smile
kaepteng
genau, so ein Startscript is schon etwas feines, es lässt sich einfacher arbeiten mit cool
yoda
DJKnuffel
passt scho smile
yoda
Ok, mercí smile

Hoffe mal, ich hab nirgends was falsches geändert, hab keine Ahnung von eurem Linux-Krempel Augenzwinkern
scooter
Hi,

hätte hier auch noch ein InitScript mit dem man ganz einfach auf die Server Console zugreifen kann.


#!/bin/sh
#
# cod start/stop Call of Duty 2
# by =]DSD[=RomaSchlumpf
#
# V 1.0 2005-17-08
#
# chkconfig: 345 95 15
#
# description: start/stop COD2
#
# Usage: cod2 {start|stop|restart|status|debug|console}
#
# process name: cod2_lnxded

# Source function library
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# ------------Defining Variables------------

CURRENT_USER=`id -un`

# User unter dem der Server laeuft
CODUSER="cod2"

# Server Verzeichnis (hier /home/ vom User)
CODDIR="~/.callofduty2"

#Name der Screen Session
SCREENNAME="cod2"

#Startparameter des Servers
CODOPTIONS="+exec server.cfg +set dedicated 2"

#Server Startscript
CODBIN="cod2_lnxded"

#Logverzeichnis
CODLOG="$CODDIR/log"

CODHOST=`hostname`
CODLOCKFILE="/var/lock/subsys/cod2"


# ------------------------------------------

start() {

echo -n "Starting COD2 Server on host $CODHOST"

[ -f $CODLOCKFILE ] && exit 1

daemon su -l ${CODUSER} -c \""cd ${CODDIR}; screen -d -m -S ${SCREENNAME} ./${CODBIN} ${CODOPTIONS}\""

RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch "$CODLOCKFILE"

}

stop() {


echo -n "Shutting down COD2 Server on host $CODHOST"

killproc $CODBIN

RETVAL=$?
echo
rm -f "$CODLOCKFILE"

echo "COD2 Servers running: `ps h -C $CODBIN |wc -l`"

}

status() {


echo "COD2 Servers running: `ps h -C $CODBIN |wc -l`"

echo -n "Checking for Lock File"
[ -f $CODLOCKFILE ] && success || failure

echo

}


console() {

echo "Connecting to COD2 console"

if [ ! -f $CODLOCKFILE ]; then
echo "Lockfile $CODLOCKFILE not found"
echo -n "COD2 Servers running: `ps h -C $CODBIN |wc -l`"
failure
echo
exit 1
fi

chown $CODUSER `tty`
echo "su -l $CODUSER -c 'screen -d -r $SCREENNAME'"
su -l $CODUSER -c "screen -d -r $SCREENNAME"
chown root `tty`

if [ `ps h -C $CODBIN |wc -l` -eq 0 ]; then

echo -n "COD2 Server stopped: `ps h -C $CODBIN |wc -l`"
rm -f $CODLOCKFILE && success
echo

else
echo "COD2 Servers running: `ps h -C $CODBIN |wc -l`"
echo -n "COD2 Server running in background"
success
echo
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
debug)
echo "Starting COD2 Server on host $CODHOST in foreground"
start
console
;;
console)
console
;;
*)
echo "Usage: {start|stop|status|restart|debug|console}"
exit 1
;;
esac

exit $?



Gruß
Scooter
caza
Servus Leute,

hab nen Root Server und darauf auch en paar Gameserver darauf laufen.. bin aber absolut newbie und hab die Gameserver auch nur dank eurer Anleitung und rumtüfteln ans laufen bekommen.

Das mit dem Script ist ja schon ne fette Sache aber wie erstelle ich das? verwirrt verwirrt verwirrt Also ich logge mich in die Shell mit putty ein und dann? Wie mache ich die Datei und wenn das passiert ist, muss ich dann den ganzen Kram hier von der Homepage abtippen oder wie?? Bin mir sicher das das auch einfacher geht, hab aber überhaupt keinen Plan davon...

Kann mir einer helfen?

grüße

caZa*
kaepteng
den Inhalt für das Startscript entnimmst du hier aus den bereits vorgestellten Scripten, den ganzen Text kopierst du dir in den Editor (Windows) und speicherst das dann ab als Textdatei und benennst diese nun um, meinetwegen von cod2server.txt in cod2server.sh, dann lädst du diese auf deinen Rootserver mittels ftp oder sftp-zugang (z.B. WinSCP), wohin is im Prinzip egal, musst ja eh die ganzen Pfade noch anpassen.

Wenn dat alles erledigt is, gibst du der *.sh die passenden Rechte, z.B.: 755, dann sollte dieses funzen, in Putty startest du dann mit z.B.: ./cod2server.sh start, weitere Befehle sind dann noch stop/restart/status

jo, probiers cool

/Edit: kleiner Tip noch am Rande, für längere Befehlszeilen die in Putty eingegeben werden müssen, kann auch per Rechtsklick der vorher kopierte Text in Putty eingefügt werden, von daher muss es auch net immer gleich ein Startscript sein Augenzwinkern
yoda
Nur mal als Ergänzung hierzu:

Dateiendungen anzeigen lassen im Windows Explorer
(Wichtig, um z. B. .txt in .sh zu ändern oder .txt ind .cfg)

FTP-Programm: FileZilla - Anleitung
(Um Dateien per FTP auf einen Server zu laden oder davon herunterzuladen)