Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт для проверки uptime железок 
:(
    Опции темы
moonshiner
Дата 13.4.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.4.2010

Репутация: нет
Всего: нет



Доброго всем времени суток! 

Третий день бьюсь и не могу найти в чем проблема, я в Perl новенький, может кто сходу решение подскажет. 
Задача: просмотреть uptime всех железок сети, имеем текстовый файл со всеми железками в виде
ws-moonshiner# cat hosts.txt 
cisco-1
cisco-2
cisco-3
....

cisco-1, cisco-2 - это доменные имена. Написал вот такой вот скрипт: 


Код

#!/usr/bin/perl -w

use Net::SNMP;
use IO::File;

my $fname = "hosts.txt";
my $fh = IO::File->new("<$fname") or die "IO::File:$!\n";

while(my $line = $fh->getline) {
    next if $line =~ /^#/ or $line =~ /^$/;
    print $line;
        my ($session, $error) = Net::SNMP->session
        (
        -hostname => $line,
        -community => 'community',
        -port => '161',
        );
        $sysUpTime ="1.3.6.1.2.1.1.3.0";
        if($session){
        $result = $session ->get_request("$sysUpTime");
        for $key (keys (%{$result})) {
            print $result->{$key}, "\n";
            };
        }else {
            print "Can't connect to host - ",$error;
        };
};
$fh->close;


Все бы хорошо и оно даже работает, если бы не одно НО - если в файле прописаны доменные имена, получаю следующее: 

 ws-moonshiner#./uptime.pl 
 cisco-1
 Can't connect to host - Unable to resolve UDP/IPv4 address 'cisco-1'
 ...

если же ip адреса, то SNMP запрос проходит без проблем: 

 ws-moonshiner#./uptime.pl 
 172.27.173.1
 83 days, 16:52:06.79
 ...

Может быть в скрипт еще Net::DNS засунуть? или regexp какой-нибудь использовать?... посоветуйте пожалуйста.

Это сообщение отредактировал(а) moonshiner - 13.4.2010, 17:20
PM MAIL   Вверх
arto
Дата 13.4.2010, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



host cisco-1 что говорит?
PM MAIL ICQ   Вверх
Pfailed
Дата 13.4.2010, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



А может нужно сделать
Код

chomp $line;


У вас же похоже $line помимо домена символ переноса строки содержит.


--------------------
PM MAIL   Вверх
dva300
Дата 13.4.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: -1
Всего: 1



он же пишет...
Цитата

 ws-moonshiner#./uptime.pl 
 cisco-1
 Can't connect to host - Unable to resolve UDP/IPv4 address 'cisco-1'


это похоже что с ДНС у тебя проблема а не со скриптом.
этот адрес вообще по имени пингуется с машины на которой скрипт пускаешь ?

--------------------
Участник движения Культура Вождения
PM   Вверх
moonshiner
Дата 13.4.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.4.2010

Репутация: нет
Всего: нет



Имя резолвится, все нормально.. самый парадокс в том, что если запихнуть в код доменное имя (см. ниже), скрипт отработает и uptime с железки стянет...
т.е. если из скрипта убирать построчное чтение из файла, то оно работает... 

Код

#!/usr/bin/perl -w

use Net::SNMP;

my ($session, $error) = Net::SNMP->session
(
-hostname => "$ARGV[0]",
-community => 'community',
-port => '161',
);

$sysUpTime ="1.3.6.1.2.1.1.3.0";
#$sysUpTime ="system.sysUpTime.0";
if($session){
$result = $session ->get_request("$sysUpTime");
for $key (keys (%{$result})) {
print $result->{$key}, "\n";
}
}else{print "Can't connect to host - ",$error;};


выполняем скрипт: 

%./uptime.pl cisco-1
223 days, 09:43:26.00

в чем засада не пойму... :-(

Добавлено через 5 минут и 21 секунду
Pfailed спасибо Вам огромное! 
и правда, проблема была в том, что hostname содержал символ конца строки... smile 

Спасибо всем за помощь!
PM MAIL   Вверх
dva300
Дата 13.4.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: -1
Всего: 1



хм... 
Цитата

Pfailed спасибо Вам огромное! 
и правда, проблема была в том, что hostname содержал символ конца строки... smile 


и как же тогда оно работало когда в файле были IP ? 
принцип действия ведь тот же. 

--------------------
Участник движения Культура Вождения
PM   Вверх
moonshiner
Дата 13.4.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.4.2010

Репутация: нет
Всего: нет



могу лишь догадываться, что это связано с особенностями работы DNS, сервер получал запрос в конце которого имелся символ конца строки и не мог его обработать... это всего лишь предположени, завтра на работе проверю и отпишу 
PM MAIL   Вверх
shamber
Дата 14.4.2010, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



уже второй человек за короткое время, имеет общение с чудным chomp, может уже в fag вынести?
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.