Sponsor-Board.de
Thema geschlossen  Thema schreiben 

Teamspeak 3 Serverinstall- und Updateskript

Verfasser Nachricht

Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status: offline


Beitrag: #1
Teamspeak 3 Serverinstall- und Updateskript

Hallo zusammen liebe Community,

hier möchte ich gerne mal vorstellen, was ich heute geschrieben habe. Es handelt sich um eine umgeschriebene Version von dem Startscript, welches Teamspeak einem bietet. Dies kann nun nicht nur starten, stoppen und neu starten, sondern auch einen Server installieren bzw. diesen Server updaten.
Es ist noch einiges verbesserungswürdig und ich muss mich für mein ungeschicktes Coding entschuldigen, schließlich programmiere ich noch nicht lange und dann bestimmt kein Shell ;-)

Vorführvideo: [Link: Registrierung erforderlich]

Hier habt ihr die Skripts, die werden bald vielleicht noch zu einem zusammengefasst:

Dies ist für x86, getestet auf Debian 6.0, so weit ich sagen kann funktionstüchtig.
Dateiname: ts3_x86.sh

Code:
#!/bin/bash
# Copyright (c) 2010 TeamSpeak Systems GmbH
# All rights reserved
# Zusätzliche Features von Madmatti
#
# I DO NOT GIVE ANY WARRANTY THAT THIS SCRIPT WILL WORK PROPERLY.
# DO NOT USE THIS SCRIPT IN A COMMERCIAL ENVIRONMENT! ! !
# USING THIS SCRIPT IS ON YOUR OWN RISK
#
# ICH GEBE KEINE GARANTIE, DASS DAS SKRIPT RICHTIG FUNKTIONIERT.
# BENUTZE DIESES SKRIPT AUF KEINEN FALL IN EINER KOMMERZIELLEN UMGEBUNG! ! !
# BENUTZUNG DES SKRIPTS AUF EIGENE GEFAHR
case "$1" in
    start)
        cd /home/ts3/teamspeak3-server_linux-x86
        echo "Instanz wird initialisiert..."
        if [ -e ts3server.pid ]; then
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Der Server läuft bereits. Versuche die Parameter stop oder restart."
                exit 1
            else
                echo "Es wurde ts3server.pid gefunden, aber es laufen keine Server. Server gecrasht?"
                echo "Bitte die logfiles für mehr Infos einsehen."
                rm ts3server.pid
            fi
        fi
        if [ "${UID}" = "0" ]; then
            echo ACHTUNG ! Aus Sicherheitsgründen empfielt Teamspeak: Starte den Server NICHT als Root
            c=1
            while [ "$c" -le 10 ]; do
                echo -n "!"
                sleep 1
                c=$((++c))
            done
            echo "!"
        fi
        echo "Starte den TeamSpeak 3 Server"
        if [ -e "$BINARYNAME" ]; then
            if [ ! -x "$BINARYNAME" ]; then
                echo "${BINARYNAME} ist nicht ausführbar, versuche nun, die Datei ausführbar zu machen."
                chmod u+x "${BINARYNAME}"
            fi
            if [ -x "$BINARYNAME" ]; then
                export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"                    
                "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null &
                echo $! > ts3server.pid
                echo "TeamSpeak 3 Server wurden erfolgreich gestartet, siehe Logfiles für mehr Informationen."
            else
                echo "${BINARNAME} ist nicht ausführbar, Server konnte nicht gestartet werden."
            fi
        else
            echo "Kann die Binaries nicht finden, breche ab."
            exit 2
        fi
    ;;
    stop)
        cd /home/ts3/teamspeak3-server_linux-x86
        echo "Instanz wird gestoppt..."
        if [ -e ts3server.pid ]; then
            echo -n "Stoppe den TeamSpeak 3 Server"
            if ( kill -TERM $(cat ts3server.pid) 2> /dev/null ); then
                c=1
                while [ "$c" -le 300 ]; do
                    if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                        echo -n "."
                        sleep 1
                    else
                        break
                    fi
                    c=$((++c))
                done
            fi
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Server fährt sich nicht sauber herunter - killing"
                kill -KILL $(cat ts3server.pid)
            else
                echo "fertig"
            fi
            rm ts3server.pid
        else
            echo "Es läuft kein Server (ts3server.pid nicht vorhanden)"
            exit 3
        fi
    ;;
    restart)
        $0 stop && $0 start || exit 4
    ;;
    install)
        adduser ts3
        cd /home/ts3
        wget http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.6.1/teamspeak3-server_linux-x86-3.0.6.1.tar.gz -O teamspeak3.tar.gz
        tar xfvz teamspeak3.tar.gz
        chown -R ts3:ts3 teamspeak3-server_linux-x86
        cd /home/ts3/teamspeak3-server_linux-x86
        chmod +x ts3server_startscript.sh ts3server_minimal_runscript.sh ts3server_linux_x86
        su -c "./ts3server_minimal_runscript.sh > data.txt" ts3
        echo "Alle Daten stehen in der Datei data.txt"
        echo "Sollten keine Fehlermeldungen aufgetreten sein, so ist der Server nun fertig installiert!"
        echo "Falls es dir gefallen hat, besuche doch meinen Youtube Kanal unter http://www.youtube.com/user/Madmatti94"
        ;;
    update)
        cp ts3_x86.sh /home/ts3/teamspeak3-server_linux-x86
        echo "Update wird ausgeführt..."
        cd /home/ts3/teamspeak3-server_linux-x86
        su -c "$0 stop" ts3
        cd ..
        wget http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.6.1/teamspeak3-server_linux-x86-3.0.6.1.tar.gz -O teamspeak3.tar.gz
        tar xfvz teamspeak3.tar.gz
        chown -R ts3:ts3 /home/ts3
        cd /home/ts3/teamspeak3-server_linux-x86
        su -c "$0 start" ts3
        echo "Sollten keine Fehlermeldungen aufgetreten sein, so ist der Server nun fertig geupdated!"
        echo "Falls es dir gefallen hat, besuche doch meinen Youtube Kanal unter http://www.youtube.com/user/Madmatti94"
    ;;
    *)
        echo "Falsche Benutzung. Bitte mit einem der folgenden Parameter ausführen: $0 (start/stop/restart/install/update)"
        exit 5
    ;;

esac
exit 0




Dieses ist für amd64, von mir ungetestet, ist aber abgesehen von Pfaden und Downloadlinks identisch.
Dateiname: ts3_amd64.sh

Code:
#!/bin/bash
# Copyright (c) 2010 TeamSpeak Systems GmbH
# All rights reserved
# Zusätzliche Features von Madmatti
#
# I DO NOT GIVE ANY WARRANTY THAT THIS SCRIPT WILL WORK PROPERLY.
# DO NOT USE THIS SCRIPT IN A COMMERCIAL ENVIRONMENT! ! !
# USING THIS SCRIPT IS ON YOUR OWN RISK
#
# ICH GEBE KEINE GARANTIE, DASS DAS SKRIPT RICHTIG FUNKTIONIERT.
# BENUTZE DIESES SKRIPT AUF KEINEN FALL IN EINER KOMMERZIELLEN UMGEBUNG! ! !
# BENUTZUNG DES SKRIPTS AUF EIGENE GEFAHR
case "$1" in
    start)
        cd /home/ts3/teamspeak3-server_linux-amd64
        echo "Instanz wird initialisiert..."
        if [ -e ts3server.pid ]; then
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Der Server läuft bereits. Versuche die Parameter stop oder restart."
                exit 1
            else
                echo "Es wurde ts3server.pid gefunden, aber es laufen keine Server. Server gecrasht?"
                echo "Bitte die logfiles für mehr Infos einsehen."
                rm ts3server.pid
            fi
        fi
        if [ "${UID}" = "0" ]; then
            echo ACHTUNG ! Aus Sicherheitsgründen empfielt Teamspeak: Starte den Server NICHT als Root
            c=1
            while [ "$c" -le 10 ]; do
                echo -n "!"
                sleep 1
                c=$((++c))
            done
            echo "!"
        fi
        echo "Starte den TeamSpeak 3 Server"
        if [ -e "$BINARYNAME" ]; then
            if [ ! -x "$BINARYNAME" ]; then
                echo "${BINARYNAME} ist nicht ausführbar, versuche nun, die Datei ausführbar zu machen."
                chmod u+x "${BINARYNAME}"
            fi
            if [ -x "$BINARYNAME" ]; then
                export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"                    
                "./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null &
                echo $! > ts3server.pid
                echo "TeamSpeak 3 Server wurden erfolgreich gestartet, siehe Logfiles für mehr Informationen."
            else
                echo "${BINARNAME} ist nicht ausführbar, Server konnte nicht gestartet werden."
            fi
        else
            echo "Kann die Binaries nicht finden, breche ab."
            exit 2
        fi
    ;;
    stop)
        cd /home/ts3/teamspeak3-server_linux-amd64
        echo "Instanz wird gestoppt..."
        if [ -e ts3server.pid ]; then
            echo -n "Stoppe den TeamSpeak 3 Server"
            if ( kill -TERM $(cat ts3server.pid) 2> /dev/null ); then
                c=1
                while [ "$c" -le 300 ]; do
                    if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                        echo -n "."
                        sleep 1
                    else
                        break
                    fi
                    c=$((++c))
                done
            fi
            if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
                echo "Server fährt sich nicht sauber herunter - killing"
                kill -KILL $(cat ts3server.pid)
            else
                echo "fertig"
            fi
            rm ts3server.pid
        else
            echo "Es läuft kein Server (ts3server.pid nicht vorhanden)"
            exit 3
        fi
    ;;
    restart)
        $0 stop && $0 start || exit 4
    ;;
    install)
        adduser ts3
        cd /home/ts3
        wget http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.6.1/teamspeak3-server_linux-amd64-3.0.6.1.tar.gz -O teamspeak3.tar.gz
        tar xfvz teamspeak3.tar.gz
        chown -R ts3:ts3 teamspeak3-server_linux-amd64
        cd /home/ts3/teamspeak3-server_linux-amd64
        chmod +x ts3server_startscript.sh ts3server_minimal_runscript.sh ts3server_linux_amd64
        su -c "./ts3server_minimal_runscript.sh > data.txt" ts3
        echo "Alle Daten stehen in der Datei data.txt"
        echo "Sollten keine Fehlermeldungen aufgetreten sein, so ist der Server nun fertig installiert!"
        echo "Falls es dir gefallen hat, besuche doch meinen Youtube Kanal unter http://www.youtube.com/user/Madmatti94"
        ;;
    update)
        cp ts3_amd64.sh /home/ts3/teamspeak3-server_linux-amd64
        echo "Update wird ausgeführt..."
        cd /home/ts3/teamspeak3-server_linux-amd64
        su -c "$0 stop" ts3
        cd ..
        wget http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.6.1/teamspeak3-server_linux-amd64-3.0.6.1.tar.gz -O teamspeak3.tar.gz
        tar xfvz teamspeak3.tar.gz
        chown -R ts3:ts3 /home/ts3
        cd /home/ts3/teamspeak3-server_linux-amd64
        su -c "$0 start" ts3
        echo "Sollten keine Fehlermeldungen aufgetreten sein, so ist der Server nun fertig geupdated!"
        echo "Falls es dir gefallen hat, besuche doch meinen Youtube Kanal unter http://www.youtube.com/user/Madmatti94"
    ;;
    *)
        echo "Falsche Benutzung. Bitte mit einem der folgenden Parameter ausführen: $0 (start/stop/restart/install/update)"
        exit 5
    ;;

esac
exit 0


Hoffe es gefällt euch! Ich mache mich jedoch schonmal auf eine Flut von Verbesserungsvorschlägen gefasst, da ich, wie gesagt, reiner Hobbyprogrammierer bin. Dies ist auch nur eine erste Fassung, es wird sich noch so einiges verändern ;-)

Liebe Grüße
Madmatti



Angehängte Datei(en)
.zip File  Teamspeak Skripts.zip (Größe: 3.4 KB / Downloads: 22)

Homepage: [Link: Registrierung erforderlich] - Haufenweise Tutorials zu Teamspeak und Linux, ebenfalls Let's Plays im Hardcore Modus (nur 1 Leben)

YouTube Kanal: [Link: Registrierung erforderlich]

[Link: Registrierung erforderlich]

Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2012 21:38 von Maurice.

24.11.2012 23:40
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden

Beiträge: 245
Registriert seit: Sep 2010
Status: offline


Beitrag: #2
RE: Teamspeak 3 Serverinstallations- und Updateskript

-

25.11.2012 00:46
 
Alle Beiträge dieses Benutzers finden

Beiträge: 971
Bewertung: 60
Registriert seit: Oct 2010
Status: offline


Beitrag: #3
RE: Teamspeak 3 Serverinstallations- und Updateskript

Twinker schrieb:
Was ich noch einbauen würde wäre das man per Parameter die Version aussuchen kann Wink


Inwiefern wären alte Versionen denn von Vorteil? Ich habe überlegt einfach den Download auf meinen Webspace zu leiten und da immer die neuste Version zur Verfügung zu stellen. Was meinst du?


Homepage: [Link: Registrierung erforderlich] - Haufenweise Tutorials zu Teamspeak und Linux, ebenfalls Let's Plays im Hardcore Modus (nur 1 Leben)

YouTube Kanal: [Link: Registrierung erforderlich]

[Link: Registrierung erforderlich]

25.11.2012 01:18
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden

Beiträge: 245
Registriert seit: Sep 2010
Status: offline


Beitrag: #4
RE: Teamspeak 3 Serverinstallations- und Updateskript

-

25.11.2012 02:16
 
Alle Beiträge dieses Benutzers finden

Beiträge: 57
Bewertung: 0
Registriert seit: Oct 2010
Status: offline


Beitrag: #5
RE: Teamspeak 3 Serverinstallations- und Updateskript

Das Hin- und Herspringen mitten im Skript ist nicht empfehlenswert, jedenfalls nicht mit "cd ..".

Generell solltest du das Ganze ein wenig dynamischer halten. Ob x86 oder amd64, kann man per Parameter bestimmen oder im Skript abfragen, dann hättest du nur noch ein Skript. Oder: (noch besser) über die betriebssysteminternen Funktionen.

Gleiches bei der Updatefunktion. Wenn es ein Update gibt, braucht man ein neues Skript. Das ist nicht sehr sinnvoll. Da krieg ich das per Hand schneller hin. In einem anderen Skript hab ich mal gesehen, dass per Query die aktuelle Version abgefragt wird und dann [Link: Registrierung erforderlich] durchsucht wird, ob es vielleicht was neues gibt. Einfaches entpacken ist dann natürlich nur noch trivial.

Ein letzter Punkt noch:

Code:
# Copyright (c) 2010 TeamSpeak Systems GmbH
# All rights reserved
# Zusätzliche Features von Madmatti


So ein Skript veröffentlicht man als Open Source. Daher kein Copyright, sondern nur einen Hinweis auf Creative Commons.
Und ich glaub kaum, dass die von Teamspeak das Skript geschrieben haben. Und wenn nicht, ist es auch nicht sinnvoll, denen das Copyright abzutreten.

25.11.2012 07:30
 
Alle Beiträge dieses Benutzers finden

Beiträge: 844
Bewertung: 0
Registriert seit: Jun 2011
Status: offline


Beitrag: #6
RE: Teamspeak 3 Serverinstallations- und Updateskript

Das was die anderen sagten + Du solltest sicherstellen, das zumindest die "install" Funktion nur von root ausgeführt wird, ein normaler User würde da Fehlermeldungen bekommen.
Klar, normal hat man bei sowas keine mehreren User (Personen) die Zugriff haben könnten, is aber trotzdem sicherer.

/* edit

Zitat:
chown -R ts3:ts3 teamspeak3-server_linux-amd64

Das würde aber auch vorausetzen, das eine Gruppe "ts3" existiert.
Ein "chown -R ts3:user" oder "chown -R ts3:" sollte normal auch reichen.
*/


Alcazar
(nach Diktat spazierengegangen)

Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2012 16:56 von alcazar.

25.11.2012 16:49
 
Alle Beiträge dieses Benutzers finden

Beiträge: 57
Bewertung: 0
Registriert seit: Oct 2010
Status: offline


Beitrag: #7
RE: Teamspeak 3 Serverinstallations- und Updateskript

Ich würd auch nicht zu viel per Skript übernehmen. Klar, ich kann verstehen, dass du das alles "noobsicher" machen willst, aber das ist echt too much.

Dann lieber ein ordentliches Tutorial, dann lernt der "Noob" noch was dabei.


Ach ja: Ich hatte mal ein Skript mit einer "check"-Funktion. Diese prüfte, ob der TS3-Server läuft und startet ihn, wenn das nicht der Fall ist. Das kommt dann in die crontab und fertig.

Code:
if [ "${UID}" = "0" ]; then

Das würd ich eigentlich eher mit "whoami" machen.

Da sind auch generell ein paar zu viele Dinge drin, die das Teil einfach nur "noobsicher" machen sollen. Linuxtypisch würde ich auch auf ein paar Ausagaben verzichten. Linux meldet sich nämlich eigentlich nur, wenn es Fehler gibt. Wenn ein Befehl problemfrei funktioniert hat, kommt keine Ausgabe. Daran sollte man sich eigentlich orientieren.

25.11.2012 19:42
 
Alle Beiträge dieses Benutzers finden

Beiträge: 844
Bewertung: 0
Registriert seit: Jun 2011
Status: offline


Beitrag: #8
RE: Teamspeak 3 Serverinstall- und Updateskript

Warum sollte man "whoami" verwenden?
Die meisten Scripte die kenne, fragen die UID ab, nich den Namen.
Der root-user muß nich unbedingt "root" heißen, bzw. der Benutzer "root" kann auch eine andere UID als 0 haben.

/* edit
Mad, Du solltest auch ma eine Sicherung einbauen, das die "neuen" Parameter auch nur 1x aufgerufen werden.
Es bringt nich viel wenn man z. b. 2x hintereinander "install" nimmt.
*/


Alcazar
(nach Diktat spazierengegangen)

Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2012 20:27 von alcazar.

26.11.2012 16:42
 
Alle Beiträge dieses Benutzers finden
Thema geschlossen  Thema schreiben 

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren