Здравствуйте.
Имеется: Машина с Ubunt'ой подключенная к промышленной системе через COM порт. Через этот интерфейс общение с системой ведется по VT100.
Предполагается на Ubunt'е подключить терминальную программу к COM-порту, но есть дополнительные пожелания. Хочеться автоматизировать некоторые действия. Для этого нужно, чтобы робот имел возможность вводить команды в терминал и снимать с терминала ответ (в идеале еще и делать снимок экрана в интерактивном режиме).
Есть ли боле-менее стандартные средства? Есть ли "API" к терминальным программам? Интересует возможность реагировать на поступление новой информации, а не сканировать с определенным интервалом.
Спасибо.
Контроль за терминалом (Автоматизация, работа со скриптами)
Модератор: Модераторы разделов
-
korisk
- Сообщения: 205
- ОС: Xubuntu
Re: Контроль за терминалом
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: Контроль за терминалом
API -- TTY. Создать pty, повесить робота между COM и созданным pty (чтобы он пропускал через себя все данные, идущие в обоих направлениях), а интерактивную программу подключать к pty вместо COM.
Мои розовые очки
-
Bombus79
- Сообщения: 2
Re: Контроль за терминалом
korisk
Посмотрел. На сколько я понял идея этих команд в "перехвате" стандартных потоков и дополнительных инструментов облегчающих обработку потока ответных данных.
watashiwa_daredeska
Да, это вариант. Примерно так и думал реализовывать.
Благодарю. Предложенные варианты действительно можно использовать для поставленной задачи. Но хочется немного большего. Под интерактивным режимом работы терминала VT100 я подразумевал возможность вывода постоянно висящего меню (как вариант) в фиксированной области экрана, которое никуда не сдвигается даже при вводе любого количества строк (команд). В этой области может присутствовать место для "интерактивного" слежения за каким-нибудь параметром - к примеру, показатель текущей загрузки процессора, который периодически меняется.
В процессе ввода команд и их ответа, возможно обновление интерактивной области. Т.е. в момент отклика ("эхо-печать" или результат работы команды) в ответном потоке данных будут присутствовать спецсимволы, указывающие на смену позиции вывода, сам вывод, и спецсимволы возвращающие курсор на исходное место.
Предложенные выше варианты можно удобно применить в текстовом режиме. А хотелось бы еще иметь возможность снимать данные и в интеракивном режие (в том числе и с интерактивной области). Анализировать в потоке байтов исходящего с удаленной системы для какой области предназначены данные - это почти написать эмулятор терминала самому (понимать и реагировать на все варианты спецсимволов - сместить курсор вверх, очитить экран, ... - , самому сформировать виртуальный экран с которого считывать данные).
Вот в связи с этим и вопрос - можно ли и какими средствами получить снимок экрана, чтобы снимать показатели с экрана? Может какой "API" есть у каких-нибудь терминалов?
PS: Гуглил, встречался еще со "script" и LiLaLo (логирование на основе script), но как сделать скриншот так и не нашел.
Посмотрел. На сколько я понял идея этих команд в "перехвате" стандартных потоков и дополнительных инструментов облегчающих обработку потока ответных данных.
watashiwa_daredeska
Да, это вариант. Примерно так и думал реализовывать.
Благодарю. Предложенные варианты действительно можно использовать для поставленной задачи. Но хочется немного большего. Под интерактивным режимом работы терминала VT100 я подразумевал возможность вывода постоянно висящего меню (как вариант) в фиксированной области экрана, которое никуда не сдвигается даже при вводе любого количества строк (команд). В этой области может присутствовать место для "интерактивного" слежения за каким-нибудь параметром - к примеру, показатель текущей загрузки процессора, который периодически меняется.
В процессе ввода команд и их ответа, возможно обновление интерактивной области. Т.е. в момент отклика ("эхо-печать" или результат работы команды) в ответном потоке данных будут присутствовать спецсимволы, указывающие на смену позиции вывода, сам вывод, и спецсимволы возвращающие курсор на исходное место.
Предложенные выше варианты можно удобно применить в текстовом режиме. А хотелось бы еще иметь возможность снимать данные и в интеракивном режие (в том числе и с интерактивной области). Анализировать в потоке байтов исходящего с удаленной системы для какой области предназначены данные - это почти написать эмулятор терминала самому (понимать и реагировать на все варианты спецсимволов - сместить курсор вверх, очитить экран, ... - , самому сформировать виртуальный экран с которого считывать данные).
Вот в связи с этим и вопрос - можно ли и какими средствами получить снимок экрана, чтобы снимать показатели с экрана? Может какой "API" есть у каких-нибудь терминалов?
PS: Гуглил, встречался еще со "script" и LiLaLo (логирование на основе script), но как сделать скриншот так и не нашел.
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Контроль за терминалом
Нет. Весь API -- потокоориентированный pty, который не хранит никакого состояния экрана. Если что и можно найти, то только библиотеку (не знаю, не искал). В крайнем случае, можно попробовать найти и оторвать кусок существующей программы (xterm, прочие *term, screen, ...).
Мои розовые очки
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Контроль за терминалом
"Скриншот терминала" невозможен в том числе и по довольно понятной причине: представьте, что выводом терминала является окошко xterm, которое можно ресайзить как угодно. Что тогда должно быть на "скриншоте"? Я уж молчу про всякие brltty.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Контроль за терминалом
Это как раз не такая уж проблема. Можно представить себе некоторое "условное" представление, которое впоследствии "рендерится" на реальное устройство отображения. Внутри xterm, кстати, такое представление присутствует. Попробуйте, например, for i in $(seq 1024); do echo -n X; done; echo и поресайзить окошко xterm -- он помнит "настоящие" строки, которые выводились.
Мои розовые очки