Есть ли способ получить содержимое буфера Putty из скрипта AutoHotKey? Для многих приложенийWinGetTextработает, но, похоже, не для Putty. Кроме того, AHK Windows Spy не отображает текст из буфера, поэтому я подозреваю, что Putty просто использует другой метод хранения/отображения для своего буфера.
Мне интересно, можно ли включить настройку в Putty таким образом, чтобы он отображал содержимое своего буфера стандартным для окна способом, который AHK затем мог бы воспринимать как видимый текст окна.
В качестве альтернативы я предполагаю, что может быть какая-то функция AHK, о которой я не знаю, которая может получить этот текст, но это кажется менее вероятным.
решение1
Я прочитал другой подход: пусть PuTTY запишет содержимое в файл журнала. Затем пусть AutoHotKey прочитает из файла. Это может предоставить соответствующую информацию:
autoputty-scripted-telnet-нужна-помощь
Вот еще один подход:
Он включает в себя выделение текста, копирование его в буфер обмена, а затем чтение его из буфера обмена с помощью AutoHotKey. (Он также сохраняет копию буфера обмена перед его очисткой и восстанавливает резервные копии данных буфера обмена).
показан простой пример входа с помощью PuTTY.
AutoHotkey:_Запуск_putty_или_RDP_сессий_через_меню_выбора_на_основе_дерева
Я не тестировал ни одного из этих решений. Так что удачи.
Если у вас есть доступ к серверу, вы можете рассмотреть возможность выполнения некоторых действий на стороне сервера. Например, у вас может быть ключ SSH, который позволяет пользователю выполнять только одну команду (или начало команды, например, "sudo mount", но не "sudo anything-else"); sudo также может накладывать ограничения на то, какая команда используется. OpenSSH может разрешить одному пользователю иметь несколько ключей. Таким образом, выбор используемого вами ключа на локальной/клиентской стороне может повлиять на то, что произойдет при подключении к серверу. Подробности, которые, вероятно, будут полезны для тех, кто хочет изучить этот маршрут, можно найти здесь:
решение2
Я проделал такой процесс перед использованием ImageSearch
команды: сделал снимок экрана пустого приглашения на вход и использовал ImageSearch, чтобы определить, было ли достигнуто приглашение. Я обнаружил, что это относительно надежно (хотя и не идеально) — это может сработать для вас!
Для более надежной системы вам, вероятно, придется написать скрипт, который будет выполнять взаимодействие по ssh для вас, например , python
с pexpect
, что я успешно использовал. Инструкции о том, как это сделать, выходят за рамки этого вопроса, но в зависимости от того, какие языки сценариев вам знакомы (кроме AutoHotKey), я уверен, что такая возможность найдется. У меня нет опыта выполнения таких вещей в perl
, но это может быть возможно.