Multi-telnet
В работе системного администратора часто встают самые неожиданные и странные вопросы. Например, сегодня мне понадобилось выполнить изменения в конфигурации нескольких десятков единиц однотипного оборудования.
Самое простое решение, которое пришло на ум – сочинить небольшой скрипт, который заходил бы на IP-адреса нужных устройств (маршрутизаторов, коммутаторов) и выполнял там необходимые команды. То есть, имеем список однотипных устройств (с одинаковой системой команд) и имеем набор команд для исполнения. Отдаем оба списка скрипту – и он уже обходит все устройства и выполняет на каждом из них все указанные команды.
Быстрый поиск в гугле очевидных решений вопроса не дал, поэтому был написан небольшой скрипт самостоятельно.
#!/usr/local/bin/php
<?php
error_reporting(0);
require_once "PHPTelnet.php";
define('LOGIN','login');
define('PASSWORD','password');if ($argc != 3)
{
print "usage: ".$argv[0]." <devices.txt> <commands.txt>n";
exit;
};$telnet = new PHPTelnet();
$devs = file($argv[1]);
$cmds = file($argv[2]);foreach ($devs as $ip)
{
$ip = chop($ip);
$res = $telnet->Connect($ip,LOGIN,PASSWORD);if (0 != $res)
{
print "$ip – connection errorn";
continue;
};print "$ip…n";
foreach ($cmds as $cmd)
{
$cmd = chop($cmd);
$telnet->DoCommand($cmd, $res);
echo $res."n";
};print "n";
$telnet->Disconnect();
};?>
Данному скрипту дается на вход два параметра: файл с IP-адресами устройств (в каждой строке один адрес) и файл со списком команд (в каждой строке одна команда).
После запуска скрипт обойдет все нужные устройства и выполнит на каждом все заданные команды.
Скрипт примитивный, каких-то проверок не делает и работает "тупо в лоб".
Для работы скрипта необходим файл с функциями для работы по протоколу telnet – PHPTelnet.php. Можно было бы написать и свой, но зачем изобретать велосипед… Взять этот файл можно на страничке автора.
Мой блог находят по следующим фразам
