Angepinnt TeamSpeak 3 Server Autostart und Service Skript (LSBInitScript)

    TeamSpeak 3 Server Autostart und Service Skript (LSBInitScript)

    Hallo,

    heute stelle ich euch mein "init.d" Skript für euren TeamSpeak 3 Server vor. Diese Skripte werden auch oftmals "LSBInitScript" genannt.

    Was macht bzw. kann das Skript?
    • Beim Hochfahren des physikalischen Servers, worauf die TeamSpeak Instanz installiert ist, wird der TeamSpeak Server automatisch gestartet
    • Beim Herunterfahren des physikalischen Servers, wird der TeamSpeak 3 Server ordnungsgemäß gestoppt
    • Das Skript nutzt das "ts3server_startscript.sh" Skript der jeweiligen Instanz, um die Befehle aus zu führen
    • Folgende Befehle sind möglich:
      • Starten des TeamSpeak 3 Servers

        Quellcode

        1. service ts3server start

      • Stoppen des TeamSpeak 3 Servers

        Quellcode

        1. service ts3server stop

      • Neustart des TeamSpeak 3 Servers

        Quellcode

        1. service ts3server restart

      • Status des TeamSpeak 3 Servers

        Quellcode

        1. service ts3server status

    Hinweis: Der Befehl "service" ist nur für den root Benutzer verfügbar.

    Auf folgenden Systemen wurde es aktuell erfolgreich getestet:
    • Debian Wheezy 7.6
    Wenn ihr es benutzen wollt, müsst ihr folgendes machen:
    1. Nachfolgenden Quellcode kopieren und auf dem Server unter "/etc/init.d/ts3server" speichern:

      Shell-Script

      1. #!/bin/sh
      2. ### BEGIN INIT INFO
      3. # Provides: ts3server
      4. # Required-Start: $local_fs $remote_fs $network $syslog $named
      5. # Required-Stop: $local_fs $remote_fs $network $syslog $named
      6. # Default-Start: 2 3 4 5
      7. # Default-Stop: 0 1 6
      8. # X-Interactive: true
      9. # Short-Description: TeamSpeak 3 server
      10. # Description: Start the TeamSpeak 3 server and associated services
      11. # This script will start TeamSpeak 3 server, and possibly all associated services.
      12. ### END INIT INFO
      13. DESC="voice server"
      14. NAME=ts3server
      15. USER="teamspeak"
      16. SCRIPTNAME="${0##*/}"
      17. SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
      18. ENV="env -i LANG=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      19. case "$1" in
      20. start)
      21. echo "Starting $DESC" "$NAME"
      22. echo
      23. su - $USER -c "./ts3server_startscript.sh start"
      24. ;;
      25. stop)
      26. echo "Stopping $DESC" "$NAME"
      27. echo
      28. su - $USER -c "./ts3server_startscript.sh stop"
      29. ;;
      30. status)
      31. su - $USER -c "./ts3server_startscript.sh status"
      32. exit $?
      33. ;;
      34. restart)
      35. echo "Restarting $DESC" "$NAME"
      36. echo
      37. su - $USER -c "./ts3server_startscript.sh stop"
      38. su - $USER -c "./ts3server_startscript.sh start"
      39. ;;
      40. *)
      41. echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
      42. exit 3
      43. ;;
      44. esac
      45. exit 0

    2. Skript anpassen

      Quellcode

      1. vim /etc/init.d/ts3server

      USER="teamspeak" => Hier muss der Linux User gesetzt werden, dem die Server-Dateien gehören. Das ts3server_startscript.sh muss hierfür dann im root des Home-Verzeichnisses des entsprechenden Users liegen. Der Rest wird NICHT angefasst!
    3. Rechte des Skripts anpassen

      Quellcode

      1. chmod 0755 /etc/init.d/ts3server

    4. Skript installieren

      Quellcode

      1. cd /etc/init.d/ && insserv ts3server && cd - > /dev/null
    5. Skript testen

      Quellcode

      1. /etc/init.d/ts3server status

      Wenn der Befehl "service" vorhanden ist, könnt ihr natürlich auch folgendes ausführen:

      Quellcode

      1. service ts3server status
    Ich wünsche euch viel Spaß damit! Wenn ihr Fragen oder Probleme habt, kommt einfach auf mich zu. ;)

    CHANGELOG schrieb:

    Legende:
    + Hinzugefügt
    - Entfernt
    * Geändert/Problem behoben
    ! Hinweis/Warnung

    === 2014-09-02 - Sebbo ===
    - Alles entfernt
    + Beispiel LSBInitScript als Vorlage genommen und es für einen TeamSpeak Server angepasst
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Das Installieren funktioniert nur auf Debian basierten Distributationen, da jede Distributation ein leicht anderes Verfahren hierfür hat. Wenn es den Befehl "insserv" aber auch auf anderen Distributationen gibt, dann sollte das Skript auch dort funktionieren.

    Der Autostart-Mechanismus sollte aber auf allen Linux Distributationen funktionieren.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    @Ambroseo Du kannst den Server einfach in den "Autostart" Ordner reinpacken und dann sollte er nach jedem Neustart automatisch starten. Ein Skript zum Starten, Stoppen etc. macht bei Windows meiner Meinung nach keinen Sinn, da du den Prozess nur beenden musst.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Ich habe so eben mal das Skript aktualisiert und den ersten Beitrag aktualisiert. :)

    Es funktioniert auf einem Debian Wheezy 7.6 einwandfrei - habe es getestet. Würde mich über andere Test-Ergebnisse sehr freuen! :)

    Was auch sehr cool wäre ist, wenn wir es so weiter entwickeln, dass es immer besser und universeller wird. Bin auf euer Feedback gespannt! ;)
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Hi

    ich bin noch ein anfAnger beim arbeiten mit dem Debian Server und habe gleich zwei Probleme.

    1. Ich bekomme folgende Fehlermeldung beim installieren. Habe einen Debian 7.6 vServer

    Quellcode

    1. [email protected]:/home/ts3# cd /etc/init.d/ && insserv ts3server && cd - > /dev/null
    2. insserv: warning: script 'K03iptables' missing LSB tags and overrides
    3. insserv: warning: script 'iptables' missing LSB tags and overrides
    4. insserv: warning: script 'wide-dhcpv6-client' missing LSB tags and overrides


    2. Meine Installation liegt in /home/ts3/teamspeak3-server_linux-amd64. Muss die Installation stattdessen direkt im Ordner ts3 liegen?

    Quellcode

    1. [email protected]:/etc/init.d# service ts3server status
    2. -su: ./ts3server_startscript.sh: No such file or directory



    vielleicht könnt ihr mir ja helfen.

    chill3rman schrieb:

    1. Ich bekomme folgende Fehlermeldung beim installieren. Habe einen Debian 7.6 vServer

    Quellcode

    1. [email protected]:/home/ts3# cd /etc/init.d/ && insserv ts3server && cd - > /dev/null
    2. insserv: warning: script 'K03iptables' missing LSB tags and overrides
    3. insserv: warning: script 'iptables' missing LSB tags and overrides
    4. insserv: warning: script 'wide-dhcpv6-client' missing LSB tags and overrides

    Sehr interessant! 8|

    Dieser Fehler bedeutet eigentlich, dass im Skript kein Header gegeben ist und daher kann es nicht eingerichtet werden. Sind in deiner Datei die folgenden Zeilen GANZ OBEN drin?

    Shell-Script

    1. #!/bin/sh
    2. ### BEGIN INIT INFO
    3. # Provides: ts3server
    4. # Required-Start: $local_fs $remote_fs $network $syslog $named
    5. # Required-Stop: $local_fs $remote_fs $network $syslog $named
    6. # Default-Start: 2 3 4 5
    7. # Default-Stop: 0 1 6
    8. # X-Interactive: true
    9. # Short-Description: TeamSpeak 3 server
    10. # Description: Start the TeamSpeak 3 server and associated services
    11. # This script will start TeamSpeak 3 server, and possibly all associated services.
    12. ### END INIT INFO​


    chill3rman schrieb:

    2. Meine Installation liegt in /home/ts3/teamspeak3-server_linux-amd64. Muss die Installation stattdessen direkt im Ordner ts3 liegen?

    Quellcode

    1. [email protected]:/etc/init.d# service ts3server status
    2. -su: ./ts3server_startscript.sh: No such file or directory

    Ja, okay. Solange das Skript aufgrund des 1. Fehlers nicht installiert/eingerichtet werden konnte, kann es natürlich auch nicht benutzt werden. ;)

    Bevor du den Befehl mit "cd [...] insserv" und so weiter ausführst, musst du die Datei erst noch anpassen. Öffne die Datei mit einem Text-Editor deiner Wahl (z.B. vi, vim oder nano) und ändere folgenden Inhalt...

    Quellcode

    1. ./ts3server_startscript.sh

    zu diesem um:

    Quellcode

    1. ./teamspeak3-server_linux-amd64/ts3server_startscript.sh


    Du musst quasi vor jedem Skript-Aufruf noch "teamspeak3-server_linux-amd64/" hinzufügen, weil du deinen TS Server in einem Unterordner installiert hast und nicht im root-Verzeichnis des Users.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Stimmen die Rechte der Datei denn? Sie müsste 0755 haben. Das kannst du dir mit folgendem Befehl dir anzeigen lassen:

    Quellcode

    1. ​stat /etc/init.d/ts3server


    Der nachfolgende setzt den entsprechenden Wert:

    Sebbo schrieb:

    chmod 0755 /etc/init.d/ts3server
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu

    Quellcode

    1. File: `/etc/init.d/ts3server'
    2. Size: 1369 Blocks: 8 IO Block: 4096 regular file
    3. Device: 19h/25d Inode: 72778485 Links: 1
    4. Access: (0755/-rwxr-xr-x) Uid: ( 1002/ ts3) Gid: ( 1002/ ts3)
    5. Access: 2014-09-20 15:57:15.000000000 +0200
    6. Modify: 2014-09-20 15:56:36.000000000 +0200
    7. Change: 2014-09-20 15:56:51.000000000 +0200
    8. Birth: -


    Habe jetzt auch schon einmal mit chown und chgrp für verschiedene benutzer getestet das zu installieren. Hat sowohl für root als auch für ts3 (als benutzer) nicht funktioniert.
    Ich habe das file einfach nur runtergeladen von hier und in das directory /etc/init.d/ gepackt.

    Shell-Script

    1. #!/bin/sh
    2. ### BEGIN INIT INFO
    3. # Provides: ts3server
    4. # Required-Start: $local_fs $remote_fs $network $syslog $named
    5. # Required-Stop: $local_fs $remote_fs $network $syslog $named
    6. # Default-Start: 2 3 4 5
    7. # Default-Stop: 0 1 6
    8. # X-Interactive: true
    9. # Short-Description: TeamSpeak 3 server
    10. # Description: Start the TeamSpeak 3 server and associated services
    11. # This script will start TeamSpeak 3 server, and possibly all associated services.
    12. ### END INIT INFO
    13. DESC="voice server"
    14. NAME=ts3server
    15. USER="ts3"
    16. SCRIPTNAME="${0##*/}"
    17. SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
    18. ENV="env -i LANG=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    19. case "$1" in
    20. start)
    21. echo "Starting $DESC" "$NAME"
    22. echo
    23. su - $USER -c "./teamspeak3-server_linux-amd64/ts3server_startscript.sh start"
    24. ;;
    25. stop)
    26. echo "Stopping $DESC" "$NAME"
    27. echo
    28. su - $USER -c "./teamspeak3-server_linux-amd64/ts3server_startscript.sh stop"
    29. ;;
    30. status)
    31. su - $USER -c "./teamspeak3-server_linux-amd64/ts3server_startscript.sh status"
    32. exit $?
    33. ;;
    34. restart)
    35. echo "Restarting $DESC" "$NAME"
    36. echo
    37. su - $USER -c "./teamspeak3-server_linux-amd64/ts3server_startscript.sh stop"
    38. su - $USER -c "./teamspeak3-server_linux-amd64/ts3server_startscript.sh start"
    39. ;;
    40. *)
    41. echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
    42. exit 3
    43. ;;
    44. esac
    45. exit 0
    Okay, das sollte aber eigentlich funktionieren. Ich habe das exakt gleiche System bei mir und ich krieg gar keine Fehlermeldungen bzw. Warnungen.

    Kannst du den "insserv" Befehl bitte nochmal ausführen und dann testen, ob das Skript funktioniert?

    Quellcode

    1. ​cd /etc/init.d/ && insserv ts3server && cd - > /dev/null

    Quellcode

    1. ​service ts3server status


    Weil jetzt hast du den Pfad im Skript ja angepasst, daher sollte wenigstens die Funktionalität gegeben sein und er dir zurück melden, ob er läuft oder nicht. Wenn die Warnungen beim insserv Befehl wieder kommen, ignoriere die einfach erstmal. Das Skripte sollte dennoch funktionieren. Ich kann mir nur gerade nicht erklären, warum du die Meldung kriegst und ich nicht... ?(
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Es wird immer lustiger :D

    Also angepasst hatte ich die Datei ja und nun habe ich den "insserv" Befehl erneut ausgeführt (natürlich wieder mit Fehlern).
    Zunächst hab ich den Server manuell gestartet und konnte per Client auch drauf joinen. Dann habe ich "reboot" eingegeben, um den Server neu zu starten und das Skript zu testen.

    Als er wieder erreichbar war habe ich folgenden Befehl eingegeben

    Quellcode

    1. service ts3server status

    Als anwort habe ich "Server is running" erhalten.
    Wenn ich jetzt aber versuche per Client zu connecten komme ich nicht drauf.

    Ich nutze normaler weise ein Admin-Tool namens YaTQa (
    TeamSpeak Addons
    )
    Dort kann ich mich per Server Admin Query einloggen und Stats vom server sehen. Das lustige hier ist, ich kann mich einwählen sehe dort dann aber das der TS3-Server nicht an ist obwohl mir
    die Debian-Konsole "Server is running" antwortet.

    Das Skript scheint für mich also nicht so zu funktionieren wie es soll. Erst nach manuellem restart vom TS kann ich per Client drauf.

    Ich verzweifel gerade :D
    Ps. Unglaublich vielen Dank für die ganze Hilfe Sebbo
    Wenn ich das jetzt auf die schnelle richtig sehe zeigt dir das Script nur an ob die Instanze läuft und nicht ob ein Virtueller Server läuft.

    Du musst zwischen diesen beiden Sachen unterscheiden.

    Eine Instanze ist grob gesagt der Root Server der Teamspeak Server auf denen viele Virtuelle Server installiert werden. Der Query ist dabei der Root des Servers und die Server Admins dann die Admins des jeweiligen Virtuellen Servers.

    Das heist es kann sein das die Instanze läuft, dein Virtueller Teamspeak Server aber nicht. Und YATQA wird sich bei dir vermutlich auf die Instanze mittels Server Query einloggen(da du denke ich mal den serveradmin als Query Account genommen hast) und somit funktioniert dein YATQA, dein Virtueller Server jedoch nicht(wenn du dich versuchst drauf einzuloggen).
    Kannst du dich überhaupt mit dem Client verbinden, wenn du das offizielle ts3server_startscript.sh mal her nimmst und es damit durchführst?

    Also...

    Quellcode

    1. ./ts3server_startscript.sh restart

    ...sollte ja dann zum selben Ergebnis führen, wie...

    Quellcode

    1. service ts3server restart

    ...oder nicht?

    Ansonsten versuche es mal mit diesem Skript:

    Quellcode

    1. ​#!/bin/sh
    2. ### BEGIN INIT INFO
    3. # Provides: ts3server
    4. # Required-Start: $local_fs $remote_fs $network $syslog $named
    5. # Required-Stop: $local_fs $remote_fs $network $syslog $named
    6. # Default-Start: 2 3 4 5
    7. # Default-Stop: 0 1 6
    8. # X-Interactive: true
    9. # Short-Description: TeamSpeak 3 server
    10. # Description: Start the TeamSpeak 3 server and associated services
    11. # This script will start TeamSpeak 3 server, and possibly all associated services.
    12. ### END INIT INFO
    13. DESC="voice server"
    14. NAME=ts3server
    15. USER="ts3"
    16. SCRIPTNAME="${0##*/}"
    17. SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
    18. ENV="env -i LANG=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    19. case "$1" in
    20. start)
    21. echo "Starting $DESC" "$NAME"
    22. echo
    23. su - $USER -c "cd teamspeak3-server_linux-amd64/ && ./ts3server_startscript.sh start && cd - > /dev/null"
    24. ;;
    25. stop)
    26. echo "Stopping $DESC" "$NAME"
    27. echo
    28. su - $USER -c "cd teamspeak3-server_linux-amd64/ && ./ts3server_startscript.sh stop && cd - > /dev/null"
    29. ;;
    30. status)
    31. su - $USER -c "cd teamspeak3-server_linux-amd64/ && ./ts3server_startscript.sh status && cd - > /dev/null"
    32. exit $?
    33. ;;
    34. restart)
    35. echo "Restarting $DESC" "$NAME"
    36. echo
    37. su - $USER -c "cd teamspeak3-server_linux-amd64/ && ./ts3server_startscript.sh stop && cd - > /dev/null"
    38. su - $USER -c "cd teamspeak3-server_linux-amd64/ && ./ts3server_startscript.sh start && cd - > /dev/null"
    39. ;;
    40. *)
    41. echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
    42. exit 3
    43. ;;
    44. esac
    45. exit 0

    Denke dran: insserv nochmal durchführen!
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu

    chill3rman schrieb:

    Vielleicht hast du ja diese oder die nächste Woche mal Zeit kurz mit mir in einem TS zu sprechen.

    Gute Idee. :D

    Am Freitag Nachmittag so gegen 16 Uhr könnte ich es mir mal anschauen, wenn du willst. :)
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu