Telnet and scripting and windows

O pen Q uality.ru

Качество программного обеспечения

Telnet Scripting Tool: автоматизация telnet-сессий

Как уже отмечалось ранее, для автоматизации интерактивного общения с системой можно применять инструменты семейства Expect (раз, два). Ниже представлена еще одна полезная утилита, позволяющая с Windows-машины управлять telnet-сессией к удаленной системе по протоколу telnet. Пример такой системы: HP iLO. По умолчанию, в ней открыт только telnet-доступ, а возможность пользоваться ssh приобретается за отдельную плату. Другой пример: продукты Cisco, также позволяющие обращаться к себе по telnet, несмотря на очевидную незащищенность такого соединения.

Итак, утилита называется Telnet Scripting Tool 1.0 (tst10.exe) и лежит здесь. Она не единственная в своем роде, но довольно удобная в интеграции с другими инструментами.

Вот ее описание, выдаваемое при запуске без параметров:

Рассмотрим такую задачу: для целей автотестирования нам нужно выполнять последовательность команд на удаленной системе (скажем, HP iLo). Последовательность команд может быть разной. Параметры команд также могут различаться. К примеру, нам нужно добавлять и удалять пользователя в той или иной системе и анализировать успешность операции.

Подготовим шаблоны для сессий добавления и удаления пользователя.

Параметры в шаблонах будут заменяться на требуемые значения, получаемые из командной строки при запуске следующего скрипта (telnetsession.js):

Этот сценарий используется при запуске tst10.exe. В логе telnet_session.log будет следующее:

Вопрос в студию: существуют ли подобные инструменты для организации ssh-сессий? Что-нибудь наподобие plink, но с интерактивностью как в tst10.exe?

Комментарии (6)

Автор комментария : Nicholas | October 24, 2011

вывод команд выполняемых на удалённой машине можно перенаправлять в файлы, а на досуге анализировать

Автор комментария : Капитан | October 24, 2011

Nicholas, спасибо за комментарий.

Нет, plink – это не совсем то, что нужно. Не хватает интерактивности – той, что присутствует в описанном выше tst10.exe (ожидаешь определенную строку, посылаешь ответ, снова ждешь и т.д. – и все это в рамках одной сессии).

Конечно, таким образом можно попробовать запускать скрипт Expect, но хочется более удобное решение.

Автор комментария : Nicholas | October 25, 2011

да, про интерактивность меня догнало когда я уже закрыл эту страницу, но я не стал вчера искать снова эту страницу, так как копирование локальных бубнов на удалённую машину и запуск их там вполне себе решает вопрос.

ещё вроде как можно попробовать использовать pseudo-terminals http://rachid.koucha.free.fr/tech_corner/pty_pdip.html

http://www.opensourcetesting.org/functional.php
Expect
Description:
Expect is a Unix automation and testing tool, for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, ssh, tip, etc. And by adding Tk, you can also wrap interactive applications in X11 GUIs.
Requirement:
Windows / UNIX
Download data:
No data feed available

Автор комментария : Капитан | October 25, 2011

Nicholas,

Да, Expect и его клоны – известная тема. Когда-то я про это уже писал:

Но вот хочется без локальных бубнов, хоть тресни. Больше всего меня смущает отсутствие в Интернете широкого обсуждения такой возможности: то ли это никому не нужно, то ли есть технические трудности. Все не соберусь написать автору plink и спросить 🙂

Про псевдотерминалы почитаю, спасибо.

Автор комментария : Kolosov | July 5, 2016

Также можно использовать пакетный клиент telnet Ctel http://helpform.ru/s0001

Читайте также:  Не могу сменить браузер по умолчанию windows 10

Автор комментария : Капитан | July 5, 2016

Kolosov, спасибо!

Добавить комментарий

КРАТКОЕ СОДЕРЖАНИЕ

Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.

Windows: Install Telnet Client – CMD & PowerShell

The telnet client in Windows is disabled by default.

Before using the telnet command in Windows it is needed to enable the telnet client, otherwise you’ll get a result similar to the below messages:

CMD: ‘telnet’ is not recognized as an internal or external command, operable program or batch file.

PowerShell: The term ‘telnet’ is not recognized as the name of a cmdlet, function, script file, or operable program.

In this note i am showing how to install the telnet client via the Windows CMD & PowerShell and how to use the telnet command to watch the Star Wars movie on the command prompt.

Cool Tip: Check if TCP port is opened in PowerShell! Read more →

Install Telnet Client via CMD

Start CMD as an administrator: press Win keybutton to open the start menu, type in cmd to search for the command prompt and press Ctrl + Shift + Enter to launch it as administrator.

Enable the telnet client in Windows via the command-line prompt (CMD):

Install Telnet Client via PowerShell

Start PowerShell as an administrator: press Win keybutton to open the start menu, type in powershell to search for the PowerShell and press Ctrl + Shift + Enter to launch it as administrator.

Enable the telnet client in Windows via the PowerShell:

Cool Tip: Kill a hanging process in Windows from the CMD! Read more →

Watch Star Wars on Command Prompt

Once the telnet client is enabled, you can use the telnet command to debug some network issues or … watch the Star Wars movie on the command prompt:

How to pass commands to a telnet window with a batch script?

I’m trying to control a wifi device with a batch script using the telnet command in Windows 7, but I don’t know how to pass the commands to the telnet window. This will be a part of a longer script tweaking other devices and PC settings.

I can do this manually by running telnet 55443 in cmd.exe, which creates a new window. In that window, I can write the commands for the device and it works as intended. However, when I write the code in the script, like this:

The are not passed on to the newly created telnet window.

1 Answer 1

The telnet command does not offer many options for entering some commands.

I will leave here two possible options

To do it in bat/cmd with vbs

To do it with the software console called Telnet Script Tool

One option would be to use SendKey/VBS very useful for sending keys, commands etc., will send your entries/type send them to telnet interfaces instance/session.

Below an example of using SendKey/VBS to send login/input data by bat file and which generates in runtime the file VBS to perform this task.

You can consider seeing this question, as to why telnet.exe is not running on bat/cmd.

To correct this, apply this command on the command line (this requires administrator rights) and run this command only once

Telnet Scripting Tool is a utility to automate telnet sessions (like calling dip on a Linux system, or doing router maintenance for example).

The Telnet Script Tool can also send entries to telnet.

Читайте также:  Формат воспроизведения аудио windows 10

Basically, this software reads the screen and looks for a prediction string that you will inform for waiting until the next command to be sent to telnet by the software.

Below is an example of using the Telnet Script Tool that send command inputs by using content of a text file: «%temp%\script_ts.scr»

  • Update v2 — Porting bat with sendkey to your command (string):

To use Send Key in your command with many special characters, you need to escape

Telnet and scripting and windows

Надоело выполнять рутинные операции с большим парком железа? Давайте разберем, как автоматизировать процесс подключения по протоколу telnet и ввода команд для удаленной настройки железа, используя скриптовый язык программирования bash.

bash (Bourne again shell, «Born again» shell — «возрождённый» shell) — Самая популярная командная оболочка UNIX/Linux.

Telnet bash script

Первым делом, давайте сформулируем задачу. Допустим, у нас есть три маршрутизатора cisco c ip адресами 192.168.10.10, 192.168.10.11 и 192.168.10.12 и компьютер с Linux. Нам требуется подключиться к каждому маршрутизатору через протокол telnet и узнать версию IOS, используя команду «show ver | include IOS». Можно, конечно, пройтись по этим маршрутизаторам, набирая команды вручную, но когда количество железок вырастет, например, до 100, согласитесь, проделать данную процедуру уже будет довольно утомительно. Поэтому сделаем скрипт, который соберет вывод команд со всех маршрутизаторов в файл.

Описание telnet скрипта

1. Начинаться любой bash-скрипт всегда должен со строки, указывающий путь к bash-интерпритатору.

2. Включаем режим отладки, прописав set -x (позволяет наблюдать за ходом выполнения скрипта в терминале).

3. Задаем входные данные. В нашем случае это имя пользователя (USER), пароль (PASSWD), названия файла, в который будет собираться вывод команд (telnnet_conn.log), и ip адреса, к которым будем подключаться телнетом (HOSTS).

4. Для организации подключения сделаем цикл с перебором ip адресов.

5. Для удобства обработки вывода команд добавим строчку начала скрипта, используя echo и дату и время начала выполнения.

6. Теперь начинается основная часть работы скрипта. Укажем команды, которые мы хотели бы, чтобы скрипт вводил за нас, а именно ввод логина, пароля и команду вывода версии IOS. Команда «sleep 1» используется чтобы расставить паузы при выполнение команд.

7. Для удобства чтения выведем разделитель (=========), используя echo.

Создать файл можно, используя команду touch имя_файла.

Чтобы не мучиться с правами, можно дать максимум привилегий.

Скрипт отработает и создаст файл с названием telnnet_conn.log, в котором и будет храниться вывод выполняемых на железяках команд.

Пример содержания файла telnet_conn.log

На этом все. Нам удалось с помощью написанного скрипта на bash автоматизировать процесс подключения к маршрутизаторам по протоколу telnet, выполнить ввод команд на удаленных хостах и записать результат их выполнения в файл. Комментируем, подписываемся ну и всем пока:)

1″ :pagination=»pagination» :callback=»loadData» :options=»paginationOptions»>

Автоматизация однотипных операций при настройке коммутаторов через telnet без программирования

Вступление

Добрый день уважаемые хабражители!

