Контроль за терминалом (Автоматизация, работа со скриптами)

Модератор: Модераторы разделов

Bombus79
Сообщения: 2

Контроль за терминалом

Сообщение Bombus79 »

Здравствуйте.
Имеется: Машина с Ubunt'ой подключенная к промышленной системе через COM порт. Через этот интерфейс общение с системой ведется по VT100.
Предполагается на Ubunt'е подключить терминальную программу к COM-порту, но есть дополнительные пожелания. Хочеться автоматизировать некоторые действия. Для этого нужно, чтобы робот имел возможность вводить команды в терминал и снимать с терминала ответ (в идеале еще и делать снимок экрана в интерактивном режиме).
Есть ли боле-менее стандартные средства? Есть ли "API" к терминальным программам? Интересует возможность реагировать на поступление новой информации, а не сканировать с определенным интервалом.
Спасибо.
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Контроль за терминалом

Сообщение korisk »

Bombus79 писал(а):
12.02.2009 15:41
Здравствуйте.
Имеется: Машина с Ubunt'ой подключенная к промышленной системе через COM порт. Через этот интерфейс общение с системой ведется по VT100.
Предполагается на Ubunt'е подключить терминальную программу к COM-порту, но есть дополнительные пожелания. Хочеться автоматизировать некоторые действия. Для этого нужно, чтобы робот имел возможность вводить команды в терминал и снимать с терминала ответ (в идеале еще и делать снимок экрана в интерактивном режиме).
Есть ли боле-менее стандартные средства? Есть ли "API" к терминальным программам? Интересует возможность реагировать на поступление новой информации, а не сканировать с определенным интервалом.
Спасибо.


Если я правильно понял вы хотите автоматизировать интерактиную работу с терминалом.
В этом случае подойдёт expect и как более лёгкий вариант empty. Для работы с expect есть перловая библиотека, если я не ошибаюсь.

Удач.
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Контроль за терминалом

Сообщение watashiwa_daredeska »

Bombus79 писал(а):
12.02.2009 15:41
Есть ли боле-менее стандартные средства? Есть ли "API" к терминальным программам? Интересует возможность реагировать на поступление новой информации, а не сканировать с определенным интервалом.
API -- TTY. Создать pty, повесить робота между COM и созданным pty (чтобы он пропускал через себя все данные, идущие в обоих направлениях), а интерактивную программу подключать к pty вместо COM.
Спасибо сказали:
Bombus79
Сообщения: 2

Re: Контроль за терминалом

Сообщение Bombus79 »

korisk
Посмотрел. На сколько я понял идея этих команд в "перехвате" стандартных потоков и дополнительных инструментов облегчающих обработку потока ответных данных.

watashiwa_daredeska
Да, это вариант. Примерно так и думал реализовывать.

Благодарю. Предложенные варианты действительно можно использовать для поставленной задачи. Но хочется немного большего. Под интерактивным режимом работы терминала VT100 я подразумевал возможность вывода постоянно висящего меню (как вариант) в фиксированной области экрана, которое никуда не сдвигается даже при вводе любого количества строк (команд). В этой области может присутствовать место для "интерактивного" слежения за каким-нибудь параметром - к примеру, показатель текущей загрузки процессора, который периодически меняется.
В процессе ввода команд и их ответа, возможно обновление интерактивной области. Т.е. в момент отклика ("эхо-печать" или результат работы команды) в ответном потоке данных будут присутствовать спецсимволы, указывающие на смену позиции вывода, сам вывод, и спецсимволы возвращающие курсор на исходное место.
Предложенные выше варианты можно удобно применить в текстовом режиме. А хотелось бы еще иметь возможность снимать данные и в интеракивном режие (в том числе и с интерактивной области). Анализировать в потоке байтов исходящего с удаленной системы для какой области предназначены данные - это почти написать эмулятор терминала самому (понимать и реагировать на все варианты спецсимволов - сместить курсор вверх, очитить экран, ... - , самому сформировать виртуальный экран с которого считывать данные).
Вот в связи с этим и вопрос - можно ли и какими средствами получить снимок экрана, чтобы снимать показатели с экрана? Может какой "API" есть у каких-нибудь терминалов?

PS: Гуглил, встречался еще со "script" и LiLaLo (логирование на основе script), но как сделать скриншот так и не нашел.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Контроль за терминалом

Сообщение watashiwa_daredeska »

Bombus79 писал(а):
16.02.2009 10:02
Вот в связи с этим и вопрос - можно ли и какими средствами получить снимок экрана, чтобы показатели с экрана? Может какой "API" есть у каких-нибудь терминалов?
Нет. Весь API -- потокоориентированный pty, который не хранит никакого состояния экрана. Если что и можно найти, то только библиотеку (не знаю, не искал). В крайнем случае, можно попробовать найти и оторвать кусок существующей программы (xterm, прочие *term, screen, ...).
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Контроль за терминалом

Сообщение Portnov »

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

Re: Контроль за терминалом

Сообщение watashiwa_daredeska »

Portnov писал(а):
16.02.2009 12:26
"Скриншот терминала" невозможен в том числе и по довольно понятной причине: представьте, что выводом терминала является окошко xterm, которое можно ресайзить как угодно. Что тогда должно быть на "скриншоте"? Я уж молчу про всякие brltty.
Это как раз не такая уж проблема. Можно представить себе некоторое "условное" представление, которое впоследствии "рендерится" на реальное устройство отображения. Внутри xterm, кстати, такое представление присутствует. Попробуйте, например, for i in $(seq 1024); do echo -n X; done; echo и поресайзить окошко xterm -- он помнит "настоящие" строки, которые выводились.
Спасибо сказали: