информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередной юбилей Linux 
 HP закрыла 16-летнюю уязвимость... 
 Microsoft советует пользователям... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
надо так: read -e Name < /dev/tty2 17.05.05 16:51  Число просмотров: 1706
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
<beginners>
[linux] Перенаправление ввода с терминала. 08.05.05 19:34  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
Требуется, чтобы скрипт, запущенный, к примеру, в бэкграунде получал ввод для команды read с указанного терминала. Т.е. echo "test" > /dev/tty2 отлично работает. А вот как сделать, чтобы read брал ввод с /dev/tty2?
Уточнение - с чем трудности, сделать сначала open(... 11.05.05 12:39  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Требуется, чтобы скрипт, запущенный, к примеру, в
> бэкграунде получал ввод для команды read с указанного
> терминала. Т.е. echo "test" > /dev/tty2 отлично
> работает. А вот как сделать, чтобы read брал ввод с
> /dev/tty2?

Уточнение - с чем трудности, сделать сначала open( "/dev/tty2", ...); или даже это не помогает?
Если одна задача пытается сделать read с /dev/tty2, какая-нибудь getty например, то read другой будет ждать окончания этого запроса на ввод. Нужно рубить и убирать из респавна.
Есть подвижки 12.05.05 21:49  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
Итак, я логинюсь в /dev/tty1 и в /dev/tty2 под рутом. Из tty2 нахожу pid баша на tty1 и посылаю ему SIGSTOP. Он успешно замирает (не реагирует на ввод). Далее на tty2 я делаю:
cat /dev/tty1 | read -d q n
после чего иду в tty1 и ввожу символы, завершая ввод символом q
При этом ввод почему-то завершается только после второго нажатия q, что странно. Но всё-таки завершается, об этом можно судить по тому, что tty2 снова появляется приглашение. Но когда я делаю echo $n, то мне выводится пустая строка. Почему?
ttysnoop 13.05.05 13:24  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 13.05.05 13:35  Количество правок: 1
<"чистая" ссылка>
...
> приглашение. Но когда я делаю echo $n, то мне выводится
> пустая строка. Почему?

это не знаю... но если строку "read -d q n" вынести в другой скрипт, к примеру a.sh, и сделать
cat /dev/tty1 | ./a.sh
то оно почему-то работает как нужно :-)

Есть программки ttysnoop или ttywatch - позволяют нескольким пользователям одновременно работать с одним терминалом (или просто подсматривать, что делается на чужом теринале ;-)
TTYSnoop allows you to snoop on login tty's through another tty-device or pseudo-tty. The snoop-tty becomes a 'clone' of the original tty, redirecting both input and output from/to it.

http://freshmeat.net/projects/ttysnoop/
Попробую. Как ты считаешь, запуск из другого скрипта... 13.05.05 13:58  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
> это не знаю... но если строку "read -d q n" вынести в
> другой скрипт, к примеру a.sh, и сделать
> cat /dev/tty1 | ./a.sh
> то оно почему-то работает как нужно :-)

Попробую. Как ты считаешь, запуск из другого скрипта равносилен ли такой строчке:
cat /dev/tty1 | (read -d q n)
?
> Есть программки ttysnoop или ttywatch - позволяют
> нескольким пользователям одновременно работать с одним
> терминалом (или просто подсматривать, что делается на чужом
> теринале ;-)

Не, надо без всяких программ.
Оказывается тут в любом случае порождается новый шелл (раз... 13.05.05 16:00  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Попробую. Как ты считаешь, запуск из другого скрипта
> равносилен ли такой строчке:
> cat /dev/tty1 | (read -d q n)

Оказывается тут в любом случае порождается новый шелл (раз присутствует pipe), и read будет делаться уже в новом шелле, следовательно и переменная n будет действительна только внутри нового шелла, короче, на нее можно будет ссылаться только внутри круглых скобок.
cat /dev/tty1 | (read -d q n ; echo $n; )
А после выполнения этой команды произойдет возврат в родительский шелл, и в нем переменной n не будет...
Спасибо, всё осознал. 17.05.05 15:36  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
надо так: read -e Name < /dev/tty2 17.05.05 16:51  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach