Как написать скрипт для автоматизации Putty (PLINK) на Windows 10 - PullRequest
0 голосов
/ 01 апреля 2020

Я делаю ручной процесс, который выполняется каждый день в 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

1 Ответ

0 голосов
/ 01 апреля 2020

Здесь довольно похожий вопрос:
Ожидание между отправкой логина и команд на последовательный порт с использованием Plink

Так что вы должны иметь возможность использовать командный файл, например так:

(
  echo first_screen_keys
  timeout /t 5 > nul
  echo second_screen_keys
  timeout /t 5 > nul
  echo third_screen_keys
) | C:\PuTTY\plink.exe 123.server.com -l username -pw password -t

(или эквивалент PowerShell, если вы * nix CR заканчиваются на строку)

...