Массовое конфигурирование оборудования (снова), замена SNMP-server name -> hostname?

Здравствуйте!
Откину формальности типа: "Я только начал работать в сфере администрирования и столкнулся с проблемой массового конфиурирования оборудования... С разработкой скриптов я на "Вы", но при желании...и бла-бла-бла"
Стоит задача замены SNMP-server name на hostname.
Погуглил, нашел варианты от чего оттолкнуться:
smart-bit.livejournal.com/9060.html
www.lissyara.su/articles/freebsd/coding/zyxel_conf...
И все бы ничего, но как запросить у железки хостнейм (т.е. именно то что пишется перед знаком "#" )?

Подскажите пожалуйста, как это можно реализовать, или поделитесь готовым решением.
  • Вопрос задан
  • 2584 просмотра
Решения вопроса 1
@sh1kima26 Автор вопроса
Уже и позабыл о этом вопросе. Меж тем решил задачу следующим образом:
Скрипт обращается к txt файлу в котором указаны адреса и нужные имена в формате "255.255.255.255|hostname", отделяет адрес от текста, заносит их в отдельные переменные, потом заходит по адресу указанному в переменной с адресом и выполняет нужные операции. В операции по замене имени подставляет переменную с хостнеймом в текст команды. Сохраняет настройки и уходит с устройства. Цикл повторяется пока не закончится текстовый файл.

#while (<$IPadd>)
while (defined($Source = <TEMP>))
{
($IPadd, $Hostname) = (split/\|/ , $Source);
my ($command1)="$Hostname";
print "$Source $IPadd\n $Hostname";
$counter++;
	       chomp ($_);
           $t->open($IPadd);
           $t->waitfor('/:$/i');
           $t->print($username);
           $t->waitfor('/:$/i');
           $t->print($passwd);
		   $t->print ("$ena");
		   $t->print ("$conf");
			$t->print("hostname $command1");
			$t->print("$command_exit");
		    my @command= $t->cmd(Timeout => 60, String =>"$command_wrmem");
			@command= $t->cmd(Timeout => 60, String => 'y');
			$t->print("$command_exit");
			#$t->print("$command_exit");
			print "$counter",' ';
}
close TEMP;
print ('done on ',"$counter",' ');


Паузы в конце ставились из-за того, что на некоторых железках конфигурация не сохранялась.
Способ не идеальный, но в свое время помог серьезно ускорить работу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
karabanov
@karabanov
Системный администратор
zend@work: $ snmpwalk -v2c -c secretCommunity 172.32.5.254 SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysName.0 = STRING: Shestaka_12_DGS
zend@work: $


В виде циферок sysName.0 выглядит, как 1.3.6.1.2.1.1.5
Ответ написан
@throughtheether
human after all
Подскажите пожалуйста, как это можно реализовать,
На мой взгляд, проще всего это реализовать при помощи expect/pexpect. Следует (программно) залогиниться на каждое устройство, получить hostname (из приветствия или конфигурации), сформировать новую команду (snmp-server name ) и выполнить ее. Есть подозрение, что при помощи SNMP реализовать это будет затруднительно.
Если нужна дальнейшая помощь, хотя бы модели устройств и способ доступа на них (ssh/telnet) уточните.
Ответ написан
Комментировать
@Ars1s
Есть замечательный продукт у одноименного вендора - Cisco Prime Infrastructure, ваша задача решается в пару кликов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы