faq обучение настройка
Текущее время: Пн июл 28, 2025 18:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: perl ssh/telnet login 3028 3200 3100
СообщениеДобавлено: Пн авг 19, 2013 17:50 
Не в сети

Зарегистрирован: Сб окт 06, 2012 18:21
Сообщений: 42
Есть некое количество коммутаторов.. хочется сделать небольшой скрипт для получения информации с коммутатора..
т.к. ssh в коммутаторах "волшебный", кое где даже делает ребут при попытке подключения..

кто-нить может поделиться рабочим perlовым скриптиком (куском), который успешно зайдет на коммутатор по ssh/telnet?


п.с. на DGS-3100-24 тоже было бы очень интересно, там тоже очень особая "уличная магия".

п.с.с. впринципе более актуально все же последнее.. но опять же best practice по первым двум моделям не помешали бы..


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: perl ssh/telnet login 3028 3200 3100
СообщениеДобавлено: Вт авг 20, 2013 04:18 
Не в сети

Зарегистрирован: Пт сен 07, 2012 16:47
Сообщений: 31
Откуда: SPB
Есть вот такой модуль для DES-3526 и DES-3200:
Код:
 package Connect_to_sw;
BEGIN {
use Exporter ();
use Expect;
@ISA = "Exporter";
@EXPORT = ("&connect_to_sw", "&logout");
}
sub connect_to_sw{
my $sw_ip=$_[0];
########## VAR ################################################
my $user = 'YOUR LOGIN';
my $pass = '.YOUR PASSWORD';
my $timeout='3';
my $telnet= '/usr/bin/telnet';
########## SWITCH VAR##########################################
my $results='0'; # - don't know
my $speed_port='0';
local $error_code = 0;
########## ENTER_To_Switch ####################################
my $exp = new Expect;
#$Expect::Exp_Internal = 1; #- если нужны подробности
#$Expect::Debug = 3;  # or 2, 3 for more verbose output
#$exp->log_stdout(0); # - не выводить на экран
#$Expect::Log_Stdout = 0; #- отключить вывод на экран
$exp = Expect->spawn("$telnet $sw_ip") or die "Cannot spawn $telnet: $!\n";

$exp->expect($timeout+20, # wait long to see if the switch is not accessible
        [ qr/ser/i, sub { $exp->send("$user\n"); } ],
        [ qr/unable/i,sub { $error_code=1;}  ],
        );

if ($error_code !=0) {return $result=0;} # sw not accessible
my $patidx = $exp->expect($timeout, 'ass');
$exp->send("$pass\n");
$patidx = $exp->expect($timeout, ':');
$exp->clear_accum();
return $exp;
}
sub logout{
my $exp=$_[0];
$exp->send(" logout\n");
$exp->clear_accum();
$exp->soft_close();
}
return 1;
END { }


Вызывать вот так:
Код:
#!/usr/bin/perl -w
use lib './Modules';
use strict;
use Connect_to_sw;
my $sw_ip = $ARGV[0];
my $exp=0;
$exp=&connect_to_sw($sw_ip);
if (not $exp==0)
{
        &logout($exp);
        print "\nConnect - Ok\n";
}
else
        {print "\nConnect-Fail\n"}


Удобно для каждой проблемы писать функцию и передавать туда переменную $exp. Например
Код:
#!/usr/bin/perl -w
use lib './Modules';
use strict;
use Pvid_change;
use Connect_to_sw;
my $sw_ip = $ARGV[0];
my $exp=&connect_to_sw($sw_ip);
my $results=&pvid_change($exp);
&logout($exp);
print "\nRESULTS:\n";
print "$results\n";

_________________
Решил проблему - выложи ответ !


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB