Programm beim booten automatisch starten (DEBIAN)

Von: , Frage gestellt am Sa, 17. Dez 2005

Hallo,

ich möchte ein Programm (in meinem Fall TeamSpeakServer) beim booten von Debian 3.1 automatisch starten.

Wie kann ich dies realisieren?

Vielen Dank im Voraus!!!

Gruß
Thomas

14 Antworten zu dieser Frage

  1. Antwort von nach 12 Minuten 0 hilfreich
    Re: Programm beim booten automatisch starten (DEBI

    Moien ich möchte ein Programm (in meinem Fall TeamSpeakServer) beim
    booten von Debian 3.1 automatisch starten.
    Kuck mal ins Verzeichnis /etc/rc2.d. Pass eines der Skripts an.

    cu

    • Antwort von nach 2 Stunden 0 hilfreich
      Re^2: Programm beim booten automatisch starten (DE

      Moien

      Hi, Kuck mal ins Verzeichnis /etc/rc2.d. Pass eines der Skripts
      an.
      habe mir mal das Skript von Webmin genommen, welches so aussieht (geht noch weiter, doch unten werden die hier angegebenen Werte als Variablen weiterbenutzt-->vermutlich keine Änderungen nötig!?):

      PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
      DAEMON=/usr/share/webmin/miniserv.pl
      DAEMONCONF=/etc/webmin/miniserv.conf
      NAME=ts2_rc2           #schon angepasst
      DESC=TeamSpeakServer   #schon angepasst
      


      NAME
      und
      DESC
      habe ich schon verstanden, doch die 3 Zeilen oben bedeuten ja, dass in diesen ganzen Pfaden etwas liegen muss, doch was?

      Muss ich jetzt den Kompletten Programmordner in all die Verzeichnisse kopieren?
      bei DAEMON ist hier eine PERL-Datei angegeben, welche es in meinem Programmordner garnicht gibt --> also für TeamSpeak.
      Eine CONF-Datei ist ebenfalls nicht vorhanden...

      Eigentlich gibt es in dem Ordner eine Datei die
      teamspeak2-server_startscript
      heißt, welche ich mit den Parametern start|stop|restart aufrufen kann.

      Ist es nicht möglich diesen Befehl irgendwie einfach beim hochfahren einzubinden?

      Vielleicht seh' ich das zu einfach (Windows-geschädigt...)!?

      Vielen Dank im Voraus

      Gruß
      Thomas
      cu

      • Antwort von nach 8 Stunden 0 hilfreich
        Re^3: Programm beim booten automatisch starten (DE

        Hallo,

        Teamspeak server hat ja eingenes start-stop-Skript dabei. Kopiere das einfach nach /etc/init.d/ und lege dann mit update-rc.de (siehe manpage) die entsprechenden symlinks an, die dafür sorgen, dass es beim booten gestart wird und beim shutdown beendet wird.

        Grüße,
        Moritz

        • Antwort von nach 2 Tagen 0 hilfreich
          Re^4: Programm beim booten automatisch starten (DE

          Hallo, Teamspeak server hat ja eingenes start-stop-Skript dabei.
          Das stimmt, das heißt in diesem Falle

          teamspeak2-server_startscript
          Kopiere das einfach nach /etc/init.d/ und lege dann mit
          update-rc.de (siehe manpage) die entsprechenden symlinks an,
          die dafür sorgen, dass es beim booten gestart wird und beim
          shutdown beendet wird.
          ...gut, soweit hab ichs hinbekommen.

          Doch noch 2 Probleme:

          1. Bekomme ich jedes Mal, wenn ich den Rechner hochfahre die Warnung, dass man das Programmm nicht als ROOT starten sollte.
          Folglich habe ich mal den Besitzer der Skriptdatei(en) geändert, doch das half nichts --> Wie kann ich das Skript als (speziell dafür angelegter Benutzer) 'tss' (in der gruppe 'teamspeak') dieses Skript starten?

          2. Kommt ebenfalls bei jedem Bootvorgang der Hinweis, dass die Datei
          linux_server
          (die im entpackten Verzeichnis vorhanden ist) nicht gefunden werden konnte. Wie kann ich das Skript so anpassen, dass er die Datei findet oder wo muss ich die Datei hinlegen dass er sie findet (kann sie ja nicht einfach in /etc/init.d/ legen (((oder?))))?

          Hier das Skript (für evtl. Tipps):

          !!! Ich möchte hiermit gegen keine Rechte verstoßen o.ä., es geht lediglich um die Lösung meines Problems !!!
          #! /bin/bash
          # Copyright (c) 2004 TeamSpeak team   All rights reserved.
          #
          # Author: pwk.linuxfan 2004
          #
          case "$1" in
          start)
          if [ -e tsserver2.pid ]; then
          echo "tsserver2.pid already exists...server already started ?";
          echo "If you are sure the server is not running, delete tsserver2.pid"
          exit 1
          else
          if [ "$UID" = "0" ]; then
          echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
          for c in $(seq 1 10); do
          echo -n "!"
          sleep 1
          done
          echo !
          fi
          echo "starting the teamspeak2 server"
          if [ -e server_linux ]; then
          if [ ! -x server_linux ]; then
          echo "server_linux is not executable, trying to set it"
          chmod u+x server_linux
          fi
          if [ -x server_linux ]; then
          ./server_linux -PID=tsserver2.pid
          else
          echo "server_linux is not executable, fix this"
          exit 4
          fi
          else
          echo "Couldnt find server_linux"
          exit 5
          fi
          fi
          ;;
          stop)
          if [ -e tsserver2.pid ]; then
          echo -n "stopping the teamspeak2 server"
          if ( kill -TERM `cat tsserver2.pid` ); then
          for c in $(seq 1 300); do
          if [ -e tsserver2.pid ]; then
          echo -n "."
          sleep 1
          fi
          done
          fi
          if [ -e tsserver2.pid ]; then
          echo "server does not shutdown cleanly - killing"
          kill -KILL `cat tsserver2.pid`
          rm tsserver2.pid
          sleep 5
          else
          echo "done"
          fi
          else
          echo "tsserver2.pid is missing, no started server ?"
          exit 7
          fi
          ;;
          restart)
          $0 stop && $0 start || exit 1
          ;;
          status)
          if [ -e tsserver2.pid ]; then
          echo "the server seems to be running"
          exit 0
          else
          echo "the server seems to be stopped"
          exit 3
          fi
          ;;
          passwords)
          if [ -e server.log ]; then
          date=$(cat server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
          spass=$(cat server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/")
          pass=$(cat server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]\+\).*$/\1/")
          echo "Following passwords were generated on $date"
          echo "superadmin = \"$spass\""
          echo "admin      = \"$pass\""
          else
          echo "server.log not found, maybe you did not start the server yet ?" 
          exit 1
          fi
          ;;
          *)
          echo "Usage: $0 {start|stop|restart|status|passwords}"
          exit 2
          esac
          exit 0
          


          Vielen Dank für eure Mühe!!!

          Gruß
          Thomas

          • Antwort von nach 2 Tagen 0 hilfreich
            Re^5: Programm beim booten automatisch starten (DE

            Hallo, 1. Bekomme ich jedes Mal, wenn ich den Rechner hochfahre die
            Warnung, dass man das Programmm nicht als ROOT starten sollte.
            Folglich habe ich mal den Besitzer der Skriptdatei(en)
            geändert, doch das half nichts --> Wie kann ich das Skript
            als (speziell dafür angelegter Benutzer) 'tss' (in der gruppe
            'teamspeak') dieses Skript starten?
            mit su, siehe unten. 2. Kommt ebenfalls bei jedem Bootvorgang der Hinweis, dass die
            Datei

            linux_server
            (die im entpackten Verzeichnis
            vorhanden ist) nicht gefunden werden konnte. Wie kann ich das
            Skript so anpassen, dass er die Datei findet oder wo muss ich
            die Datei hinlegen dass er sie findet (kann sie ja nicht
            einfach in /etc/init.d/ legen (((oder?))))?
            Das einfachste ist, in das enstsprechende Verzeichnis zu gehen.
            #! /bin/bash
            # Copyright (c) 2004 TeamSpeak team   All rights reserved.
            #
            # Author: pwk.linuxfan 2004
            #
            # hier den richtigen Pfad angeben
            cd /usr/local/teamspeak
            # Benutzer wechseln
            exec su tss
            # den Rest hab ich nicht verändert...
            :case "$1" in
            : start)
            : if [ -e tsserver2.pid ]; then
            : echo "tsserver2.pid already exists...server already started
            :?";
            : echo "If you are sure the server is not running, delete
            :tsserver2.pid"
            : exit 1
            : else
            : if [ "$UID" = "0" ]; then
            : echo WARNING ! For security reasons we advise: DO NOT RUN
            :THE SERVER AS ROOT
            : for c in $(seq 1 10); do
            : echo -n "!"
            : sleep 1
            : done
            : echo !
            : fi
            : echo "starting the teamspeak2 server"
            : if [ -e server_linux ]; then
            : if [ ! -x server_linux ]; then
            : echo "server_linux is not executable, trying to set it"
            : chmod u+x server_linux
            : fi
            : if [ -x server_linux ]; then
            : ./server_linux -PID=tsserver2.pid
            : else
            : echo "server_linux is not executable, fix this"
            : exit 4
            : fi
            : else
            : echo "Couldnt find server_linux"
            : exit 5
            : fi
            : fi
            : ;;
            :    stop)
            : if [ -e tsserver2.pid ]; then
            : echo -n "stopping the teamspeak2 server"
            : if ( kill -TERM `cat tsserver2.pid` ); then
            : for c in $(seq 1 300); do
            : if [ -e tsserver2.pid ]; then
            : echo -n "."
            : sleep 1
            : fi
            : done
            : fi
            : if [ -e tsserver2.pid ]; then
            : echo "server does not shutdown cleanly - killing"
            : kill -KILL `cat tsserver2.pid`
            : rm tsserver2.pid
            : sleep 5
            : else
            : echo "done"
            : fi
            : else
            : echo "tsserver2.pid is missing, no started server ?"
            : exit 7
            : fi
            : ;;
            : restart)
            : $0 stop && $0 start || exit 1
            : ;;
            : status)
            : if [ -e tsserver2.pid ]; then
            : echo "the server seems to be running"
            : exit 0
            : else
            : echo "the server seems to be stopped"
            : exit 3
            : fi
            : ;;
            : passwords)
            : if [ -e server.log ]; then
            : date=$(cat server.log | grep "admin account info: username:
            :admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+
            :[0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
            : spass=$(cat server.log | grep "superadmin account info:
            :username: superadmin" | tail -n 1 | sed "s/^.*username:
            :superadmin password: \([a-z0-9]\+\).*$/\1/")
            : pass=$(cat server.log | grep "admin account info: username:
            :admin" | tail -n 1 | sed "s/^.*username: admin password:
            :\([a-z0-9]\+\).*$/\1/")
            : echo "Following passwords were generated on $date"
            : echo "superadmin = \"$spass\""
            : echo "admin      = \"$pass\""
            : else
            : echo "server.log not found, maybe you did not start the
            :server yet ?"
            : exit 1
            : fi
            : ;;
            : *)
            : echo "Usage: $0 {start|stop|restart|status|passwords}"
            : exit 2
            :esac
            :exit 0
            :

            Vielen Dank für eure Mühe!!!
            kein Problem.

            Moritz

            • Antwort von nach 2 Tagen 0 hilfreich
              Re^6: Programm beim booten automatisch starten (DE

              Hi,

              bekomme folgendes Problem wenn ichs wie unten beschrieben mache:

              Zuerst mal kommt die Fehlermeldung, dass ich keine Berechtigung hätte die Datei auszuführen
              --> Also hab' ich den besitzer auf tss gesetzt

              Dann gings schonmal etwas weiter...

              Sobald

              exec su tss

              ausgeführt wird, wird in der konsole zum benutzer tss gewechselt, aber dann passiert nix mehr.
              --> wenn ich dann
              sh <scriptname> start

              eingebe, will er von mir n passwort für tss...

              Ich will ja nicht bei jedem Bootvorgang das PW von tss eingeben müssen nur um tss ausführen zu können...

              Wie kann ich den scriptstart ohne pw-eingabe ausführen?

              Hab' ich vielleicht bei der Erstellung des Benutzers 'tss' was falsch gemacht???

              --> Hab ihn wie jeden anderen Benutzer erstellt ---> kann ihm aber nicht kein passwort zuweisen

              Vielen dank für eure Mühe!

              Hier noch mal der (leicht geänderte) scriptcode
              #! /bin/bash
              # Copyright (c) 2004 TeamSpeak team   All rights reserved.
              #
              # Author: pwk.linuxfan 2004
              #
              # hier den richtigen Pfad angeben
              cd /etc/ts2_rc2/
              # Benutzer wechseln
              exec su tss
              # den Rest hab ich nicht verändert...
              :case "$1" in
              : start)
              : if [ -e tsserver2.pid ]; then
              : echo "tsserver2.pid already exists...server already started
              :?";
              : echo "If you are sure the server is not running, delete
              :tsserver2.pid"
              : exit 1
              : else
              : if [ "$UID" = "0" ]; then
              : echo WARNING ! For security reasons we advise: DO NOT RUN
              :THE SERVER AS ROOT
              : for c in $(seq 1 10); do
              : echo -n "!"
              : sleep 1
              : done
              : echo !
              : fi
              : echo "starting the teamspeak2 server"
              : if [ -e server_linux ]; then
              : if [ ! -x server_linux ]; then
              : echo "server_linux is not executable, trying to set it"
              : chmod u+x server_linux
              : fi
              : if [ -x server_linux ]; then
              : ./server_linux -PID=tsserver2.pid
              : else
              : echo "server_linux is not executable, fix this"
              : exit 4
              : fi
              : else
              : echo "Couldnt find server_linux"
              : exit 5
              : fi
              : fi
              : ;;
              :    stop)
              : if [ -e tsserver2.pid ]; then
              : echo -n "stopping the teamspeak2 server"
              : if ( kill -TERM `cat tsserver2.pid` ); then
              : for c in $(seq 1 300); do
              : if [ -e tsserver2.pid ]; then
              : echo -n "."
              : sleep 1
              : fi
              : done
              : fi
              : if [ -e tsserver2.pid ]; then
              : echo "server does not shutdown cleanly - killing"
              : kill -KILL `cat tsserver2.pid`
              : rm tsserver2.pid
              : sleep 5
              : else
              : echo "done"
              : fi
              : else
              : echo "tsserver2.pid is missing, no started server ?"
              : exit 7
              : fi
              : ;;
              : restart)
              : $0 stop && $0 start || exit 1
              : ;;
              : status)
              : if [ -e tsserver2.pid ]; then
              : echo "the server seems to be running"
              : exit 0
              : else
              : echo "the server seems to be stopped"
              : exit 3
              : fi
              : ;;
              : passwords)
              : if [ -e server.log ]; then
              : date=$(cat server.log | grep "admin account info: username:
              :admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+
              :[0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
              : spass=$(cat server.log | grep "superadmin account info:
              :username: superadmin" | tail -n 1 | sed "s/^.*username:
              :superadmin password: \([a-z0-9]\+\).*$/\1/")
              : pass=$(cat server.log | grep "admin account info: username:
              :admin" | tail -n 1 | sed "s/^.*username: admin password:
              :\([a-z0-9]\+\).*$/\1/")
              : echo "Following passwords were generated on $date"
              : echo "superadmin = \"$spass\""
              : echo "admin      = \"$pass\""
              : else
              : echo "server.log not found, maybe you did not start the
              :server yet ?"
              : exit 1
              : fi
              : ;;
              : *)
              : echo "Usage: $0 {start|stop|restart|status|passwords}"
              : exit 2
              :esac
              :exit 0
              :

              Vielen Dank für eure Mühe!!!

              Gruß
              Thomas

            • Antwort von nach 3 Tagen 0 hilfreich
              Re^7: Programm beim booten automatisch starten (DE

              Hallo, Zuerst mal kommt die Fehlermeldung, dass ich keine
              Berechtigung hätte die Datei auszuführen
              --> Also hab' ich den besitzer auf tss gesetzt
              so sollte es ja auch sein. Dann gings schonmal etwas weiter...

              Sobald

              exec su tss

              ausgeführt wird, wird in der konsole zum benutzer tss
              gewechselt, aber dann passiert nix mehr.
              Das sollst du ja auch nicht in der Konsole tippen, sondern in das Start-Stop-Skript schreiben. Zusammen mit dem cd-Befehl. --> wenn ich dann
              sh <scriptname> start

              eingebe, will er von mir n passwort für tss...
              Das ist merkwürdig und ist bei mir nicht so (ich habe auf einem Debian-Server teamspeak laufen, und starte und stoppe per hand über das entsprechende Skript).

              Kann es sein, dass du nicht root warst, als du das Skript ausgeführt hast? nur root kann ohne Passwort den Benutzer wechseln. Hab' ich vielleicht bei der Erstellung des Benutzers 'tss' was
              falsch gemacht???

              --> Hab ihn wie jeden anderen Benutzer erstellt --->
              Das ist wie? kann ihm aber nicht kein passwort zuweisen
              Wieso nicht? was kommt für eine Fehlermeldung?

              Grüße,
              Moritz

            • Antwort von nach 3 Tagen 0 hilfreich
              Re^8: Programm beim booten automatisch starten (DE

              Hallo, Zuerst mal kommt die Fehlermeldung, dass ich keine
              Berechtigung hätte die Datei auszuführen
              --> Also hab' ich den besitzer auf tss gesetzt
              so sollte es ja auch sein.
              Dann hab ich ja mal was richtig gemacht... ;-) Dann gings schonmal etwas weiter...
              Sobald

              exec su tss

              ausgeführt wird, wird in der konsole zum benutzer tss
              gewechselt, aber dann passiert nix mehr.
              Das sollst du ja auch nicht in der Konsole tippen, sondern in
              das Start-Stop-Skript schreiben. Zusammen mit dem cd-Befehl.
              Ich habs auch in das Script geschrieben (siehe (leicht veränderter) Quellcide)) --> wenn ich dann
              sh <scriptname> start

              eingebe, will er von mir n passwort für tss...
              Das ist merkwürdig und ist bei mir nicht so (ich habe auf
              einem Debian-Server teamspeak laufen, und starte und stoppe
              per hand über das entsprechende Skript).

              Kann es sein, dass du nicht root warst, als du das Skript
              ausgeführt hast? nur root kann ohne Passwort den Benutzer
              wechseln.
              Wechseln schon, aber anscheinend nichts als dieser ausführen...

              Anmerkung:
              Habe das
              teamspeak2-server_startscript
              in
              ts2_rc2
              umbenannt.

              Hier mein Test (mit manueller Ausführung des Scriptes):
              user@server:~$ su root
              Password:
              server:/home/user# su tss
              tss@server:/home/user$ cd /etc/init.d
              [E-Mail-Adresse entfernt] sh ts2_rc2 start
              Password:
              tss@server:/etc/ts2_rc2$
              
              Hab' ich vielleicht bei der Erstellung des Benutzers 'tss' was
              falsch gemacht???
              -> Hab ihn wie jeden anderen Benutzer erstellt
              Das ist wie?
              Zuerst habe ichs (da ich noch nicht so erfahren mit der Konsole bin) über die graphische Oberfläche gemacht (KDE->System->Benutzerverwaltung).

              Später hab ichs aber auch mit der Konsole versucht...--> Immer das gleiche Problem kann ihm aber nicht kein passwort zuweisen
              -> Ich muss eins festlegen Wieso nicht? was kommt für eine Fehlermeldung?
              "Passwort darf nicht leer sein!" (ähnliche Meldung in der Konsole).

              Noch eine Frage zur Sicherheit (nicht, dass ich einen elementaren Fehler mache):

              Inhalt des ts2_rc2-Ordners liegt in /etc/ts2_rc2
              Script-Datei liegt in /etc/init.d/
              ->richtig?

              Vielen Dank für deine/eure Mühe!!!

              Gruß
              Thomas

            • Antwort von nach 3 Tagen 0 hilfreich
              Re^9: Programm beim booten automatisch starten (DE

              Hallo,

              user@server:~$ su root
              Password:
              server:/home/user# su tss
              Das solltest du nicht tun, sondern das startskript als root ausführen. Hab ich das nicht bereits erwähnt?
              :tss@server:/home/user$ cd /etc/init.d
              :[E-Mail-Adresse entfernt] sh ts2_rc2 start
              :Password:
              Klar, als user tss kannst du nicht einfach den via su die Userkennung wechseln. Aber beim booten wird das Skript ja als root ausgeführt.
              :tss@server:/etc/ts2_rc2$
              :
              kann ihm aber nicht kein passwort zuweisen
              -> Ich muss eins festlegen Wieso nicht? was kommt für eine Fehlermeldung?
              "Passwort darf nicht leer sein!" (ähnliche Meldung in der
              Konsole).
              Aber wenn das Passwort nicht leer sein darf hast du ihm doch eins gegeben, oder? Noch eine Frage zur Sicherheit (nicht, dass ich einen
              elementaren Fehler mache):

              Inhalt des ts2_rc2-Ordners liegt in /etc/ts2_rc2
              Script-Datei liegt in /etc/init.d/
              ->richtig?
              Jain. Für deine Zwecke reicht aber wohl ja als Antwort.

              Grüße,
              Moritz



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!