PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Start/restart/stop-script per ssh [für fast jedes game!!!]



Seiten : [1] 2

N1Md4
02.11.03, 04:42
Hi,

Hier mal was schönes wonach auch viele suchen...

Ein Start/restart/stop script das per shell ausgeführt wird und sogar für so ziemlich fast jeder spiel tauglich ist und auch für beliebig viele server des gleichen oder anderen games also gemischt... :S

hier der code den ihr in eine leere datei einfügt (ohne endung) wie z.b. "server"



#! /bin/sh
################################################## #######
# THIS FILE IS FOR STARTING AN COUNTERSTRIKE 1.6 SERVER #
################################################## #######
# GriZZly@CS-Gemeinde.de #
################################################## #######
# Use at your Own Risk !!!!!!!!!!! #
# You need screen installed on your server #
################################################## #######
# Vars: #
# NAME The Screen Name #
# DESC Server Desciption #
# PARAMS HLDS Start Parameter #
# DIR HLDS Directory (absolut) #
# SCRIPT Your HLDS Script #
# DAEMON Your Daemon #
################################################## #######
# OPTIONS: (start|stop|restart) #
################################################## #######

################## Vars #################################
# Screen NAME
# Attach Screen : # screen -r NAME
# Detach Screen : # [CTRL]+[A]; [D]
# Don't press [CTRL]+[C] it will terminate screen
NAME=web8

################## Server Description ###################
# Single Word DESC=myserver
# Multiple Words DESC="This is my Server"
DESC="www.shell4u.de"

################## Parameter ############################
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg
PARAMS="-game cstrike +maxplayers 4 -port 27065 +map de_dust -autoupdate
################## Directory ############################
# Your Path to hlds_l Directory (absolute)
DIR=/home/web8/hlds_l

################## DAEMON ##############################
# You place your startscript here, normally hlds_run
SCRIPT=hlds_run

################################################## ######
#### DONT CHANGE ANYTHINK BELOW THIS LINE ! ! ! ####
################################################## ######

DAEMON=$DIR/$SCRIPT

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

stop)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;

restart)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F . '{print $1}'| awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo " ... done."
;;

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

exit 0

##### EOF #####


per ./server start / stop / restart führt man das gewünschte aus!

die rechte sollten auf 500 (nur der besitzer darf sie lesen und auführen jedoch nicht schreiben/bearbeiten) gesetzt werden (chmod 500 server), da sonst wenn das script in einem verzeichnis das einem kunden oder mitbenutzer gehört die slot anzahl geändert werden kann! was nicht im sinne des gameserver anbieters liegt (btw kenne ich kaum einen der ssh anbietet aber naja ... werbung will ich hier auch nicht machen wer so einen wissen will soll mich pm).
wenn man alleiniger auf dem server ist kann man es auf 700 setzen oder wenn gewollt 777

um es anzupassen sollte man den deamon anpassen also z.b. für enemy territory



################## DAEMON ##############################
# You place your startscript here, normally hlds_run
SCRIPT=etded


und nicht zu vergessen den pfad anpassen! ebenso NAME DESC und PARAM (die startparameter!)

MFG

N1Md4

PS: fragen dazu bitte an mich richten und nicht an GriZZly@CS-Gemeinde.de da er nicht mehr daran arbeitet (glaub ich ^^) - kam zumindest keine antwort von ihm bezüglich des scripts!?

LordDarkmage
02.11.03, 19:12
Yo! Is mal ne gute Idee gewesen ;)
Hab´s mir gleich mal "zugelegt".

Vielen Dank

MfG
LordDarkmage

cubaallstar
15.11.03, 01:45
das coole an dem script ist das er den server in einer Screen Session startet! :)

sollte man evtl auch hier im Board in FAQs aufnehmen

gruss
alex

beezlebug
17.11.03, 09:25
bei holarse.net gibt es seid längeren schon solch ein script, welches sogar ein bissl mehr kann ;)

N1Md4
19.11.03, 21:31
dann bitte link posten zum script und wir machen ne script sammlung auf!

bärbär
12.12.03, 22:21
hallo erst mal!:D

ich komm mir grad bisschen blöd vor!
bei mir haut das no nich ganz hin!

dexter@dexter@local:~/serv> ./etstart start
./etstart: line 94: unexpected EOF while looking for matching `"'
./etstart: line 102: syntax error: unexpected end of file

und das schlime ist ja ich weiss nicht warum!:rolleyes:

HEMIcuda
13.12.03, 07:40
Steht doch da: Dir fehlt ein ".

'cuda

bärbär
13.12.03, 13:59
lol ja, ich hab nur immer in der zeile 94 und 102 gesucht! :rolleyes:
und mir gedacht da hab ich doch garnix verändert! :ugly:
aber ich hab das start comando nicht geschlossen!

ihr müsst entschuldigen das war mein erster script um irgendwas zu starten unter linux nun funzt es aber!!!
BIG THX

Sergate
09.02.04, 14:51
also irgendwie funzt das bei mir garnicht

diese meldung kommt da immer wenn ich den server stoppen will


kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]


kann mir einer weiterhelfen?

rulemaker
15.02.04, 23:00
Hi all

Also erstmal danke an N1Md4 für sein Script. Ich bin zwar noch Linux Neuling aber ich habe mir das mal angeschaut und etwas verändert. Ich hab das skript mal für einen Call of Duty Server angepasst und zusätzlich sollte man nun eine Benutzer angeben unter dem der Server laufen soll. Ist vor allem für Leute gedacht die die root Rechte haben.


#! /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=cod
################## Server Description ###################
# Single Word DESC=myserver
# Multiple Words DESC="This is my Server"
DESC="Call of Duty 1.2"
################## Parameter ############################
# CAN USE: +servercfgfile server.cfg OR +exec server.cfg
PARAMS="+set dedicated 1 +map_rotate"
################## Directory ############################
# Your Path to cod Directory (absolute)
DIR=/usr/games/cod
################## DAEMON ##############################
# You place your startscript here, normally hlds_run
SCRIPT=cod_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 "CoD is already running!"
else
echo "Starting $DESC: $NAME"
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 "Stopping $DESC: $NAME "
kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;

restart)
if [[ `su $G_USER -c "screen -ls | grep $NAME"` ]]
then
echo -n "Stopping $DESC: $NAME "
kill `ps aux | grep -i screen | grep -i $NAME | awk '{print $2}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
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 "CoD is UP" || echo "CoD is DOWN"
;;
*)

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

exit 0

callefornia
23.03.04, 14:33
Ich habe das selbe Problem wie Sergate, die Fehlermeldung ist identisch.
Starten kann ich mit diesem Script den Server. Nur stoppen bzw. restarten geht nicht. Nach einem Restart läuft der Serverprozess 2x. Könnte sich einer von den Shell-Cracks der Sache nochmals annehmen? Wäre echt Spitze. Danke

Bl4ckBurN
08.04.04, 11:13
Hallo

ich habe eine Frage zu dem script wenn ich das eingebaut habe wie oder wo kann ich das den dannn eingeben damit der server läuft
muss ich das über nen php script machen auf der page??

Habe da leider noch nicht so die ahnung

Danke

vIPERTX
20.04.04, 23:22
ssh als user einloggen oder als "root" benutzer -> wechseln !

./startscript start

./startscript stop

./startscript restart

--------

für die jungs die das ganze in einem webinterface haben wollen, hat ein freund von mir das hier geschrieben !


http://www.wiprojekt.de/

zyrusthc
09.05.04, 16:04
Ich habe da seid gestern ein Problem ! Wenn ich das StartScript ausführe dann will der immer das Passwort von dem Benutzer der im Script eingetragen ist ! Wenn ich es als root ausführe funktionert es so wie es soll ! Was kann das auf einmal sein und wie kann ich das beheben ? Es ist im moment unmöglich denn Server über das Webinterface zu steuern da dieser bei der Passwortabfrage dann im Browser nicht fortsetzt !

Danke im voraus.........

mfg Oli

Slash
09.05.04, 16:07
gibt es das auch für UT2004? :)

zyrusthc
09.05.04, 16:11
gibt es das auch für UT2004? :)

Das geht auch bei ut2004 , obwohl UT2004 ein eigenes Webinterface hat zum steuern der Servers !
;)

Slash
09.05.04, 18:46
echt? krazz. ich hab den server noch gar nicht installiert. das muss ich mal testen. =)

danke

<(*_*)> Lotus
21.08.04, 16:46
hi,
weis jemand in welches verzeichnis man das script auf einem linux root-server installiert ???

Danke im Voraus !!! :)

zyrusthc
21.08.04, 20:20
hi,
weis jemand in welches verzeichnis man das script auf einem linux root-server installiert ???

Danke im Voraus !!! :)

Wo du dein Startscript hinpackst is völlig egal ! Das Script wechselt ja in dein Gameserververzeichnis .

fruss Oli

<(*_*)> Lotus
23.08.04, 06:30
mit was für einen editer kann man das script in eine datei packen ???

RFC|Gul Dukat
23.08.04, 09:45
das script funzt bei ut2004 leider nicht so wie es sollte da bei ut2004 die cacherecords.ucl jedes mal frisch kopiert werden sollte damit es stabil laeuft und auch richtig funzt.
da die cacherecords von epiggames leider nicht so drall sind, gibts HIER (http://jsalmi.com/ut2004/) neben einem guten startscript fuer ut2004 auch frische cacherecords.
allerdings laesst sich dieses startscript leider nicht uebers web ansteuern wie das hier in dem thread angebotene.
wenn jemand ne loesung dafuer hat, wie man ut richtig starten kann mit diesem script, so waere das echt super. :p

zyrusthc
23.08.04, 10:30
Soweit mir bekannt hat UT2004 ein eigenes Webinterface zum steuern ;)
War mal auf ner LAN , dort haben die die UT Server komplet mit Webinterface gesteuert !

