Gehaxelts Blog

IT-Security & Hacking

Teamspeak Server Backup Script

Da ich letztens meinen Teamspeak3 Server gekillt habe, indem die Datenbank gecrasht ist, habe ich fix ein Script geschrieben, was stündlich Backups des Teamspeak3-Servers erstellt.

Das möchte ich natürlich nicht nur für mich behalten halten, sondern mit euch teilen ;)

Voraussetzungen

Wie immer müssen wir zunächst einige Programme installieren:

sudo apt-get install git-core crontab expect telnet

Nachdem alles fertig ist, können wir die meine Scripte übernehmen und anpassen.

Download & Konfiguration

Ich habe die beiden Scripte in ein Unterverzeichnis (backup/) im Teamspeak-Installationordner gepackt. Da man für das Einrichten eines Teamspeak-Servers unter Linux grundlegende Linuxkenntnisse braucht, erläute ich hier nicht weiter wie man den Ordner erstellt.

Das folgende Script dient zur Kommunikation zwischen Teamspeak3 Server und dem Backup-System, in dem es die Einstellungen des Server in eine Datei und einem Git-Repository abspeichert. Das ganze basiert auf dem Programm “expect”, mit dem man interactive Shell-Scripte schreiben kann:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/expect -f

set passwd "serveradmin-passwd"
set sid 1
spawn telnet 127.0.0.1 10011
expect "command."
send "login serveradmin $passwd\n"
expect "error id=0 msg=ok"
send "use sid=$sid\n"
expect "error id=0 msg=ok"
send "serversnapshotcreate\n"
expect -re "hash(.*)"
exec echo "hash$expect_out(1,string)" > lastdump.ts3
expect "error id=0 msg=ok"
send "quit\n"

Die Variable “passwd” ganz oben muss noch entsprechend eurem “serveradmin”-Passwort angepasst werden. Ggf. musst die Server-ID (use sid=1) angepasst werden.

Das speichern wir als Datei mit dem Namen “dump.exp.sh” ab.

Dann folgt nur noch das main-Script, welches alles “steuert” bzw. ausführt. Dieses Script speichern wir als “backup.sh” ab:

1
2
3
4
5
#!/bin/bash

/usr/bin/expect ./dump.exp.sh > /dev/null
git add . > /dev/null
git commit -m "Backup from $(date)" > /dev/null

Wenn man möchte das das Backup-Script stündlich ausgeführt wird, dann muss man sein crontab bearbeiten. Dazu ruft man das folgende Kommando auf:

crontab -e

Man fügt dort eine Zeile ein, welche so ähnlich aussieht, wie die meine (ggf. müssen Pfade angepasst werden)

@hourly cd /home/teamspeak/teamspeak3-server_linux-amd64/backup && /bin/bash ./backup.sh

Was machen diese Scripte?

Das erste Script interagiert über telnet mit dem Teamspeak3 Server, indem es sich erst einloggt, dann den entsprechenden virtuellen Server setzt (use sid=1), danach einen Dump der Einstellungen erstellt und diesen in die Datei “lastdump.ts3” umleitet.

Das zweite Script führt das erste Script aus und schiebt die Änderungen am Dump in ein Git-Repository, damit wir im Zweifel auf ältere Einstellungen zurückgreifen können.

Einstellungen wieder einspielen

Laut Teamspeak-Documentation kann man die exportierten Einstellungen wieder importieren, in dem man folgende Schritte ausführt:

1
2
3
4
telnet 127.0.0.1 10011
login serveradmin passwd
use sid=1
serversnapshotdeploy EINSTELLUNGEN

Fazit

Ihr habt so nun einen Teamspeak3 Server dessen Einstellungen stündlich in eine Datei bzw. ein Git-Repository exportiert werden, sodass ihr bei einem Crash den Server relativ einfach wiederherstellen können solltet.

Bitte verzeiht mir ggf. Rechtschreibfehler, aber es ist rel. spät und ich bin leicht angetrunken.

Gruß

gehaxelt

Linux, Server

« [Uni] Aufwandsabschätzung von Programmen Javascript obfuscaten »