Eiskaltmacher.de

Software => Linux => Thema gestartet von: mad1120 am 17. Dezember 2008, 22:56:20

Titel: start script für teamspeak server + teamspeak bulldog
Beitrag von: mad1120 am 17. Dezember 2008, 22:56:20
moin leute,
ich hab mir die tage nen Vserver gegönnt auf dem ich nen teamspeak server plus den teamspeak bulldog
(schutz system fürs teamspeak) laufen lassen möchte.

nach anfängliche verständnis prob. sind die prog nun am laufen,
nur muss ich sie leider per hand starten wenn der server neustartet  :(

weshalb ich nun nen keliens startscript für selbig Programme baruche,
welches ich dann in den "autostart" packen kann.

wobei das ganze als eingeschrägter benutzer (usr ts) gestartet werden soll

der teamspeak server liegt in:
/teamspeak/tss_rc2
und wird per
./teamspeak2-server_startscript start   
gestartet

und der bulldog wohnt in:
/teamspeak/bulldog
und wird per
java -jar buldogd.jar
gestartet

würde mich freuen wenn ihr da was basteln könntet
(zu claas und gargamel schiel :engel:)

besten dank im voraus mad1120

EDIT: ich hab was vergessen....

der bulldog läuft nach dem starten weiter (es sind in der sitzung sollange das prog. läuft keine weiteren eingaben möglich.
weshalb der kleine ingentwie gezungen werde muss im hintergrung zu arbeiten.
in der readme datei vom bulldog ist was von nem shell script die rede ???
Zitat
1. Starting
  On most operating system go to the directory where you unpacked the files and run: java -jar bulldogd.jar
  or
    java -cp "bulldogd.jar" org.midlink.applications.ts2svcdaemon.Main
  On Windows you may also use the wrapper by just starting bulldogd.exe
  I also put some linux shell scripts with it which are maybe useful for running it as a daemon in the background.

EDIT2:
hier ist nen script was bei bulldog mit dabei ist (linux-hidden.sh)
#!/bin/bash

#Sun Java Runtime Environment >= 5.0
JRE="java"
#JRE="/usr/lib/j2re1.5-sun/bin/java"

nohup $JRE -jar bulldogd.jar &

ich versteh da zwar nur bahnhof, aber vielleicht hilft´s...
Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: Gargamel am 18. Dezember 2008, 19:31:04
(zu claas und gargamel schiel :engel:)
Hättest du nicht woanders hinschielen können? ;)
Nagut, ist ja bald Weihnachten...

Quick and Dirty:
#!/bin/bash

TSUSER=ts
JRE="java"

cd /teamspeak/tss_rc2/
su $TSUSER -c "./teamspeak2-server_startscript start"

cd /teamspeak/bulldog/
su $TSUSER -c "nohup $JRE -jar bulldogd.jar &>/dev/null" &
Schön ist das nicht, aber es sollte beide Programme als User "ts" im Hintergrund starten (sofern die Rechtevergabe das zulässt).

Sauberer wäre es, wenn man die Dienste einzeln starten und insbesondere auch wieder beenden könnte. Um genau die von dem Script gestarteten Prozesse später zum Beenden wiedererkennen zu können, sollte man sich die PIDs (Prozess-IDs) wegspeichern. Vor dem Starten einens Dienstes wäre es auch nicht verkehrt erstmal zu prüfen, ob der Dienst nicht vielleicht schon läuft. ;)

Was setzt du eigentlich für eine Distribution auf dem Server ein?
Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: mad1120 am 22. Dezember 2008, 18:09:53
hi gargamel,
sorry das ich erste jetzt antworte.
die letzten tage hab ich damit verbracht dem bulldog das laufen bei zu bringen,
das nette prog. wollte einfach keinen kontakt zu meinem ts server aufbauen :motz:

danke für deine mühe, werde das script die nächsten tage mal testen.

ach ja der server läuft der zeit mit debian 4.0,
und per knopfdruck kann´s auch schnell mal ne andere distribution werden (hab ca 8 zur auswahl).

achso,

bezüglich der pid,
der teamspeak server speichert selbige von allein in ner extra datei ab und löscht selbige bei beenden.
wobei er meckert und sich nicht starten läst solange diese datei noch existiert..
weshalb noch ne extra zeile rein müste: rm teamspeak.pidfür den fall falls der server im betrieb abstürzt oder unsauber neu gestartet wird.

EDIT:
mir fällt gearde ein:
die nohup datei sollte vielleicht auch ab und wann mal gelöscht werden...

Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: mad1120 am 28. Dezember 2008, 17:03:44
hi garamel,
hab das script heute versucht zu testen. bloss leider läuft es nicht :cry:

als meldung kommt dies:
bash: ./ts_start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
wenn ich die ersten beiden zeichen aus dem script entferne (#!)
komme ich nen stück weiter
: Datei oder Verzeichnis nicht gefunden
: command not found 2:
: command not found 5:
: Datei oder Verzeichnis nicht gefundenss_rc2/
Unbekannte ID: ts
: command not found 8:
: Datei oder Verzeichnis nicht gefundenulldog/
Unbekannte ID: ts

aber laufen will es dann auch nicht...

EDIT:
hab gerade einen fehler gefunden,
erstelle niemals eine datei unter windows und ervsuche sie unter linux auszuführen...
windows baut einen nämlich lustige zeichen mit ein...

und nen zeichen in dem path hab ich auch noch vergessen zu erwähnen  :redface:

die lösung:
#!/bin/bash

TSUSER=ts
JRE="java"

cd /teamspeak/tss2_rc2
rm teamspeak.pid
su $TSUSER -c "./teamspeak2-server_startscript start"

cd /teamspeak/bulldog
rm nohup.out
su $TSUSER -c "nohup $JRE -jar bulldogd.jar &>/dev/null" &

achso neben bei hab ich noch nen schönes tool für die console gefungen (mc)
womit ich dann die windows zugabe zeichen entfernt haben..

jetzt bräuchte ich nur noch hilfe um das script in den auto start zu bekommen *den dackel blick aufsetzt*

Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: Gargamel am 28. Dezember 2008, 20:58:24
OK, ist eigentlich nicht sonderlich schwierig bei Debian beim booten etwas automatisch zu starten. Ich hole nur erstmal etwas weiter aus, damit du auch verstehen kannst, was da passiert:

Debian benutzt ein Sys-V Init (oder ein daran angelehntes Init-System). "/sbin/init" ist der erste Prozess, der gestartet wird, nachdem der Kernel geladen ist (initrd mal außen vor). Die später im Hintergrund laufenden Dienste werden über die Init-Scripts gestartet. Diese liegen bei Debian im Verzeichnis "/etc/init.d/". Es sind für verschiedene Verwendungszwecke des Betriebssystems unterschiedliche Runlevel vorgesehen, bei Debian wird aber eigentlich nur Runlevel 2 im Normalbetrieb verwendet. Dienste die in allen Runlevels laufen müssen, werden beim booten im Runlevel "S" gestartet.

Die Init-Scripts werden zum starten eines Dienstes mit dem Parameter "start" aufgerufen und zum beenden mit dem Parameter "stop". Wenns nicht ganz sauber sein soll, kann man den Paramter auch ignorieren. Die Init-Scripte liegen bei Debian im Verzeichnis "/etc/init.d/". Im Verzeichnis "/etc/rc2.d/" werden nun alle Init-Scripts verlinkt, deren Dienste im Runlevel 2 gestartet und auch gestoppt werden sollen. Beim Wechsel in das Runlevel (also während dem Bootvorgang) werden alle Scripts gestartet, deren (Link-)Name mit "S" anfängt. Die zwei darauf folgenden Ziffern legen fest, in welcher Reihenfolge die Scripts gestartet werden. Wenn das Runlevel verlassen wird, werden die Scripts, deren Name mit "K" (Kill) beginnt, mit dem Parameter "stop" aufgerufen.

Lange Rede, kurzer Sinn:
1. Kopier dein Script als root nach /etc/init.d/teamspeak.
2. Dann sorge dafür, dass es auführbar ist ("chmod u+rx /etc/init.d/teamspeak").
3. Verlinke es von "/etc/rc2.d/" aus ("cd /etc/rc2.d/; ln -s ../init.d/teamspeak S99teamspeak").

Jedes mal wenn der Rechner gestartet wird, wird als eins der letzten Initscripts nun dein script in Form des Kommandos "/etc/rc2.d/S99teamspeak start" aufgerufen. Das Script startet dann (hoffentlich) die beiden Dienste.

Wenn du das ganze sauberer lösen möchtest, solltest du für beide Dienste je ein eigenes Script erstellen, was dann auch die Parameter "start", "stop" und "restart" abarbeiten können sollte. Die Scripts verlinkst du dann in /etc/rc2.d/ so, dass die Dienste in der richtigen Reihenfolge gestartet werden.

Auch wenn es bei deinen Programmen vielleicht reicht, wenn sie beim herunterfahren von "kill" beendet werden, so ist ein Init-Script was die Parameter "stop" und "restart" beherrscht doch recht praktisch. Man kann nämlich bei Debian z.B. sämtliche Dienste über eben diese Init-Scripts beenden oder neustarten. Mal eben was an der Apache-Konfiguration geändert und der Webserver muss neu gestartet werden? "/etc/init.d/apache restart" -> fertig.

Die Unterscheidung der Parameter kann z.B. so erfolgen:
#!/bin/bash

function dienst_starten()
{
    # hier die Kommandos zum starten des Dienstes eintragen
}

function dienst_stoppen()
{
    # hier die Kommandos zum stoppen des Dienstes eintragen
}

case "$1" in
    start)
        dienst_starten
        ;;

    stop)
        dienst_stoppen
        ;;

    restart|reload|force-reload)
        dienst_stoppen
        dienst_starten
        ;;

    *)
        echo "Usage: $0 {start|stop|restart}"
esac
Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: mad1120 am 28. Dezember 2008, 23:52:45
hi gargamel, es hat geklappt *jubel*
(zwar erst beim zweiten versuch :redface:, da ich beim S99 die groß/klein schreibung nicht beachtet habe)

aber nun startet das TS samt bulldog automatisch *freu*

also besten dank für deine hilfe  :thumbup:

nun muss ich noch anfangen den v-server noch nen bissel absichern, nicht das sich da dann noch böse leute dran zu schaffen machen....
als anfang hab ich den root zugang per ssh lahm gelegt so das sich nur noch eingeschränkte benutzer einlogen können.
http://www.developers-guide.net/forums/6113,direkten-root-login-fuer-ssh-sperren#post56207

EDIT:
desweiteren hab ich noch den ssh zugang weiter verändert
durch den eintrag in /etc/ssh/sshd_config
MaxAuthTries 1
MaxStartups  3
ist es jetzt nur noch möglich zwei mal das passwort pro login falsch einzugeben,
danach muss eine eine verbindung aufgebaut werden.
des weiteren sind nur noch 3 parallel logins auf dem server möglich

und dazu noch
AllowUser <username>
wodurch nur die ausgelisteten user gerechtigt sind sich per SSH einzuloggen
/edit

ausserdem bin ich gerade über http://denyhosts.sourceforge.net/index.html gestolpert
wobei ich mich aber erstmal durch den englichen text durch kämpfen muss.
aber sinngemäss blockt das ding wohl brutforce angriffe...

achja:
fall seitens EKM intresse besteht,
kann ich gerne nen kleinen TS server für EKM mit einrichten.
weil traffic hab ich mehr als genug frei (1000Gb pro monat)...
Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: CptHirni am 29. Dezember 2008, 00:24:23
Zum editieren von Scripten unter Windows kannste Notepad++ oder den in WinSCP integrierten Editor nutzen, die bauen keinen Müll ein :)
Titel: Re: start script für teamspeak server + teamspeak bulldog
Beitrag von: mad1120 am 29. Dezember 2008, 01:02:35
hey danke für den mit WinSCP, das ist mal richtig geil.

ist nen süsser file manager,
inkl. der möglichkeit putty sofort mit zu starten.

einzig was mich jetzt nervt ist, das ich den root zugang gespert habe.
womit ich mit dem prog nur auf dem home ordner vom dem eingeschränktem zugreifen kann :motz:

aber was soll´s dann muss ich mir halt wenn ich grössere sachen mache, den root zugang wieder freilegen....  :))