Я делаю ручной процесс, который выполняется каждый день в Putty и хотел автоматизировать его. Человеку нет необходимости делать это, потому что все вводы с клавиатуры не меняются каждый день. Я пытаюсь высвободить время для повышения производительности, не говоря уже о том, что постоянно делать это каждый день просто ошеломляюще. Этот процесс требует, чтобы кто-то открыл Putty (это, конечно, использовало бы plink), авторизовался (сохранение пароля и имени пользователя в виде простого текста, шаги для генерации ключа не нужны), введите те же нажатия клавиш, выведите файл вручную, а затем сохраните его в папке сетевого диска. Так что это совершенно ненужный процесс, чтобы кто-то делал это вручную, и я ищу способ завершить эту автоматизацию.
В настоящее время это используется в среде Windows 10 и из того, что я прочитал, Putty (plink) - лучший маршрут до go. Я могу использовать другие программы S SH, если есть лучший метод, но я думаю, что это может быть лучший путь из исследований, которые я провел. Я совсем не писал сценариев и пытаюсь немного научиться этому, как я go. Мне нужно автоматизировать вход в систему PLINK (готово), а затем несколько записей клавиатуры (вроде готово) для каждого экрана на сервере, к которому я обращаюсь. По сути, каждый экран должен вводить заранее определенные клавиши клавиатуры, такие как «ENTER», некоторые цифры 1-10 в зависимости от экрана, а затем, когда он будет завершен, мне нужно распечатать результаты в файл, который предпочтительно будет xlsx, но CSV или текст будет достаточно.
Ниже я добавил код, который мне удалось создать. Я застрял в этой точке, потому что PLINK не остается видимым, поэтому трудно проанализировать проблему, и курсор продолжает переходить к любому активному окну при его запуске.
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\PuTTY\plink.exe 123.server.com -l username -pw password -t{ENTER}"
WScript.Sleep 3000
WshShell.AppActivate "plink.exe"
WScript.Sleep 2000
WshShell.AppActivate "plink.exe"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 6000
WshShell.AppActivate "plink.exe"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 6000
WshShell.AppActivate "plink.exe"
WshShell.SendKeys "command123{ENTER}"
Обновление
Я попытался использовать предложенный код, и он работает с точки зрения автоматизации входа в систему и запуска приложения на сервере, но он не принимает никаких входных данных, которые я пытаюсь кодировать. Каждый раз, когда используется вход, отображается следующее сообщение ниже. Пожалуйста, обратите внимание, что моя команда, которую я передаю, на 100% верна, просто кажется, что она даже не учитывается. Сценарий фактически вводит текст в соответствующее поле, но он просто выдает ошибку.
Enter program name (or abbreviation): I don't recognize
that program name. Press <return> for a list of programs."
(я обновил код в соответствии с предложениями).
(
echo WEST COAST
timeout /t 5 > nul
echo 09
timeout /t 5 > nul
echo third_screen_keys
) | C:\PuTTY\plink.exe 123.server.com:PORT# -l username -pw password -t