Teamspeak Running-Script & Backup

TOP 

Da ich mich auch mal wieder durchgefuchst habe, möchte ich den interessierten Leser an meiner Lösung teilhaben lassen.
In diesem Artikel geht es um:

  • ein Script was überprüft ob der Teamspeak-Server noch online ist
  • ihn ggf. neu startet
  • nach einem Server-Crash auch die pid-File entfernt
  • wie ich meine Server-Settings sichern kann

Mir fällt übrigens gerade auf, dass diese Linux-Howtos auch den Untertitel „Feintuning für Linux-Newbies“ haben könnten, aber was soll’s – auf geht’s. 😉

Als erstes machen wir uns an das Script, welches checkt ob der Server noch online ist und ihn ggf. neu startet. Das sieht so aus (habe ich irgendwo im Netz gefunden):

# == Teamspeak autostarter script =====

# Quietly check for ts process running
ps -ef | grep -v grep | grep -q server_linux

if [[ $? -eq 0 ]] # Note double [[ ]] are important!
then

echo „tsserver.pid found. Teamspeak is running.“
exit 0 # We can exit the script now

else

# Process is *not* running
echo „Teamspeak server not running – starting now…“

# Record current DIR
pwd=$PWD
# PFAD ZU DEINEM TS HIERHER
cd /home/ts/tss2_rc2

# Note, I assume you have the default start script that
# should have been installed:
./teamspeak2-server_startscript start

# This is better than the line below!
# ./server_linux -PID=tsserver2.pid

cd $pwd # Change back to our previous dir

fi

# Check to see if TS has started up
ps -ef | grep -v grep | grep -q server_linux

if [[ $? -eq 0 ]]
then

echo „tsserver.pid found. Startup successful.“

else

echo „Teamspeak still not started – please check server.log“

fi

# == End of Teamspeak script ==========

Das ganze wird in eine neue Datei gepackt, die ich „tscheck.sh“ genannt habe und in einem Ordner deiner Wahl abgelegt wird. Anschließend noch die passenden Rechte setzen, dass die Datei jeder Ausführen kann.

Zum einfachen testen, reicht es wenn wir das Script ausführen und uns das Ergebnis auf dem Bildschirm ansehen.

Anschließend bearbeiten wir die /etc/crontab und fügen einen Eintrag hinzu:

0 * * * * username /pfad/zum/script/tscheck.sh

Das bewirkt, dass der Check jede volle Stunde ausgeführt wird. Als Username ist der User zu wählen, unter dem TS normalerweise läuft. Auf keinen Fall „Root“, da sonst der Server als Root gestartet werden könnte!

Problem Server-Crash

Das obige Script prüft, ob die pid-Datei im TS-Verzeichnis ist. Crasht der Server aus irgendwelchen Gründen, kann es sein, dass die pid-Datei noch vorhanden ist (wird beim Server-Stop normalerweise gelöscht).

Aus diesem Grund habe ich noch ein weiteres Script gebastelt:

# START
cd /home/ts/tss2_rc2/
setarch i386 -X ./teamspeak2-server_startscript stop
rm tsserver2.pid
setarch i386 -X ./teamspeak2-server_startscript start
# END

Das Script wechselt in das TS-Dir, stoppt den Server (wenn er läuft), entfernt die pid-File und startet ihn neu.
Der nachteil ist, dass der Server einmal am Tag down geht. Ich habe diese Lösung allerdings gewählt, da mein Server öfter mal hängen geblieben ist.

Das Script führe ich 5 Uhr morgens aus und sollte somit keinen stören 😉
Wieder bearbeiten wir die /etc/crontab und fügen diesen Eintrag hinzu:

0 5 * * * username /pfad/zum/script/tsrestart.sh

Server Backup-Script

Mit mehreren Server auf einer Maschine, vielen Nutzern und häufigen Änderungen, wird ein Backup nicht nur ratsam, sondern irgendwann auch nötig. Und wer zur Hölle will das alles per Hand machen? Ich nicht, also gibt’s hier noch ein kleines Backup-Script.

Mein „tsbackup.sh“ sieht so aus:

tar -cvzf /root/ts_backup/tsbkp_`date +%y-%m-%d_%H-%M`.tar.gz /home/ts/tss2_rc2/server.dbs /home/ts/tss2_rc2/server.ini

Das war es auch schon wieder. Diese Zeile erzeugt von der server.ini und der server.dbs (wo alle notwendigen Settings deines Servers drin gespeichert werden) eine tar-File inklusive Datum und Time-Stamp.

Nun noch schnell den passenden Crontab-Eintrag:

0 9 * * * root /pfad/zum/script/tsbackup.sh

Und jeden Tag um 9, werden alle Settings übersichtlich gesichert.

Leave a Reply