[linux-l] Wrapper für $SHELL

Peter Ross Peter.Ross at alumni.tu-berlin.de
Fr Jan 2 12:48:24 CET 2004


On Fri, 2 Jan 2004, Olaf 'Ruebezahl' Radicke wrote:

> On Friday 02 January 2004 01:35, Oliver Beck wrote:
> > Hallo BeLUG,
> >
> > ist jemand eine Möglichkeit bekannt, der $SHELL zu befehlen, das jeder
> > Befehl mit einem anderen Programm ausgeführt wird?
> alias ls='systrace ls'

Das klappt natuerlich nur fuer ls. Wenn ich Oliver richtig verstanden
habe, will er aber das bei _jedem_ Befehl machen, nicht nur bei ls.

Da ist doch schoen, wenn man die Sourcen fuer eine Shell hat:-)

Ich habe die gerade fuer die /bin/sh von FreeBSD (nicht schlagen, das
Prinzip gilt fuer alle Shells)

Hier wird das Kommando nach Parsen von der Funktion tryexec ausgefuehrt.

Hier mal kurz der Anfang:
--- Schnipp ---

STATIC void
tryexec(char *cmd, char **argv, char **envp)
{
        int e;

        execve(cmd, argv, envp);
        e = errno;

--- Schnapp ---

.. (Fehlerbehandlung)

Vor das execve wuerde ich halt den gewuenschten Befehl setzen, entweder
eingebaut oder aber ebenfalls ein execve

(Vorsicht, execve erwartet einen vollen Pfad zum Executable, das
Durchsuchen des Pfades ist hier schon in einer uebergeordneten Funktion
passiert)

Und das halt als $myspecialshell installieren sowie zur Loginshell des
Nutzers in /etc/passwd machen.

Viel Spass beim Basteln
Peter




Mehr Informationen über die Mailingliste linux-l