Описанные ниже способ поможет сократить количество рутинной работы при настройке коммутаторов (например Planet, D-Link и др.) в случаях, когда необходимо выполнить несколько десятков — сотен однотипных операций вроде объявления виланов, добавления их на интерфейсы, экспорта конфигурационных файлов на tftp сервер. Безусловно решение далеко не оптимальное и рациональное, но, надеюсь, имеет право на жизнь.
Настройка производится через подключение по протоколу telnet. Увы, не смотря на то что современные свитчи поддерживают ssh и snmp, многие старые железки разумеют только telnet. Способ подойдет для среднего пользователя Windows, не программиста, т.к. используется всего лишь блокнот и пакетные bat файлы (просьба неровнодышащим к параолимпийским играм программистов дальше не читать).

Основной проблемой было найти программу, которая бы позволяла подключаясь к коммутатору по telnet автоматически проходить авторизацию, после чего передавать необходимые команды. Продолжительный поиск по проблеме давал результаты двух типов: код на делфи 15-летней давности и предложения осилить telnet клиент на питоне, что, каюсь, не входило в мои планы.
Чуть позже была найдена небезызвестная Kitty. Документации по программе что кот наплакал и основная часть находится на сайте и форуме без поиска. Подкупило наличие следующих функций: Kitty умеет запускать сохраненные сессии, где можно прописать логин и пароль для авторизации, строку с командами для авто выполнения, а так же путь к файлу со скриптом. Скрипт выполнятся после авторизации, его размер должен быть меньше 4096 байт или около 100 не длинных строк.

Читайте также:  Interbase для windows 10 x64

Подготовка

По умолчанию настройки Kitty хранятся в реестре, что не очень удобно. Создаем kitty.ini со следующим содержимым:

Где savemode=dir заставляет Kitty хранить сессии в папке Sessions. Задержки в моем случае почти не отличаются от стандартных, их можно и подкрутить, главное, чтобы команды успевали отправляться и отрабатывать.
Копируем putty.exe, kitty.exe и kitty.ini в System32 и выполняем:

После этого настройки начинают подтягиваться из kitty.ini, а сессии сохраняются в C:\Windows\System32\Sessions.
Запускаем kitty.exe или kitty.exe -launcher

Создаем сессию

Перед созданием сессии рекомендую сохранить в сессии Default Settings оптимальные для себя настройки, в особенности выбрать кодировку UTF-8 в разделе Window — Translation.
Собственно сессия создается и сохраняется как обычно в Putty, только с большим количеством опций. В разделе Session выбираем telnet, прописываем host или ip адрес. В разделе Connection — Data прописываем логин и пароль для авторизации. Сделать это можно как в специальных полях, так и в строке Command или непосредственно в файле скрипта. Кому как нравится, я перепробовал все варианты. В данном примере опишу случай авторизации через строку Command. Синтаксис:

Все зависит от модели коммутатора и указанных в kitty.ini задержек, подбиралось опытным путем:

В строке Login script file указываем путь к файлу скрипта, например C:\scripts\script.txt
Возвращаемся в раздел Session, прописываем имя сессии, например testsession и сохраняем.

Пишем скрипт

В папке с файлом скрипта создаем обычный текстовый документ и сохраняем, например, как script.bat. Открываем его в любимом текстовом редакторе и пишем (и не забываем комментировать):

Первая часть скрипта позволяет выводить комментарии на русском языке. Правда для начала в свойствах командной строки нужно выставить шрифт Lucida Console. echo выводит комментарии при выполнении пакетного файла, :: двойное двоеточие — комментарии в коде (не употребляйте их в циклах).
Во второй части чистим существующий или не существующий файл, затем записываем в него скрипт. Все что угодно душе и поставленной задаче.
В третьей части запускаем Kitty с параметром -load «имя_сессии», где /wait определяет, что командный файл будет ждать пока завершится выполнение Kitty, а pause позволяет увидеть закончилось выполнение c ошибкой или всё в порядке.
Содержимое получившегося текстового файла:

Как можно догадаться при выполнения скрипта Kitty ожидает строку оканчивающуюся на # (или любое другое окончание, пример ниже) и отправляет в ответ следующую строку и т.д.

В скрипт можно перенести этап авторизации, а перед логаутом, например, добавить сохранение и экспорт конфигурационного файла.

Заключение

Таким образом можно формировать достаточно объемные скрипты и сравнительно быстро их выполнять. Недостатком, конечно же является то, что выполнять их придется частями, но таково ограничение Kitty. Наверняка есть множество других способов решения подобных задач — от загрузки готового конфига на коммутатор, до использования специализированного софта. Спасибо за внимание.

Так же удобно выполнять команды следующего рода (благо их можно быстренько штамповать как скриптом, так и банально в Excel):

Оцените статью