2016-04-26 11 views
0

Wie kann _user_ umleiten PID sowie stdout und stderr von sudo (und nicht der Unterschale es laicht) einreichen?Redirect _sudo_ ‚s PID, stderr und stdout Datei

I.e.
{sudo-process} &> >(tee /path/foobar > /dev/null) oder
{sudo-process} 2>&1 | tee /path/foobar &>/dev/null)
so weit wie stdout und stderr: die sudo passwd Anfrage ([sudo] password for _user_: _) und jeder Fehler normalerweise an dem aktuell Shell gesendet stdout und stderr durch sudo sollen jede geeignete Datei /path/foobar, im Geist des umgeleitet werden sind besorgt. In meinem Anwendungsfall wird PID auch benötigt, um das unbeaufsichtigte Töten des sudo Prozesses von einem externen Skript mit entsprechenden privis möglich zu machen.

Mit "aktuelle Shell", ich meine die Shell, in der der sudo Prozess lebt. Am weitesten entfernt ist ein mögliches askpass Programm (siehe Option -A in man 8 sudo) und die Möglichkeit, plugins zu verwenden, die relevant sein können oder nicht. Ich habe überhaupt keine Erfahrung damit. Können Sie mir helfen?


Hinweis: Ich bin NICHT bei Umleiten Ausgang von einem Shell-gelaicht von sudo zu Datei suchen. Wie in:
$ sudo cmd &> /path/foobar oder $ sudo sh -c 'cmd &> /path/foobar'
, ob /path/foobar je eine Datei mit den entsprechenden Schreibrechte, das heißt zugänglich cmd ‚s Umleitung von stdout und stderr. Das ist nicht das Problem.

EDIT:
@JohnKugelman schlägt sudo -n läuft die sudo verursacht eine Fehlermeldung an stderr auszusenden und zu sterben, falls ein passwd benötigt wird. Das kümmert sich um:
- Umleitung stdout, da es keine mehr gibt.
- die Notwendigkeit, sudo PID zu speichern, da der Prozess von selbst stirbt.

Das Hauptproblem bleibt: Wie Umleitung sudo 's stderr zu Datei?

+1

Zu welchem ​​Zweck? Vielleicht wäre "sudo -n" besser: "Die Option' -n' verhindert, dass sudo den Benutzer nach einem Passwort fragt. Wenn ein Passwort für die Ausführung des Befehls benötigt wird, zeigt sudo eine Fehlermeldung an und beendet sich. " - [sudo (8)] (http://linux.die.net/man/8/sudo) –

+0

@JohnKugelman: Danke. Ich habe genau in diesem Moment über diese Option gelesen. Das kümmert sich um 'sudo's PID, da es nicht mehr gespeichert werden muss. Das Hauptproblem bleibt jedoch: * Umleitung 'stderr' von' sudo' Prozess in Datei, ** unbeaufsichtigt **.* – Cbhihe

Antwort

2

Um sudo des stderr zu umleiten in Datei:

sudo -n cmd -- &> /path/of/the/file 
+0

Danke, MarcoS. :-))) – Cbhihe

+0

Ich bin froh zu helfen :-) – MarcoS