Ausführen von shell-Scripten über chroot-Grenzen hinaus

hotrs

New Member
Hi *.*.

Ich habe hier ein shell-Script, welches mir einen Serverdienst starten bzw. beenden kann. Und ich habe einen Web-Server laufen. Beides möchte ich nun verheiraten - mittels eines Knopfes oder einer Verknüpfung auf einer Web-Seite möchte ich den Serverdienst starten bzw. beenden können.

Soweit eigentlich kein Problem - jedoch liegen der Web-Server und der zu startende Serverdienst in getrennten chroot-Umgebungen. Das shell-Script liegt ausserhalb dieser beiden chroot-Umgebungen und muss mit root-Rechten aufgerufen werden.

Wie stellt man sowas an? Ich bräuchte einen Dienst, der sich unbeeindruckt durch die chroot-Umgebungen (ggf. über sockets?) fernsteuern läßt und den Aufruf des shell-Scriptes veranlassen könnte. Gibt es sowas ggf. bereits unter Linux (Debian Etch)?

Gruß,
hotrs
 
Du könntest die Webapplikation einen Switch setzen lassen (z.B. File, Datenbank u.s.w.).
Ein Script, das im nötigen Kontext läuft, wertet diesen Switch zyklisch aus und führt ggf. eine erforderliche Aktion aus.
 
Joar, da gibt es mehrere Lösungen:
Signals, Pipes, Sockets, ..

Ich empfehle dir da am Besten eine höhrere Sprache zu nehmen, Perl z.B.
 
Zunächst danke für die Antwort ;).

Du könntest die Webapplikation einen Switch setzen lassen (z.B. File, Datenbank u.s.w.).

Ja, daran hatte ich auch schon gedacht. Und sowas läuft auch bereits auf dem Server: Per cron wird regelmässig ein shell-Script aufgerufen, welches pisg (ein perl-Script zum Generieren von IRC Statistiken) startet und eine Textdatei in der chroot-Umgebung für den eggdrop (ein IRC bot) platziert. Ein einfaches TCL-Script für eggdrop schaut in regelmässigen Abstanden nach dieser Datei, gibt den Inhalt ggf. in einem IRC channel aus und löscht die Datei anschließend.

Was mir an diesem Verfahren als Programmierer missfällt ist das ständige "pollen" - bei dem TCL Script ist es auf Grund es Intervalls von 5 Min noch vertretbar. Bei dem jetzigen Verfahren ist eine zeitnahe Reaktion notwendig.

Wenn alle Stricke reissen werde ich es aber wohl so mit Hilfe von cron realisieren.

Gruß,
hotrs
 
Auch dir danke für die Antwort ;).

Ich empfehle dir da am Besten eine höhrere Sprache zu nehmen, Perl z.B.

Schade, ich hatte mit einem Hinweis auf was "Fertiges" gerechnet ;). Ich kann doch nicht er erste sein, der vor so einem Problem steht?

Wobei, wenn ich es z.B. per PHP Script auf dem Web-Server schaffe, einen Job bei atd einzureihen ... Ich sehe schon, mein Spieltrieb wird voll auf seine Kosten kommen :D.


Gruß,
hotrs
 
Last edited by a moderator:
Mein Vorschlag:
Häng Dein Shell-Script per xinetd auf einen freien (hohen) Port ein. Achte darauf, daß der xinetd bei diesem Port nur auf localhost lauscht.
Eine Connection läßt sich ganz leicht in einem Script bewerkstelligen. Z.B. PHP:
Code:
$fp = fsockopen("localhost", 12345);
fclose($fp);

Verfeinern kann man das ganze dann noch mit Befehlen, die man per fputs() schreibt und mit "read VAR" im Shell-Script einließt.

huschi.
 
Back
Top