2016-04-26 3 views
0

Как _user_ перенаправлять PID, а также stdout и stderr из sudo (а не из суб-оболочки он нерестится) в файл?Перенаправление _sudo_ «s PID, потоки вывода в файл

I.e. запрос sudo PASSWD ([sudo] password for _user_: _) и любая ошибка обычно отправляется на текущий оболочечному stdout и stderr по sudo должны быть перенаправлены на любой соответствующий файл /path/foobar, в духе:
{sudo-process} &> >(tee /path/foobar > /dev/null) или
{sudo-process} 2>&1 | tee /path/foobar &>/dev/null)
насколько stdout и stderr обеспокоены. В моем случае использования PID также необходим для автоматического удаления процесса sudo из внешнего скрипта с соответствующими привилегиями.

Под «текущей оболочкой» подразумевается оболочка, в которой живет процесс sudo. Самый дальний я получил возможность программы askpass (см. Опцию -A в man 8 sudo) и возможность использования plugins, которая может быть или не быть актуальной. У меня нет опыта с этим. Вы можете помочь?


Примечание: Я НЕ смотря при перенаправлении вывода из оболочки, порожденного sudo в файл. Как и в:
$ sudo cmd &> /path/foobar или $ sudo sh -c 'cmd &> /path/foobar'
в зависимости от того, /path/foobar файл с соответствующим разрешением на запись, то есть доступным для перенаправления cmd «s из stdout и stderr. Это не проблема.

РЕДАКТИРОВАТЬ:
@JohnKugelman предполагает, работает sudo -n, который вызывает sudo испускать сообщение об ошибке stderr и умереть, в случае, требуется PASSWD. Это позаботится:
- перенаправление stdout, так как его больше нет.
- необходимость хранить sudo PID, так как процесс умирает сам по себе.

Основной вопрос остается: как перенаправить sudo «s stderr в файл?

+1

С какой целью? Возможно, 'sudo -n' будет лучше:« Параметр '-n' запрещает sudo запрашивать у пользователя пароль. Если для запуска команды требуется пароль, sudo отобразит сообщение об ошибке и выйдет." - [sudo (8)] (http://linux.die.net/man/8/sudo) –

+0

@JohnKugelman: Спасибо. Я читал этот вариант именно в этот момент. Это позаботится о PID 'sudo', поскольку его больше не нужно хранить. Однако основная проблема остается: * перенаправление 'stderr' процесса' sudo' в файл, ** без присмотра **.* – Cbhihe

ответ

2

Чтобы перенаправить STDERR SUDO на файл:

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

Спасибо, Марко. :-))) – Cbhihe

+0

Рад помочь :-) – MarcoS

 Смежные вопросы

  • Нет связанных вопросов^_^