Автоматизация Telnet‑сессий с VBScript
Важно: Telnet передаёт данные в открытом виде. По возможности используйте SSH для удалённого управления. Если Telnet обязателен, защищайте доступ к скриптам и логам.

Написание пакетных файлов (.bat) и Windows‑скриптов (.wsf) — стандартный инструмент администратора для ускорения рутинных задач. С их помощью можно автоматизировать установку/удаление программ, аудит настроек ОС, инвентаризацию и многое другое. Сценарии, где требуется несколько этапов аутентификации или интерактивные меню (как Telnet), выглядят сложнее, но их также можно автоматизировать.
Многие сетевые инженеры подключаются по Telnet к коммутаторам и другим устройствам, чтобы проверить порты, перезагрузить оборудование или изменить настройки. Хорошо бы уметь запускать эти рутинные процедуры автоматически — как обычные пакетные задания.
VBScript предоставляет простой способ представить окно оболочки (WScript.Shell) как объект и программно посылать в него готовые клавиатурные команды. По сути скрипт делает то же, что и вы, сидя перед терминалом: отправляет команды и нажимает Enter с нужными паузами.
Как это работает
Короткая модель ума: представьте, что ваш скрипт — виртуальные руки на клавиатуре. Он открывает cmd.exe, набирает команду “telnet IP порт”, ждёт приглашения и посылает клавиши (Enter, цифры, ответы). Между отправками команд нужно ждать отклика устройства — для этого используются паузы (WScript.Sleep). Если паузы слишком короткие, ответы проигнорируются; если слишком длинные — скрипт работает медленно.
Краткие определения:
- WScript.Shell — объект, управляющий запуском приложений и отправкой клавиш.
- SendKeys — метод для отправки нажатий клавиш в активное окно.
- WScript.Sleep — приостановка исполнения в миллисекундах.
Шаг 1 — Установить Telnet‑сессию
Сначала нужно открыть окно командной строки и запустить telnet к целевому IP и порту. В оригинальном примере автор подключается к устройству по заданному IP и порту и ждёт меню.
Option ExplicitOn Error Resume NextDim WshShellset WshShell=CreateObject("WScript.Shell")WshShell.run "cmd.exe"WScript.Sleep 1000'Send commands to the window as needed - IP and commands need to be customized'Step 1 - Telnet to remote IP'WshShell.SendKeys "telnet xx.xx.xx.73 9999"WshShell.SendKeys ("{Enter}")WScript.Sleep 1000Разберите эту последовательность:
- Replace “xx.xx.xx.73” и порт на ваши значения.
- WScript.Sleep даёт устройству время на ответ и появление меню. Подберите значение по опыту (1000 = 1 секунда).

Шаг 2 — Отправка команд с паузами
После начала сессии отправляйте ответы в том порядке, в котором требует целевое устройство. В примере сначала нажимают Enter, затем вводят цифру меню и снова Enter.
'Step 2 - Issue Commands with pauses'WshShell.SendKeys ("{Enter}")WScript.Sleep 1000WshShell.SendKeys "5"WshShell.SendKeys ("{Enter}")WScript.Sleep 1000В этом фрагменте скрипт имитирует нажатие клавиш: Enter, небольшая пауза, цифра 5, Enter. Для другого устройства вам потребуется изменить символы/строки и интервалы ожидания.

