![]() |
|
Модераторы: powerfox, ZeeLax |
![]()
|
|
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Подскажите, пожалуйста, в таком вопросе.
Начал читать книгу по UNIX-системам. Там говориться о том, что можно "скормить" программе, требующей ручного ввода, данные из файла с помощью операции < . Попробовал, но столкнулся с такой проблемой: вводится весь файл целиком, а хотелось бы, чтобы он подавался на вход по мере надобности. Т.е. программа запросила первый параметр - первую строку, второй параметр - вторую строку, и т.д. Или я не в ту сторону думаю, и данной операцией проблему не решить? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| cenix |
|
|||
|
/dev/null ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 7.8.2004 Репутация: нет Всего: 4 |
Операции <, > просто позволяют перенаправить стандартные потоки туда куда надо тебе, например из файла не на экран, а в поток ввода другой проги. Если ты хочешь читать по одной строчке, ты должен это сам делать, насколько я знаю так как ты хочешь( Т.е. программа запросила первый параметр - первую строку, второй параметр - вторую строку, и т.д.) нельзя сделать автоматом.
|
|||
|
||||
| Шмель |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 16.4.2004 Репутация: 7 Всего: 18 |
можно Lamer George, тебе нужен Expect к сожалению, сам я им не пользовался, но доподлинно известно, что предназначен он именно для таких нужд --------------------
будешь на Земле - заходи |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Шмель
Спасибо, обязательно попробую. А можно ли сделать то же самое из shell-скрипта? Как я понял, Expect использует свой язык и компилятор (Tcl), хотя и довольно легкий. Учить два языка одновремено будет тяжеловато -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| cenix |
|
|||
|
/dev/null ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 7.8.2004 Репутация: нет Всего: 4 |
Шмель
я говорю, что нельзя стандартными командами никсов это сделать, а если уж юзать как ты говоришь Tcl, то можно с тем же успехом считывать по строчке на с, благо gcc обычно всегда есть |
|||
|
||||
| Шмель |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 16.4.2004 Репутация: 7 Всего: 18 |
Только что в новостях на ЛОРе наткнулся на упоминание об еще одной интересной утилите, предназначенной для замены Expect. Называется она empty
--------------------
будешь на Земле - заходи |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Похоже, она попроще. Просто тот вариант я отложил на попозже, потому что он требовал установки TCL. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 2 Всего: 39 |
Если программа выводит предложения на ввод в стандартный выходной поток, то можно попробовать использовать файл - через который будет веститься диалог.
./MyScript | program >> dialogFile В MyScript Можно вставить бесконечный цикл, в котором программа дописывает разделитель (любое число, которое с большой долей вероятности не встретиться в выводе программы program). После, того как разделитель дописан, он (скрипт) выбрасывает в свой выходной поток нужные символы, после чего организуем еще один бесконечный цикл (или накладываем условие, какое будет ясно ниже). В данном цыкле усыпляем программу на несколько секунд, читаем последнюю строку файла-диалога (tail -n 1 dialogFile). Если она не равна нашему разделителю, то прерываем цикл break, предвариельно при необходимости записав вывод программы program. Таким образом, мы попадаем в первый бесконечный цикл, где уже можем анализировать полученное от программы сообщение. Чисто теоретически должно работать. Причем всё средсвами bash'а |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Увы, выполняемый скрипт изменять нельзя. Собственно, конкретная задача - автоматизировать процесс установки билда на серверах, чтобы можно было запускать его автоматом по ночам. Установка крепко интеракивная, требуется вводить много конфигурационных параметров.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
Lamer George, если билды неудобны для автоматизации, то нужно иг изменять а не извращаться.
билд он для того и билд, чтобы получать строку с параметрами. можешь привести пример того что нужно сделать ? ( желательно с примерами вывода. ) еще направление: возможно билды всего-то что и делают - создают конфигурационные файлы с параметрами... так может тебе скрипт такой автоматицццссский написать самому ... ? Это сообщение отредактировал(а) bilbobagginz - 22.12.2005, 18:46 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: нет Всего: 151 |
Менять его нельзя, потому что именно в таком виде он доставляется кастомерам. Мы должны иметь одинаковые платформы.
Суть в том, что надо автоматом вводить yes в ответ на текст лицензии, стартовать установку различных модулей, копирование фалйов, ввод параметров баз данных, номеров серверных портов, каталогов, почтовых аккаунтов и пр. В принципе, делать это руками не так сложно, просто времени уходит много, особенно на генерацию схем в базе данных. Примеры вывода:
и т.д.
Нет, они еще и непосредственный деплоймент разворачивают. К тому же, просто файлы не подменить - их очень много, и они меняются со временем. Проще через имитацию ввода сделать. Вроде empty - это то, что нужно. Я даже сумел ее поставить, для меня это немало Это сообщение отредактировал(а) Lamer George - 22.12.2005, 23:06 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |