Главная / Заметки / Контакты
Взаимодействие с устройствами по Telnet.

Задача: есть множество устройств (например коммутаторов), доступ на которые есть только по telnet. Необходимо неким образом настроить все эти устройства, отправляя команды по Telnet.

Решением может быть такой bash-скрипт:

#!/bin/bash
set -x
#Входные данные:
USER="username"
PASSWD="password"
HOSTS="
10.187.224.1
10.187.224.2
10.187.224.3
10.187.224.4
10.187.224.5
10.187.224.10
10.187.224.48
"
for H in $HOSTS
do
LOG="logs/$H.log"
echo START SCRIPT: >> $LOG
echo HOST:$H >> $LOG
date +%x-%R >> $LOG
(
sleep 3;
echo -en "$USER\r";
sleep 3;
echo -en "$PASSWD\r";
sleep 3;
#echo -en "config dhcp_relay delete ipif System 11.22.33.44\r";
#sleep 3;
#echo -en "config dhcp_relay delete ipif System 22.33.44.55\r";
#sleep 3;
#echo -en "save\r";
#sleep 10;
echo -en "show dhcp_relay\r";
sleep 3;
echo -en "logout\r";
sleep 3;
) | telnet $H >> $LOG &
echo =================================== >> $LOG
done


Логика работы скрипта: создается набор команд с обязательными паузами между ними. Длина паузы определяется опытным путем, но лучше больше, чем меньше. Этот набор через telnet засылается на устройство.

Пояснения:
- USER и PASSWD - соответственно логин и пароль.
- HOSTS - сюда вставить ip всех нужных устройств, по одному на строку.
- Рядом со скриптом сделать папку logs для логов (или, если не надо - закомментить все, что связано с логами).
- Прописать нужные команды по образу и подобию. Каждую команду заканчивать \r.

В результате должны получится логи (весь вывод) в logs - отдельный файл по каждому устройству.