PDA

View Full Version : Bei Portanfrage starten


Ares07
16-08-2004, 02:17
Ich suche dringend eine Möglichkeit den Teamspeakserver via Portanfrage starten zu können. Quasi TS on demand...
Er startet dann erst wenn ich im TS2 auf Connect klicke.
Eventuell als Service... irgendwie mit inetd müsste das doch gehen, weiß nur net wie...?

MfG Ares07

Michael
05-02-2005, 12:31
Das kommt zwar 5 Monate zu spät aber vielleicht kann es ja noch einer brauchen:

Ich habe mich mal hingesetzt und versucht das mit Perl zu lösen. Funktioniert sogar, hat jedoch 2 Haken:

1. Man muss zweimal Connecten das man sich verbinden kann (Die Startzeit des Servers ist ein kleines bisschen größer als die Timoutzeit des Clients).
2. Der Server bleibt gestartet auch wenn sich keiner auf dem Server befindet.

Hier das Script:

Die Datei "server":

#!/usr/bin/perl

$port = 8767;

# Das Socket-Library benutzen
use Socket;
print "Lade Socket libraray.... done\n";

# Struktur definieren
$sockaddr_format = 'S n a4 x8';
print "Definiere Struktur.... done\n";

# Socket erstellen
($name,$aliases,$proto) = getprotobyname("udp");
socket(S,PF_INET,SOCK_DGRAM,$proto) ||
die "Error: Konnte Socket nicht erstellen:$!";
print "Erstelle Socket.... done\n";

# An einen Port binden
$myaddr = pack($sockaddr_format, AF_INET, $port, "\0\0\0\0");
bind(S,$myaddr) ||
die "Error: Port binden fehlgeschlagen:$!";
print "Binde Socket an Port $port.... done\n";
print "Warte auf Signal ueber Port $port....\n";

for (;;)
{
# Warte auf Anfrage
$fromaddr = recv(S,$msg,255,0);
exec './start';

}

Und die Datei "start":

#!/usr/bin/perl

exec '/home/tss2_rc2/server_linux';

Bevor man das Script ausführt:

1. Verzeichnisse anpassen
2. chmod a+x server
3. chmod a+x start

Dann die Datei "server" mit "./server" starten. Will man, das das Script im Hintergrund läuft solle man das Script mit "./server &" starten.

Hier die zwei Dateien zum Download:

MfG,
Michael