Ein Schelm wer böses dabei denkt.
Wir leisten uns noch den luxus zwischen 4 und 15 GS pro System, bieten ja auch keine Gameserver für 4 € an.
Ein Schelm wer böses dabei denkt.
Wir leisten uns noch den luxus zwischen 4 und 15 GS pro System, bieten ja auch keine Gameserver für 4 € an.
nun genau kann ich da nicht mitreden, ich habe das Script heute mal just4fun zusammengebaut da mich das mit der Playerzahl gereizt hat. Wir Regeln das anders, haben aber bei knapp 1000 Gameserver eine andere Verarbeitung wie andere.
Unter Windows machen wir die Updateanfrage via Steamcmd im Takt von 15 Minuten. Genauso wie mit den Mods unter Steamcmd. Mich hatte an dem Thema das mit der Playerzahl gereizt.
Nun wenn Du das fest stellen tust, ja gut. Hier war eher die Herrausforderung die Playerzahl. Diese kannst entweder mit zusätzlicher Software checken, oder Du suchst Dir einen Weg um das zu vermeiden, ich halte das vermeiden für wichtiger und versuche erst immer die vorhandenen Mittel zu nutzen, erst wenn das nicht geht, greife ich auf zusätzliche Tool /Pakete zurück.
ZitatZumal du das update ja sowieso über steamcmd fahren müsstest?
ja aber nur dann wenn es wirklich ein Update gibt, nicht im 15 Minutentakt um die Version ab zu fragen.
Ich versuche halt immer alles zu vermeiden was Steamcmd einsetzt außer es ist notwendig, da wenn mehrere Instanzen Steamcmd immer wieder laufen lassen, die Perfomance des Roots unter Linux gut negativ beeinflussen.
Ich habe Dir mal kutz etwas einfaches aufgebaut
#!/bin/bash
function Updatecheck {
sleep 10
screen=$(cat screenlog.0) // Screen auslesen
echo $screen > screen.txt //Screen in datei schreiben
sleep 15 // Zeit geben um was neues in den Screen schreiben zu lassen, damit keine alten EInträge gemacht werden
screen1=$(cat screenlog.0) //sscreen 2 mal auslesen
echo $screen1 > screen1.txt //Screen in 2. Datei schreiben
diff -r screen.txt screen1.txt > screen3.txt //beide Screens miteinander vergleichen
screen2=$(cat screen3.txt)
rm -r screen*.txt
if echo "$screen2" | fgrep -i ": Your server needs to be restarted in order to receive the latest update" > /dev/null 2>&1 ; then
sleep 10
screen=$(cat screenlog.0)
echo $screen > screen.txt
screen -S server11011-X -p 0 -X stuff "status \n"
sleep 15
screen1=$(cat screenlog.0)
echo $screen1 > screen1.txt
diff -r screen.txt screen1.txt > screen3.txt
screen2=$(cat screen3.txt)
rm -r screen*.txt
if echo "$screen2" | fgrep -i "players : 0 humans" > /dev/null 2>&1 ; then
screen -S server11011-X -p 0 -X stuff "quit \n"
fi
fi
sleep 20
Updatecheck
}
Updatecheck
Alles anzeigen
eventl noch aussortieren das bei
if echo "$screen2" | fgrep -i "say : Your server needs to be restarted in order to receive the latest update" > /dev/null 2>&1 ; then
keine weitere Aktion erfolgt.
Natürlich ist das nur eine kleine grobe Richtung und muss verfeinert werden.
das ganze kannst direkt vor dem Serverstart im Startscript aufrufen lassen, dann brauchst ned mal einen Cron dafür. Das letzte Sleep 20 ist die Zeit alle wieviel Minuten er den Check wiederholen soll.
wenn DU direkt in dem Screen status eingibst hats du folgendes im Screenlog stehen
status
hostname: ! GamerzHost.de - Made in Germany !
version : 1.35.7.6/13576 475/6744 secure [G:1:57347]
udp/ip : 82.211.62.199:27015 (public ip: 82.211.62.199)
os : Linux
type : community dedicated
map : de_dust2
players : 0 humans, 0 bots (20/0 max) (hibernating)
so solltest DU auch ohne große zusätzliche Software dann in dem Falle die anwesende Playerzahl auslesen können.
das prüfen nach Updates geht eigentlich einfach einacher, CSGO schreibt in die Screenlog.0 etwas von ... latest updates ... wenn ein Update ansteht. Daher einfach nur mit grep den Screenlog checken. genauso wenn Du im Screen bist kannst Du das auch mit der Playerzahl machen. Sind keine Spieler drauf reicht ein Quit.
na immer sind die Bäume schuld, erzähl das mal den Naturschützern .......
Vieleicht wäre das was für CF bei der nächsten VErsion, ist kein Lizenzkey vorhanden oder ungültig sollte eine Info aufgehen mit der Möglichkeit zur EIngabe des Keys.
Zitat von HosterstreamWie wäre es mit einer Art Standby Lösung...TS 3 Server wird bestellt mit z.B. 50 Slots ...
Nach 2-3 Wochen geht plötzlich schon niemand mehr online...
Server wird automatisch auf z.B. 5 Slot reduziert.
zu der Sache, ich habe mich in letzter Zeit mit Teamspeak sehr oft unterhalten, da wurde mir unter anderen auch mitgeteilt das Hoster beim runterschrauben der Slotzahl bei Inaktivität oder mangelnder Nutzung auf einen vom Kunden gemieteten und gezahlten TS gegen die Lizenzregeln verstoße. Dynamische Slotzahl Regulierung nennen die so etwas glaube ich. Muss wo schon öfters mal vorgekommen sein.
Also lieber noch mal bei denen Anfragen, bevor hier jemand wegen Mangels TS Lizenz schließen muss.
damit habe ich mich jetzt weniger beschäftigt, ich habe mich mehr mit dem PDNS Hauseigenen Interface beschäftigt und diese Abläufe umgesetzt. Meines Wissens gibt es eine Api für die Nutzung unter Plesk bind, habe mir diese aber nicht weiter angeschaut. Wie aber schon gesagt habe ich diesen Bug nur beim löschen einer Zone bemerkt und das auch nur weil mich ein netter Mensch welcher PDNS nutzt drauf aufmerksam gemacht hat, da er das selbige Problem hat.
Eingesetzt haben wir es aktuell als TSDNS Server wo die Kunden halt via Mausklick Ihre Subdomains eintragen können, und der SRV EIntrag und A Eintrag via Mausklick umgesetzt werden. Funktioniert seit bestehen anstandslos. Mit der Ticketersparnis hat sich schon die Umsetzung gelohnt.
Aber zurück zum eigentlichen Beitrag bitte.
Powerdns syncronisiert wenn die serial in dem soa Eintrag sich geändert hat und zur serial im Domaineintrag unterschiedlich ist. Wird die Domain auf dem Master gelöscht gibt es keine Unterschiedlichen Einträge mehr und es bleiben immer Reste der Domain auf den Slaves. Das führt normal zu keiner Komplikation. Ich weiß aber nicht ob es zu Problemen führen kann wenn man eine Domain löscht und wieder neu registriert, daher ist es mir lieber wir halten die Slaves auch sauber.
ITHosting Kraft
Dir mal Danke, die Änderungen sind ja reine SQl Abfragen daher relativ Simple, man muss nur verstehen auf welcher Grundlage die jeweiligen Slaves eine Snycronisierung vornehmen, mit einer einfachen Änderung des Eintrages nicht. dazu muss nach jeder Änderung der SOA Eintrag angepasst werden, nach der Anpassung machen dann auch die Slaves das Update. Beim Löschen wurde noch festgestellt das Power DNS aus dem Slaves nichts mehr löscht, was auch bei Poweradmin der Fall ist, daher wurde die Löschung entsprechend angepasst, das das Modul die eingetragenen Slaves gleich mit verarbeitet.
Domain Api: die Api ist nun mal von den jeweiligen Provider abhängig, über welchen Ihr die Domain bucht. Ich werde hier die Api von Internet X zubauen, welche sich aber bei Bedarf austauschen lässt, nur der Funktionsaufruf muss der gleiche bleiben.
Jap, nun wie wichtig es ist steht mal nicht zur Frage, allerdings nutzt nicht jeder Plesk etc. und wir möchten dem Kunden die Möglichkeit geben seine DNS selbst und Unabhängig vom Support anpassen zu können.
Eigentlich habe ich mit dem Modul angefangen da Teamspeak den TSDNS Support einstellt bzw. eingestellt hat. Sprich für die vorhandene Software wird es keine Updates mehr geben. Da wir daher gerade Erfahrung mit PowerDNS und deren Bugs gesammelt haben, macht es Sinn da gleich weiter zumachen, bevor die Erfahrungen nicht mehr frisch sind.
Da ich aktuell ein meiner wenigen Freizeit ein Modul für PowerDNS schreibe und der Adminbereich so gut wie steht, frage ich Euch welche der vielen möglichen Einträge Ihr als am wichtigsten erachtet. Also
A
AAAA
NS
CNAME
MX
SRV
TXT
usw.
nun wir haben es seit 5 Jahren so das der Gameserver immer beim GS Serversstart die Dateien packt und der Fastdl Server immer nur alle 5 Min die bz2 syncronisiert. Zusätzlich wird beim Serverstart eine fastdl.cfg generiert welche beim Serverstart geladen wird. damit hat der Kunde dann überhaupt nix mehr zu tun.
eben so
Geht mit Sicherheit, ich habe mich aber nie damit beschäftig, da die Methode völlig ausreichend ist. Wer mit Batches arbeitet sollte sich auch mit call, goto und ähnlichen beschäftigen, damit kann man äußerst sinnvolle funktionen bauen. Wie Steamupdater, Auto-Modupdater etc.
Ich hab Dir hier ein kleines TUT geschrieben
http://teklab.de/support/topic…n-windows-deamon/?p=37626
Da es immer wieder Beiträge gibt, wo User mit Windows haben, anbei mal die wichtigsten Sachen.
Wie setze ich in einer Batch Parameter
@echo off
setlocal enabledelayedexpansion
SET var=%~dp0
SET var1=%1%
SET var2=%2%
SET var3=%3%
SET var4=%4%
SET var5=%5%
SET var6=%6%
SET var7=%7%
SET var8=%8%
Alles anzeigen
somit kann ich den Gameserver mit z.b.
start.bat gsip gsport gsplayer , %var1% ist dann die IP, %var2% der Port, %var3% die Playerzahl usw.
Wie lese ich die Pid eines Gameserverprozesses aus:
Beispiel für Ark:
SET line=%var%
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:\=\\
ENDLOCAL
set vara=!line:\=\\!
for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(ExecutablePath^="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe"^) get processid /value`) do (
set PID=%%a
)
Wie stoppe ich den Gameserver anhand der oben gewonnenen PID:
Es gibt 3 Möglichkeiten:
oder
oder
SET line=%var%
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:\=\\
ENDLOCAL
set vara=!line:\=\\!
WMIC PROCESS WHERE ExecutablePath="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe" delete
Da Spiele wie Ark oder Rust beim beenden noch Daten in die Map schreiben müssen sollte erst die Methode 1 gewählt werden. Danach macht man mit
5 Sekunden Pause und schiebt um sicher zu gehen noch eine der letzten beiden Möglichkeiten hinterher.
Start eines Gameservers:
set /A var9=%var2% + 1 // Queryport berechnen
set /A var10=%var2% + 5 //Rconport berechnen
cd %var%
start /REALTIME ShooterGameServer.exe "%var%ShooterGame\ShooterGame.uproject" "TheCenter?MULTIHOME=%var1%?Port=%var2%?QueryPort=%var9%?RCONPort=%var10%?MaxPlayers=%var3%?bRawSockets?listen?" -nosteamclient -servergamelog -game -server -log
ZitatDas einzigste was wir als "kleine und mittlere Hoster" bewirken ist einen gewissen Preisdruck bei den großen das war's dann aber auch...
Der Preisdruck, das war mal, schaust Du dir die aktuellen Preise an, machen die den....., Man sollte sich die Frage stellen ob es am Preis liegt. Schaust Du dir unsere Preise an, sicherlich nicht.
Zitathast du denn am Release etwas vom Kuchen ab bekommen???
jap, jede Menge
ZitatOb man die Server Versionen bei einem update restarten muss? ich kann es nicht sagen aber ich wage es zu bezweifeln das man diese bei fast jedem update neu starten muss...
Vielleicht kannst du ja was dazu sagen? sofern du Windows in der Server Version verwendest...
Es gibt Fernwartungstools, welche den Job machen und das in der Nacht. Wird Neustart Notwendig, kann der in der Nacht passieren, hat man dazu die Startscripte so aufgebaut, das diese bei Start einen Link im Autostart setzen und beim Stoppen wieder löschen, merken es die meissten Kunden auch kaum.