Шаг 3 — Завершение сессии
Не забудьте корректно выйти и завершить процесс скрипта.
'Step 3 - Exit Command WindowWshShell.SendKeys "exit"WshShell.SendKeys ("{Enter}")WScript.Quit Готово — три простые части в одном файле. Ниже — более удобный, объединённый и слегка расширенный пример скрипта, который легче настраивать и отлаживать.
Объединённый пример скрипта (.wsf)
Внимание: этот пример даёт шаблон для редактирования; вставьте свои IP, порт и последовательности команд. Не храните пароли в открытом виде.
Советы по настройке:
- Увеличивайте pauses, если устройство обрабатывает команды медленно.
- Для сложных логинов с вводом логина/пароля добавляйте последовательности SendKeys и Sleep между ними.
- Запускайте скрипт вручную сначала в тестовой среде, чтобы отладить тайминги.
Альтернативные подходы и ограничения
- Tst10.exe и инструменты типа Expect/Tcl позволяют управлять интерактивными сессиями более гибко и надёжно, но требуют дополнительного изучения. Тst‑метод популярен у некоторых администраторов для автоматизации Telnet.
- Сценарий SendKeys ненадёжен при смене фокуса окна: если во время выполнения cmd теряет фокус, keystrokes будут отправлены не туда.
- Скрипт не подойдёт при двухфакторной аутентификации, динамических CAPTCHA, интерактивных диалогах с переменной задержкой или при необходимости защищённого туннелирования.
Рекомендации по безопасности
- По возможности используйте SSH вместо Telnet — SSH шифрует трафик.
- Не храните пароли в открытом виде в скриптах. Если нужно, используйте защищённое хранилище и разграничение доступа к файлам.
- Ограничьте права на файл скрипта (только администраторы). Логи и результаты операций также храните в защищённой папке.
- Проводите аудит и журналирование автоматических перезагрузок и изменений конфигурации.
Чеклист оператора
Для системного администратора перед запуском в продуктиве:
- Проверить IP и порт в конфиге скрипта.
- Запустить скрипт в тестовой сети и наблюдать за поведением.
- Убедиться, что cmd.exe не теряет фокус во время выполнения.
- Настроить резервное управление устройством (консоль, out‑of‑band) на случай сбоя.
Методика тестирования и критерии приёмки
Тестовые случаи:
- Проверка корректного подключения: скрипт должен подключаться к нужному IP и порту.
- Проверка последовательности: скрипт должен отправлять нужные ответы в меню и получать ожидаемый результат (например, перезагрузка устройства).
- Ошибкоустойчивость: при недоступности хоста скрипт должен завершаться с понятным логом и не оставлять «зависших» окон.
Критерии приёмки:
- Сценарий успешно завершает ожидаемую операцию в 3 последовательных тестах.
- Нет утечек учетных данных в логах.
- Операция документирована и повторяема другим оператором.
Отладка и типичные ошибки
- Проблема: Нет реакции на SendKeys — проверьте, активна ли cmd.exe и не перекрыто ли окно другим приложением.
- Проблема: Тайминг: команды приходят раньше, чем устройство готово — увеличьте WScript.Sleep.
- Проблема: Разные приглашения/меню на разных версиях устройств — создавайте условные ветви (если возможно) или отдельные скрипты под каждую модель.
Когда этот подход не подходит
- Если требуется безопасный канал (используйте SSH).
- Для сложного парсинга ответа терминала (лучше использовать специализированные библиотеки/утилиты).
- Для автоматизации больших ферм устройств — целесообразнее использовать централизованные инструменты управления конфигурацией.
Краткая памятка для быстрого старта
- Откройте текстовый файл, сохраните как Autotelnet.wsf.
- Измените IP/порт и последовательность команд.
- Тестируйте на одном устройстве — затем масштабируйте.
1‑строчный глоссарий
- SendKeys — отправка символов/нажатий в активное окно.
- WScript.Sleep — пауза исполнения в миллисекундах.
- cmd.exe — командная оболочка Windows.
Итого: автоматизация Telnet с помощью VBScript — быстрый способ избавить оператора от ручных рутинных действий при условии соблюдения мер безопасности и тестирования. Для критичных сетей настоятельно рекомендуем миграцию на SSH или применение централизованных систем управления.
Image Credit: Shutterstock
Сводка
- VBScript позволяет автоматизировать Telnet, имитируя ввод с клавиатуры.
- Важна корректная настройка пауз и тестирование в контролируемой среде.
- По соображениям безопасности следует предпочесть SSH и не хранить пароли в открытом виде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента