Чтение вывода PuTTY с помощью С#
Что я хочу: Я хочу прочитать вывод окна PuttY с С#
Что у меня есть: Наша компания имеет несколько сотен серверов с не менее чем 2-3 техническими пользователями (которые работают с приложениями). У нас есть база данных всех пользователей и паролей. Поэтому он в основном ищет, копирует и вставляет для входа.
Что я хочу сделать: Напишите часть программного обеспечения, которая делает это автоматически.
Насколько я: Написал инструмент, который читает лог файл одного экземпляра PuTTY и ищет подсказку с паролем. Определяет целевого пользователя и сервера (на основе текущего сервера и su - [имя пользователя]). Получает пароль и отправляет его через PostMessage в выбранный PuTTY.
Проблема или что я хочу изменить:
Я хочу иметь возможность читать вывод PuTTY непосредственно из окна PuTTY, потому что файл журнала является ненадежным (TAB, ESCAPE и т.д., который скремблирует вывод).
Я использовал UISpy и другие инструменты для получения контроля, но не повезло.
Я не хочу использовать механизм кейлоггера или что-то в этом роде.
Может быть, крючок или что-то еще, но никогда не делал этого раньше.
Дополнительная информация:
- Соединение выполняется над JumpServer, разрешены только ssh-соединения от них к целевым серверам.
- Прямой вход с помощью технологии. пользователь отключен.
- Окно PuTTY уже открыто и используется для работы на сервере.
- Написание всего нового диспетчера подключений не является вариантом. Сотрудники знакомы с PuTTY, и это решение должно быть своего рода автономным фоном.
Дополнительная информация 2:
Цель состоит в том, чтобы написать строгое стороннее программное обеспечение. Не использовать другие SSH-библиотеки, модифицировать источник PuTTY или другие подходы. Возникает вопрос: как читать текст из окна PuTTY, рядом с лог файлами.
Ответы
Ответ 1
Я не знаю, почему это еще не было предложено, но plink (который является частью пакета PuTTY) - это версия командной строки PuTTY, вам просто нужно перенаправить stdin и stdout, чтобы получить относительно мощный (как и в функциях, вам все равно придется самому интерпретировать содержимое telnet) SSH-клиент.
Ответ 2
Считаете ли вы использование OCR?
Эскиз решения:
1 - Агент запускается, чтобы заметить окно Putty (зарегистрировать обратный вызов с ОС для новых процессов или периодически проверять список запущенных процессов)
2 - Когда замазка замечена, агент снимает скриншот и извлекает часть экрана, занятого шпатлевкой. Вам нужно будет извлечь местоположение окна, но это можно сделать с помощью вызовов ОС, если у вас есть дескриптор с шага 1
3 - Направьте данные этого изображения в tesseract или что-то еще, и верните текст. проверьте, есть ли приглашение пароля
4 - Если появляется приглашение, это звучит так, как будто после этого вы сделали все остальное (отправьте информацию, необходимую через PostMessage)
Ответ 3
Вы должны взглянуть на Эта ссылка (Putty StdIn/StdOut. Показывает, как открыть шпатлевку из приложения aС# и как обрабатывать стандарт In, Out и Error Output для связи с вашим экземпляром шпал.
Ответ 4
Если вы используете шпатлевку в качестве инструмента SSH, используйте http://www.routrek.co.jp/en/product/varaterm/granados.html С# SSH library
Если вы используете шпатлевку как последовательный инструмент, используйте встроенные классы ввода-вывода
В Telnet также есть библиотеки С#, но я могу дать какой-либо входной ключ knowoldgabel в то, что хорошо.
Ответ 5
Если вы можете использовать модифицированную версию шпатлевки, вам следует изменить источники шпатлевки и включить некоторые каналы (или сокеты), которые взаимодействуют с вашим приложением С#. Таким образом, ваш коллега поддерживает одно и то же программное обеспечение.