Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Montag, 22. Juli 2013, 14:04

Gameserver Installer + Start/Stop Script

Hallo Community.

Ich will euch mein Gameserverprojekt vorstellen. Dieses ist auf Sourceforge zu finden. Es ist ein Skript welches die verschiedensten Gameserver installiert und auch startet bzw. stoppt.

Vorbereitung


Skripte runterladen. Diese bekommt ihr hier:
Gameserverskripte

Supported Games HL1 Engine
-Counter-Strike 1.6
-Counter-Strike: Condition Zero
-Day of Defeat

Supprted Games HL2 Engine
-Counter-Strike: Source
-Counter-Strike: Global Offensive
-Team Fortress 2
-Day of Defeat: Source
-Left 4 Dead 2
-Garrys Mod

Minecraft
-Minecraft Server Version 1.6.1

System Vorbereitung


Als Root einloggen!

Quellcode

1
2
3
4
5
apt-get update
apt-get upgrade
apt-get install screen
apt-get install gawk
apt-get install ia32-libs


Für Debian Wheezy

Quellcode

1
2
3
4
5
6
7
apt-get update
apt-get upgrade
apt-get install screen
apt-get install gawk
dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs


SteamCMD Installation


Als Root einloggen!

Quellcode

1
2
3
4
5
6
7
8
9
10
cd /home
mkdir ./.STEAMCMD
cd ./.STEAMCMD
mkdir ./scripting
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar -xf steamcmd_linux.tar.gz
rm -R steamcmd_linux.tar.gz
chmod -R 777 /home/.STEAMCMD
./steamcmd.sh
Steam> quit



Schreibt folgendes in die Datei /etc/security/limits.conf:

Quellcode

1
2
soft nofile 2048
 hard nofile 2048


Dies wird benötigt damit die SteamCMD fehlerfrei läuft.

Skripte installieren

Quellcode

1
2
cd /home
mkdir /home/skripte


In diesen Ordner müsst ihr den Inhalt der skripte.zip hochladen (DEDICATED_HL1 DEDICATED_HL2 DEDICATED_MINECRAFT gs_installer.sh)

Quellcode

1
chmod -R 777 /home/skripte


Neuen User für die Gameserver Installation erstellen
(bei mir der User user1, man kann den Namen frei wählen):


Quellcode

1
2
3
useradd -m -s /bin/bash user1
passwd user1
2x Passwort eingeben


Gameserverinstallation

Als Root einloggen!
Der Gameserverinstaller muss als Root ausgeführt werden. Das hat folgenden Hintergrund: Es soll nicht jeder beliebige User Gameserver installieren können!

Quellcode

1
2
3
4
cd /home/skripte
./gs_installer.sh install_hl1 //für HL1 Games
./gs_installer.sh install_hl2 //für HL2 Games
./gs_installer.sh install_minecraft //für Minecraft


Achtung: Beim Aufruf des Sckripts werdet ihr als erstes nach
einem User gefragt. Nehmt den, den ihr gerade erstellt habt. NIEMALS DEN USER ROOT EINGEBEN!




Sobald man als Root die Informationen User, IP Adresse, Port und Spiel eingegeben hat legt das Skript auch schon los.





Zuerst überprüft es ob das Verzeichnis /home/server existiert.

Wenn nicht erstellt er es.

Danach erstellt er ein weiteres Verzeichnis nämlich
/home/server/xxx.xxx.xxx.xxx_game_port (Bsp. 123.456.789.012_css_27015 das XXX wird durch die IP ersetzt).
Dies ist dann der Pfad wohin er den Gameserver installiert.

Nach dem er den Server herunter geladen hat erstellt er im Ordner xxx.xxx.xxx.xxx_game_port 3 Datein (Bei HL1 Spielen 4).

.start >>Diese Datei führt man einfach als
normaler User aus und der Gameserver wird gestartet. Wenn es als Root ausgeführt wird wechselt das Script mittels su auf den richtigen User

.stop >>Stoppt den Gameserver

.restart >>Restartet den Gameserver

.varcfg >>Konfigurationsdatei mit den ganzen Startparametern. Eigentlich muss man daran nichts ändern außer diese Variablen:
GS_MAP, GS_MAXPLAYERS und GS_FASTDL_URL (wenn kein Fastdl vorhanden einfach auf "" setzen) Falls ihr den FastDL URL nachträglich setzt, müsst ihr die Datei fastdl.cfg z.B. im Ordner/cstrike/cfg/ löschen. Diese wird dann mit dem URL neu generiert.

Bei CSGO zusätzlich: GS_GAMEMODE, GS_GAMETYPE und GS_MAPGROUP

Bei L4D2 zusätzlich: GS_GAMEMODE

.update >>Nur bei HL1 Servern da hier das Autoupdate seitens Valve noch nicht richtig funktioniert.

Nach dem ersten Gameserverstart muss man den Server gleich neu starten, da er nach dem ersten Start nur im LAN Modus verfügbar ist (Liegt an Steam).

Beim ersten Gameserverstart erstellt er außerdem im Ordner /home/.STEAMCMD/scripting eine Updatedatei die er bei jedem Gameserverstart aufruft: Autoupdate! Die Datei heißt update_xxx.xxx.xxx.xxx_game_port (XXX wird durch die IP ersetzt)

Damit dies alles richtig funktioniert müssen die ganzen Rechte der Datein stimmen siehe ReadMe Datei bzw. Wiki.

Durch die IP Präfix beim Ordner und in der Updatedatei ist Multi IP Support gegeben.

Diese Skript ist natürlich nur für Leute ohne Webinterface gedacht

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »John Hannibal Smith« (22. Juli 2013, 17:59)


Kevin

Anfänger

Beiträge: 3

Rootserver vorhanden: Ja

  • Nachricht senden

2

Montag, 22. Juli 2013, 17:04

?

Jawoll! Noch mehr GameServer von Script-Kindern, welche null Ahnung haben und Google für etwas böses halten, was nur falsche Ergebnisse liefert.
Darauf hat die Gamer-Welt gewartet!

Auch wenn es hier niemand auszusprechen wagt und mein Account dafür gebannt wird:

*
panem et circenses

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »fluxX« (22. Juli 2013, 18:22)


MadMakz

Super Moderator

Beiträge: 1 878

Wohnort: ~#

Rootserver vorhanden: Ja

  • Nachricht senden

3

Montag, 22. Juli 2013, 17:23

Immer mit der Ruhe :) Was ist denn das Problem Kevin?

4

Montag, 22. Juli 2013, 17:24

Was bistn du fürn kleines Kiddy? Hat Mami dir den Schnuller weg genommen? Noch dazu hab ich sicherlich mehr Erfahrung auf dem Gebiet der Programmiersprachen als du.

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

5

Montag, 22. Juli 2013, 17:41

Ruhe jetzt!

Schön, dass du dir die Mühe gibst und den 100. Installer für HL?-Server schreibst.
Mir ist beim kurzen durchsehen des Codes aufgefallen, dass du gerne auch einzelne Dateien rekursiv löscht.

z.B.:

Quellcode

1
rm -R scripts.tgz ;


In den meisten Fällen geht das gut, kann aber auch zu Fehlern führen, die der Nutzer hinterher bereut.

Fängt bei einfachen Fehlern an:

Quellcode

1
2
cd /zu/loeschende/dateien
rm -R *


Wenn nun der Pfad /zu/loeschende/dateien nicht existiert oder der User keine Berechtigungen hat, wird der Verzeichniswechsel nicht vollzogen und der zweite Befehl löscht dann rekursiv alle Verzeichnisse und Dateien im aktuellen Verzeichnis. Meistens ist das dann /home/$USER

In deinem Script wird das Problem zwar nicht auftreten, aber den Stil solltest du ändern. Somit vermeidest du von vorne herein böse Fehler, die unter Umständen das Rückspielen eines Backups erfordern, welches dann nicht vorhanden ist.

6

Montag, 22. Juli 2013, 17:54

Danke fürs Feedback nun zum "rm -R"

Das war die erste Version vom Installer bzw. Vom Installer der die Skripte installiert. Bei dem hast du diesen Code raus nehm ich an aber den installier hab ich gerade raus genommen weil da noch einiges nicht ganz funktioniert. In der ReadME Datei steht wie man es manuell installiert da hab ich das -R nun auch rausgenommen (aber stimmt das rekursiv nehm ich recht gerne her :P ). Bei den Gameserverskripten selbst ist nur "rm" vorhanden. das einzige was ich im Gameserverinstaller selbst rekursiv setze sind die Rechte sprich "chown -R"

Und zum Thema den 100sten Installer :P

Den hab ich schon ewig geschrieben nur noch nie veröffentlicht. Sprich immer selber benutzt. Nachdem das SteamPipe Update kam haben die anderen eh fast alle nicht mehr funktioniert und dann hab ich meinen hald up to date gebracht und veröffentlicht :P

LG

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »John Hannibal Smith« (22. Juli 2013, 18:01)


DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

7

Montag, 22. Juli 2013, 18:01

Ja, spricht ja nichts gegen. Ich hätte den Installer gern in Python gesehen ;-D

Ich erschrecke mich immer, wenn ich mir meine alten Shell-Scripte so ansehe.

8

Montag, 22. Juli 2013, 18:03

Wieso wie meinst :P

Wie gesagt vorher wars eben nur intern gedacht und dann hab ich es doch veröffentlicht. Python kenn ich zwar (Kann teilweise Basics) aber hab mich damit noch nie richtig befasst^^ aber ich kannn mir Python mal geben und dann eventuell umschreiben :P

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »John Hannibal Smith« (22. Juli 2013, 18:11)


9

Montag, 22. Juli 2013, 19:50

Du solltest dir mal EOF und sed anschauen. Mit beidem könntest du viele Zeilen und echos sparen.

Ob eine Datei existiert, überprüft man mit -f. Leg mal eine Datei an und setze chmod auf 600.

Quellcode

1
echo "#! /bin/bash" >>.varcfg

sorgt dann dafür, dass appened, an Stelle von neu erstellt wird.

screen -ls zeigt dir auch tote screen ans. Der Status und Abfragen darüber können zu Fehlern führen. Ein screen -wipe vor einem screen -ls, schafft da Abhilfe.

Gibt noch sicher mehr Dinge, die man verbessern kann, bin aber gerade zu faul mir das genauer anzugucken.
Webbasierender Config Ersteller: www.ulrich-block.de für CS 1.6, CSS, DODS und TF2.

Ebenso wird werden verschiedene Debian Gameserverkernel zum Download angeboten.

10

Montag, 22. Juli 2013, 20:10

zum Screen: Dass dies zu Fehler führen kann wäre mir neu da ich bzw. wir es schon seit einigen Jahren benutzen (auch Partnerclans und co). Aber werd ich mir mal angucken wenn ich Zeit hab :P

die Flags für die If Abfrage sind mir bekannt nur die Datei soll auch ausführbar sein und nicht nur existieren. Dafür das -x . Und auf den Datein wo -f angewendet wird, wird vom Skript automatisch schon chmod auf 777 gesetzt. Ich weis grad nicht auf was du hinaus willst :P