невидимый эмулятор терминала (sudo, xterm -e)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

невидимый эмулятор терминала

Сообщение AlexYeCu »

Вопрос №1: а существуют ли «невидимые эмуляторы терминала»? Т.е. которые не отрисовывают своё окно, но которым тем не менее можно сказать что-то вроде:

Код: Выделить всё

чудо_терминал -e команда
?

Вопрос №2: можно ли из скрипта выполнить

Код: Выделить всё

sudo команда
, а не

Код: Выделить всё

xterm -e $(sudo команда)
?

Вопрос №1 актуален вне зависимости от ответа на вопрос №2.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: невидимый эмулятор терминала

Сообщение watashiwa_daredeska »

Вопрос №1: в зависимости от потребностей, expect либо screen
Вопрос №2: да
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: невидимый эмулятор терминала

Сообщение Portnov »

2. Можно-то можно, но откуда оно должно пароль читать? Если есть активный терминал, будет читать с него. Если нет — насколько я помню, процесс sudo заблокируется.

И это. Вам точно не gksudo/kdesudo нужно?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: невидимый эмулятор терминала

Сообщение watashiwa_daredeska »

watashiwa_darede... писал(а):
10.05.2012 10:38
2. Можно-то можно, но откуда оно должно пароль читать?
1. Скрипт может быть точно так же запущен в терминале, оттуда и будет. 2. Можно настроить NOPASSWD, тогда не нужно будет пароль читать ниоткуда. 3. Можно sudo -A задействовать.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: невидимый эмулятор терминала

Сообщение Portnov »

watashiwa_darede...
Ну, если скрипт запущен в терминале, тогда всё ясно. Но скрипт может быть запущен и не в терминале... Так что да, либо -A, либо NOPASSWD.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Kopilov
Сообщения: 957
ОС: [K]Ubuntu, Debian

Re: невидимый эмулятор терминала

Сообщение Kopilov »

Вопрос дилетанта: а чем

Код: Выделить всё

чудо_терминал -e команда
будет отличаться от просто команды? Возможно, с перенаправлением вывода в файл или null.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: невидимый эмулятор терминала

Сообщение watashiwa_daredeska »

Portnov писал(а):
11.05.2012 10:08
Но скрипт может быть запущен и не в терминале...
См. вопрос №1 :)

Kopilov писал(а):
11.05.2012 10:22
Вопрос дилетанта: а чем

Код: Выделить всё

чудо_терминал -e команда
будет отличаться от просто команды? Возможно, с перенаправлением вывода в файл или null.
Наличием терминала (tty). Это даёт возможность программе "поговорить" с пользователем (запросить пароль, например).
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: невидимый эмулятор терминала

Сообщение AlexYeCu »

Portnov писал(а):
10.05.2012 14:22
2. Можно-то можно, но откуда оно должно пароль читать? Если есть активный терминал, будет читать с него. Если нет — насколько я помню, процесс sudo заблокируется.


Код: Выделить всё

NOPASSWD


Пароль как таковой не нужен, но приходится с xterm -e извращаться, чтоб из скриптов работало. Собственно, вопрос с «невидимым терминалом» первоначально возник как раз в связи с работой sudo из скриптов, это потом уже отдельно вынес, так как встречаются ситуации, в которых такая штука может быть полезной.

И это. Вам точно не gksudo/kdesudo нужно?


Точно. Надо, чтобы ряд действий, прописанных в /etc/sudoers, выполнялись автоматически от имени пользователя, без лишних вопросов (например, из автозапуска wm).

P.S. С expect пока не разбирался, но man полистал — вроде похоже.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: невидимый эмулятор терминала

Сообщение sash-kan »

AlexYeCu писал(а):
11.05.2012 15:53
Надо, чтобы ряд действий, прописанных в /etc/sudoers, выполнялись автоматически от имени пользователя, без лишних вопросов
значит, nopasswd без вариантов·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: невидимый эмулятор терминала

Сообщение AlexYeCu »

sash-kan писал(а):
11.05.2012 16:27
AlexYeCu писал(а):
11.05.2012 15:53
Надо, чтобы ряд действий, прописанных в /etc/sudoers, выполнялись автоматически от имени пользователя, без лишних вопросов
значит, nopasswd без вариантов·

Да это-то понятно, не в том дело. Даже с NOPASSWD sudo не хочет работать из скриптов, если запущена не из терминала.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: невидимый эмулятор терминала

Сообщение sash-kan »

AlexYeCu писал(а):
11.05.2012 16:41
Даже с NOPASSWD sudo не хочет работать из скриптов, если запущена не из терминала.
это значит, что где-то у вас что-то не так…

p.s. прежде чем писать, убедился, что умвр·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: невидимый эмулятор терминала

Сообщение watashiwa_daredeska »

sash-kan писал(а):
11.05.2012 16:27
значит, nopasswd без вариантов·
Можно спрашивать пароль. Можно даже сделать что-нибудь типа:

Код: Выделить всё

if [ -z "$DISPLAY" ]; then
  SUDO=sudo
elif which gksudo >/dev/null; then
  SUDO=gksudo
elif which kdesudo >/dev/null; then
  SUDO=kdesudo
else
  SUDO="xterm -e sudo"
fi
...
$SUDO command arg1 arg2 argN
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: невидимый эмулятор терминала

Сообщение AlexYeCu »

sash-kan писал(а):
11.05.2012 17:12
это значит, что где-то у вас что-то не так…
p.s. прежде чем писать, убедился, что умвр·


Может, дистроспецифичное для fedora.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: невидимый эмулятор терминала

Сообщение Portnov »

С sudo может быть вот что (тыкаю пальцем в небо): sudoers и иксы настроены так, что при запуске не из терминала либо запускаемой программе не передаётся $DISPLAY, либо её не пускают подключаться к себе иксы (что-то на тему xauth и xhost). Конечно, это актуально, если запускаете иксовые приложения.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: невидимый эмулятор терминала

Сообщение sash-kan »

watashiwa_darede...
ты совершенно прав, но в задаче требуется «без лишних вопросов»·
т.к. единственный вопрос, который может задать sudo — это запрос пароля (в зав. от настроек в sudoers — текущего пользователя или того, чьи полномочия запрашиваются), то остаётся лишь вариант nopasswd·

Portnov писал(а):
12.05.2012 08:26
не передаётся $DISPLAY
кстати, да·
AlexYeCu, вы, случайно, не x-клиента пытаетесь запустить от имени другого пользователя?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: невидимый эмулятор терминала

Сообщение AlexYeCu »

Portnov писал(а):
12.05.2012 08:26
Конечно, это актуально, если запускаете иксовые приложения.


Приложения 100% не иксовые.

AlexYeCu, вы, случайно, не x-клиента пытаетесь запустить от имени другого пользователя?


Нет, всё консольное, вроде mount, renice и ряда других не менее консольных вещей.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: невидимый эмулятор терминала

Сообщение sash-kan »

AlexYeCu
давайте попробуем формализировать·
1. у вас есть скрипт, содержащий, например, такие команды (именно в такой последовательности):
sudo mount /dev/sdb1
date >> /tmp/test
id >> /tmp/test
2. этот скрипт выполняется при «автозапуске wm» (кстати, откуда именно он вызывается?)·
3. в файл /tmp/test значение даты/времени и вывод программы id попадают·
4. /dev/sdb1 не монтируется·

я правильно понимаю ситуацию?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: