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

Самое простое решение, которое пришло на ум – сочинить небольшой скрипт, который заходил бы на 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 error\n";
        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. Можно было бы написать и свой, но зачем изобретать велосипед… Взять этот файл можно на страничке автора.

Popularity: 5%