ArmA3 Serversteuerung
Ich stelle euch heute eine kleine Serversteuerung vor, die das Starten,
Neustarten und Stoppen der Gameserver für eure Mitglieder ermöglicht.
Das Grundmodell wurde von einem ehemaligem Clanmitglied erstellt
und von mir vor ca. 3 Monaten generalüberholt.
Zum einfügen dieses Systems benötigt ihr:
- ein Windows-Betriebssystem (Oder ihr macht euch die Mühe und schreibt euch ein Linux-Script)
- einen FTP-Server
- etwas logisches Denken
Das System besteht aus folgender Ordner-Struktur:
Im Ordner 'original' befinden sich folgende Dateien auf dessen Funktion ich später noch genauer eingehen werde.
Im Ordner 'programs' befinden sich folgende Dateien und Ordner:
Im 'bats' Ordner befinden sich die .bat-Dateien die später die Startparameter etc. beinhalten:
Und im 'StartStop' Ordner befindet sich folgendes:
Fangen wir mit dem 'StartStop' Ordner an.
Dort befinden sich verschiedene .txt-Dateien die eine bestimmte Funktion beschreiben. Möchten wir bspw. den
Gameserver #1 neustarten, müssen wir einfach die '#1_neustarten.txt' löschen. Der Server wird nun neugestartet
und die .txt wird in unserem Ordner neu erzeugt.
Möchten wir den #2 Gameserver starten, müssen wir einfach die '#2_starten.txt' löschen.
Nun wird der Server gestartet und es werden die Dateien '#2_stoppen.txt' und '#2_neustarten.txt' erzeugt (Beim 1. Server zu erkennen).
Dieser Ordner wird später dann für die Mitglieder per FTP zu erreichen sein.
Auf die Funktionsweise komme ich nachher zu sprechen.
Nun geht es weiter zu dem 'original' Ordner.
Wie oben zu sehen befinden sich dort die .txt-Dateien die wir eben auch schon im 'StartStop' Ordner gesehen haben.
Und man kann es sich schon denken; Dort befinden sich alle benötigten .txt-Dateien die man für jeden Server
benötigt und die dann einfach nur von A nach B kopiert werden.
Nun kommen wir zum 'programs' Ordner und der Monitor.bat.
Die Monitor.bat ist das Herzstück des ganzen, da sie für die .txt Verteilung und für die BAT-Ausführung sorgt.
In folgendem Beispiel sieht man unsere Monitor.bat für drei Gameserver.
(WICHTIG: Denkt daran die Pfade bei euch anzupassen)
- @ECHO OFF
- ECHO ==================
- ECHO Monitoring started
- ECHO ==================
- title "Server Monitor"
- SET DELAY=5
- SET s01=1
- SET s02=1
- SET s03=1
- SET FOLDER=C:\Users\Administrator\Desktop\startsystem_Neu\StartStop\
- SET FOLDERORIGINAL=C:\Users\Administrator\Desktop\startsystem_Neu\original\
- SET BATFILES=C:\Users\Administrator\Desktop\startsystem_Neu\programs\bats\
- :Schleifenstart
- cd %FOLDER%
- IF %s01%==1 (
- if not exist #1_starten.txt ( call :s01start)
- )
- cd %FOLDER%
- IF %s01%==2 (
- if not exist #1_stoppen.txt ( call :s01stop)
- )
- cd %FOLDER%
- IF %s01%==2 (
- if not exist #1_neustarten.txt ( call :s01neustart)
- )
- cd %FOLDER%
- IF %s02%==1 (
- if not exist #2_starten.txt ( call :s02start)
- )
- cd %FOLDER%
- IF %s02%==2 (
- if not exist #2_stoppen.txt ( call :s02stop)
- )
- cd %FOLDER%
- IF %s02%==2 (
- if not exist #2_neustarten.txt ( call :s02neustart)
- )
- cd %FOLDER%
- IF %s03%==1 (
- if not exist #3_starten.txt ( call :s03start)
- )
- cd %FOLDER%
- IF %s03%==2 (
- if not exist #3_stoppen.txt ( call :s03stop)
- )
- cd %FOLDER%
- IF %s03%==2 (
- if not exist #3_neustarten.txt ( call :s03neustart)
- )
- timeout %DELAY% /nobreak > nul
- goto Schleifenstart
- :s01start
- title "Server #1 starten"
- echo =============================
- echo Time: %TIME%
- echo #1 Start
- copy %FOLDERORIGINAL%#1_stoppen.txt %FOLDER%#1_stoppen.txt
- copy %FOLDERORIGINAL%#1_neustarten.txt %FOLDER%#1_neustarten.txt
- echo =============================
- SET s01=2
- start "" /min "%BATFILES%s01-Starten.bat"
- exit /b
- goto :eof
- :s01stop
- title "Server #1 stoppen"
- set s01=1
- echo =============================
- echo Time: %TIME%
- echo #1 Stop
- copy %FOLDERORIGINAL%#1_starten.txt %FOLDER%#1_starten.txt
- del %FOLDER%#1_neustarten.txt /s /q
- echo =============================
- start "" /min "%BATFILES%s01-Stoppen.bat"
- exit /b
- goto :eof
- :s01neustart
- title "Server #1 neustarten"
- set s01=2
- echo =============================
- echo Time: %TIME%
- echo #1 Neustarten
- copy %FOLDERORIGINAL%#1_neustarten.txt %FOLDER%#1_neustarten.txt
- echo =============================
- start "" /min "%BATFILES%s01-Stoppen.bat"
- timeout 6 /nobreak > nul
- start "" /min "%BATFILES%s01-Starten.bat"
- exit /b
- goto :eof
- :s02start
- title "Server #2 starten"
- echo =============================
- echo Time: %TIME%
- echo #2 Start
- copy %FOLDERORIGINAL%#2_stoppen.txt %FOLDER%#2_stoppen.txt
- copy %FOLDERORIGINAL%#2_neustarten.txt %FOLDER%#2_neustarten.txt
- echo =============================
- SET s02=2
- start "" /min "%BATFILES%s02-Starten.bat"
- exit /b
- goto :eof
- :s02stop
- title "Server #2 stoppen"
- set s02=1
- echo =============================
- echo Time: %TIME%
- echo #2 Stop
- copy %FOLDERORIGINAL%#2_starten.txt %FOLDER%#2_starten.txt
- del %FOLDER%#2_neustarten.txt /s /q
- echo =============================
- start "" /min "%BATFILES%s02-Stoppen.bat"
- exit /b
- goto :eof
- :s02neustart
- title "Server #2 neustarten"
- set s02=2
- echo =============================
- echo Time: %TIME%
- echo #2 Neustarten
- copy %FOLDERORIGINAL%#2_neustarten.txt %FOLDER%#2_neustarten.txt
- echo =============================
- start "" /min "%BATFILES%s02-Stoppen.bat"
- timeout 6 /nobreak > nul
- start "" /min "%BATFILES%s02-Starten.bat"
- exit /b
- goto :eof
- :s03start
- title "Server #3 starten"
- echo =============================
- echo Time: %TIME%
- echo #3 Start
- copy %FOLDERORIGINAL%#3_stoppen.txt %FOLDER%#3_stoppen.txt
- copy %FOLDERORIGINAL%#3_neustarten.txt %FOLDER%#3_neustarten.txt
- echo =============================
- SET s03=2
- start "" /min "%BATFILES%s03-Starten.bat"
- exit /b
- goto :eof
- :s03stop
- title "Server #3 stoppen"
- set s03=1
- echo =============================
- echo Time: %TIME%
- echo #3 Stop
- copy %FOLDERORIGINAL%#3_starten.txt %FOLDER%#3_starten.txt
- del %FOLDER%#3_neustarten.txt /s /q
- echo =============================
- start "" /min "%BATFILES%s03-Stoppen.bat"
- exit /b
- goto :eof
- :s03neustart
- title "Server #3 neustarten"
- set s03=2
- echo =============================
- echo Time: %TIME%
- echo #3 Neustarten
- copy %FOLDERORIGINAL%#3_neustarten.txt %FOLDER%#3_neustarten.txt
- echo =============================
- start "" /min "%BATFILES%s03-Stoppen.bat"
- timeout 6 /nobreak > nul
- start "" /min "%BATFILES%s03-Starten.bat"
- exit /b
- goto :eof
Weiter geht's im nächsten Post, da dieses Tutorial die maximale Zeichenanzahl sprengt..