RFC|Gul Dukat
23.08.04, 13:20
im webinterface kann der admin den server restarten und verwalten. leider ist dort keine moeglichkeit den server komplett zu stoppen und dann wieder zu starten. der webadmin wird ja auch erst nach dem serverstart erstellt.
wir benuzten ein webinterface um saemtliche games zu starten, zu stoppen oder zu restarten. zum ausfuehren benutzen wir dann dieses startscript. fuer ut2004 funzt das leider nicht. auf der seite die ich hier gepostet hatte gibts nen startscript das ut2004 perfect startet. leider kann man das nicht fuer unser webinterface anwenden, da man dem startscript noch dem gametyp anhaengen muss mit dem ut2004 starten soll. das funzt irgendwie nich.
in diesen script hier kann man die parameter ja im script selbst einfuegen. aber dieses fuehrt nun leider wieder nich die erforderlichen, oben genannten, optionen aus.
darum war ja meine frage ob jemand weis wie man das mit ut in diesem script hier machen koennte. weil das ist naemlich nen super script udn funzt wirklich auf fast alle games.

<(*_*)> Lotus
24.08.04, 06:27
Hallo,
kann mit dem script nichts starten!
wenn ich mit dem script starte "./startscript start" kommt dan die meldung:

"./startscript1: line 16: screen: command not found"

vermute mal das hat was mit dem screen zu tun, kann mir da jemand weiter helfen?

Danke! :)

Hun
24.08.04, 09:09
./ heißt im aktuellen verzeichnis
probier mal den vollständigen pfad anzugeben (in meinem Fall: /etc/rc.d/DAEMON start)

RFC|Gul Dukat
24.08.04, 10:32
kann sein das screen nicht installiert ist bei dir?
allerdings steht in line 16 doch gar kein kommando.
in dem script hier steht in dieser line das:


# DAEMON Your Daemon #

da musst du nichts aendern. das ist nur ne info fuer dich.

wichtig ist das du hier dene startparameter eingibts.



##################Parameter####################### #####CAN USE: +servercfgfile server.cfg OR +exec server.cfg
PARAMS="die start parameter fuer dein game"

und ausserdem musst du hier den pfad zu der startdateio fuers game angeben:


##################Directory####################### #####
# Your Path to hlds_l Directory (absolute)
DIR=/pfad/zu/deinem/game


zu guter letzt dann die datei die da scriptcript ausfuehren soll eintragen.


##################DAEMON########################## ##
# You place your startscript here, normally hlds_run
SCRIPT=ausfuehrendes script

hast du alles richtig eingegeben, sollte dein game auch starten.
wenn nich, muss irgendwas falsch sein. poste doch dann einfach mal was du drin zu stehen hast.

Freakezoid
10.03.05, 22:06
Ich habe da seid gestern ein Problem ! Wenn ich das StartScript ausführe dann will der immer das Passwort von dem Benutzer der im Script eingetragen ist ! Wenn ich es als root ausführe funktionert es so wie es soll ! Was kann das auf einmal sein und wie kann ich das beheben ? Es ist im moment unmöglich denn Server über das Webinterface zu steuern da dieser bei der Passwortabfrage dann im Browser nicht fortsetzt !

Hallo zyrusthc

Das ist vollkommen normal, das wenn Du einen Userwechsel ausführst nach dem Passwort gefragt wirst. Nur der Root User darf dies ohne Passwortabfrage.
Du könntest natürlich auch den Server als deinen Web User starten (häufig apache), ist zwar nicht schön, aber dann haste auch keine Passwortabfrage und musst Dir auch keine Sorgen machen bzgl. verschiedener Accounts.

Freakezoid

Froster
11.03.05, 11:24
Hallo,

großes danke und lob an die engagierten Schreiber des scripts. Irgendwie bin ich zu faul für sowas :).

Jedoch ist im 2. Script (cod) nochn kleiner bug den man wenn man nicht mit den gleichen Variablen arbeitet beheben sollte. Und zwar muss der Statusbereich wie folgt lauten:


status)
ps aux | grep -v grep | grep $NAME > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is DOWN"
;;

Auch sollte man bei mehreren Servern darauf achten, das der 1. nicht z.b. "cod" heißt und der andere "codwar" sonst kannst mit grep zu problemen kommen.

Noch ne bitte falls einer bock/know-how hat:
Ich weiß nun nicht genau, ob das geht aber kann man nen cron in das .sh einbauen. Welches guckt, ob der dienst $NAME noch läuft und ansonsten ne email sendet :? . MFG Froster

Metus
23.11.05, 19:32
Auch sollte man bei mehreren Servern darauf achten, das der 1. nicht z.b. "cod" heißt und der andere "codwar" sonst kannst mit grep zu problemen kommen.

Also darf der erste Teil des Namens nicht identisch mit einem anderen ersten Teil eines Namens sein?
Wird etwas schwierig wenn man viele Startscripte von verschiedenen Gameservern auf einem Rechner hat. Gibts da ne alternative Lösung?

gnuroman
23.11.05, 19:42
Wer ein funktionierendes Script haben will, guckt hier mal:
http://www.linuxforen.de/forums/showthread.php?t=196213

:D