eigenen dienst einbinden
eigenen dienst einbinden
ich habe einen code der fehlerfrei ist und einen eigenen dienst auf einem port der wahl bereitstellt.
ich habe nun die etc/service bearbeitet und in der /etc/inetd.conf den pfad zum compilierten code aufgenommen, trotzdem lauscht der dienst nicht auf dem zugewissenen port, noch lauscht er auf irgendeinen port. was hab ich vergessen. achja gestartet wird der dienst selbstverständlich auch vorher, beim booten durch /etc/init.d und die berechtigungen für die auszuführende datei stehen auf 777
hat da jemand eine idee was fehlen könnte
gruss helsaett
ich habe nun die etc/service bearbeitet und in der /etc/inetd.conf den pfad zum compilierten code aufgenommen, trotzdem lauscht der dienst nicht auf dem zugewissenen port, noch lauscht er auf irgendeinen port. was hab ich vergessen. achja gestartet wird der dienst selbstverständlich auch vorher, beim booten durch /etc/init.d und die berechtigungen für die auszuführende datei stehen auf 777
hat da jemand eine idee was fehlen könnte
gruss helsaett
Re: eigenen dienst einbinden
Mutige Aussage.HelsAett hat geschrieben:ich habe einen code der fehlerfrei ist
Entweder Du läßt den Dienst per inetd laufen (dann startet dieser Dein Programm wenn eine Verbindung zu dem Port aufgemacht wird. Oder Du startest das Programm manuel (oder per Script in /etc/init.d, dann mußt Du natürlich auch Links in den entsprechenden Runlevels anlegen)HelsAett hat geschrieben: ich habe nun die etc/service bearbeitet und in der /etc/inetd.conf den pfad zum compilierten code aufgenommen, trotzdem lauscht der dienst nicht auf dem zugewissenen port, noch lauscht er auf irgendeinen port. was hab ich vergessen. achja gestartet wird der dienst selbstverständlich auch vorher, beim booten durch /etc/init.d und die berechtigungen für die auszuführende datei stehen auf 777
Kannst Du das Programm den aus einer Konsole heraus startet? Läuft es dann so wie erwartet?
Vielleicht kannst Du ja auch mal Dein Startscript posten.
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de
xmpp:bert@debianforum.de
ja das programm lässt sich nach dem kompilieren auch peer hand in der konsole starten
Bitte nicht selbstverwenden, es seih den zum testen, das programm enthält einen overflow, will ich auch nur verwenden zum austesten. Ich weisse drauf hin, nicht das jemand denkt probiere ich mal aus und vergisst es dann wieder zu entfernen. könnte ins auge gehen.
gruss helsaett
Code: Alles auswählen
/* Weakserver.c*
* 27.5.2001 *
* */
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#define TITEL "\n\rWillkommen beim Weakserver 0.0.4 \n\rGebe einen der folgenden Befehle ein:\n\r\n\r datum - gibt das aktuelle Datum + Zeit aus\n\r echo - Gibt den Text
aus\n\r quit - Beendet die Sitzung\n\r\n\r"
int Versorge(char *Buffer);
main()
{
char EmpfBuffer[2048];
int Size;
puts(TITEL);
fflush(stdout);
while ((Size = read(0, EmpfBuffer, 2047)) > 0)
{
EmpfBuffer[Size] = 0;
if (Versorge(EmpfBuffer) < 0) break;
}
}
int Versorge(char *Buffer)
{
char EchoNachricht[512];
time_t Zeit;
char *ZeitString;
if (!strncmp(Buffer, "datum", 5))
{
Zeit = time(NULL);
ZeitString = asctime(localtime(&Zeit));
while (isspace(ZeitString[strlen(ZeitString) - 1])) ZeitString[strlen(ZeitString) - 1] = 0;
puts(ZeitString);
fflush(stdout);
return;
}
else if (!strncmp(Buffer, "echo ", 5))
{
strcpy(EchoNachricht, Buffer + 5);
while (isspace(EchoNachricht[strlen(EchoNachricht) - 1])) EchoNachricht[strlen(EchoNachricht) - 1] = 0;
puts(EchoNachricht);
fflush(stdout);
return;
}
else if (!strncmp(Buffer, "quit", 4))
{
puts("bye");
fflush(stdout);
return -1;
}
else
{
while (isspace(Buffer[strlen(Buffer) - 1])) Buffer[strlen(Buffer) - 1] = 0;
strcat(Buffer, " : Unbekannter Befehl\n\r");
puts(Buffer);
}
return 1;
}
gruss helsaett
Hast du an gedacht?
Folgender Eintrag müsste funktionieren:
Code: Alles auswählen
/etc/init.d/inetd restart
Folgender Eintrag müsste funktionieren:
Code: Alles auswählen
7777 stream tcp nowait username /pfad/zum/programm
Moinsen,
mal zum reinen Verständnis. Eventuell auch für mich.
Der inetd lauscht doch nach Verbindungen auf diversen sockets (die mit den Diensten registriert wurden). Demnach muss ein Dienst, der dahinter steht, doch auch in irgendeiner Art socket-Programmierung beinhalten. Denn es muss ja selbst ein socket verwendet werden, auf dem der Dienst mittels accept() ein oder mehrere connect()-Anfragen entgegen nimmt.
Grüße
Torsten
mal zum reinen Verständnis. Eventuell auch für mich.
Der inetd lauscht doch nach Verbindungen auf diversen sockets (die mit den Diensten registriert wurden). Demnach muss ein Dienst, der dahinter steht, doch auch in irgendeiner Art socket-Programmierung beinhalten. Denn es muss ja selbst ein socket verwendet werden, auf dem der Dienst mittels accept() ein oder mehrere connect()-Anfragen entgegen nimmt.
Grüße
Torsten
Wirklich jetzt?
Ist ja irre. War mir bis dato nicht bekannt.
Man registriert also ein Programm auf einem Port. Kommt eine Anfrage am entsprechenden Port (egal ob UDP/TCP ..?), so wird das Programm gestartet. Es muss nicht mal ein Netz-Prog sein, welches mit sockets und Trallala ausgestattet ist. Es könnte also auch "Hello World" sein.
Richtig so?
Ist ja irre. War mir bis dato nicht bekannt.
Man registriert also ein Programm auf einem Port. Kommt eine Anfrage am entsprechenden Port (egal ob UDP/TCP ..?), so wird das Programm gestartet. Es muss nicht mal ein Netz-Prog sein, welches mit sockets und Trallala ausgestattet ist. Es könnte also auch "Hello World" sein.
Richtig so?
für torsten
/etc/inedt.conf
Weak stream tcp nowait root.root /vollerpfad/zumprog Weak
und ind der /etc/service
Weak 2323/tcp
so gehts und ja du kannst da auch ein "hello world" nehmen
für alle anderen danke für die hilfe
Joghurt seine antwort hat die lösung gebracht
danke für eure hilfe, ich mach mich jetzt ran und teste fleissig weiter
gruss helsaett
/etc/inedt.conf
Weak stream tcp nowait root.root /vollerpfad/zumprog Weak
und ind der /etc/service
Weak 2323/tcp
so gehts und ja du kannst da auch ein "hello world" nehmen
für alle anderen danke für die hilfe
Joghurt seine antwort hat die lösung gebracht
hat mich auf die idee gebracht mal zu schauen unter welchem user das programm läuft, da war den auch der fehler.Folgender Eintrag müsste funktionieren:
Code:
7777 stream tcp nowait username /pfad/zum/programm
danke für eure hilfe, ich mach mich jetzt ran und teste fleissig weiter
gruss helsaett
Ich hatte testweise mal ein Skript der Art auf einem Port. War sehr sinnvoll
Code: Alles auswählen
tr [A-Za-z] [a-zA-Z]