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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите новичку дописать скрипт. 
:(
    Опции темы
whopix
Дата 20.12.2011, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, есть два вопроса 
1) чем вывод echo в php отличается от вывода print в perl (это все делается для cacti)?
2) Помогите дописать, переписать, написать скрипт. 
написал на php на perl не получается.
вот как на пхп
#!/usr/local/bin/php
<?php
$i=0;
$snmp="snmpwalk -v 2c -c public 127.0.0.1 1.3.6.1.3.59.1.1.2.1.4.239.0.2 | grep 239.0.2 | grep IpAddress | grep -v 192.168.201";
exec($snmp,$result);
$snmp="snmpwalk -v 2c -c public 127.0.0.1 1.3.6.1.3.59.1.1.2.1.4.239.0.2 | grep 239.0.2 | grep IpAddress | grep -v 192.168.201";
exec($snmp,$result);
while ($i < 255) {
$str=str_replace(".239.0.2.".$i.".","",$result,$count);
if ($count<>0) print $i.":".$count." ";
$i++;
}
?>
вывод этого скрипта будет вот таким: 4:1 7:2 40:3 53:1 58:1 69:1 70:1 71:2
а структура (дерево) которую он опрашивает вот такая (snmpwalk -v 2c -c public 127.0.0.1 1.3.6.1.3.59.1.1.2.1.4.239.0.2 | grep 239.0.2 | grep IpAddress | grep -v 192.168.201)
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.7.125 = IpAddress: 192.168.25.95
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.40.125 = IpAddress: 192.168.25.103
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.40.138 = IpAddress: 192.168.38.21
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.40.939 = IpAddress: 192.168.202.53
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.70.133 = IpAddress: 192.168.33.99
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.71.130 = IpAddress: 192.168.30.162
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.76.305 = IpAddress: 192.168.105.64
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.82.115 = IpAddress: 192.168.15.175
смысл такой чтобы опросить устройство по snmp определенный oid подсчитать кол-во одинаковых полей и вывести номер этого поля.

для примера 
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.40.125 = IpAddress: 192.168.25.103
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.40.138 = IpAddress: 192.168.38.21
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.70.133 = IpAddress: 192.168.33.99
должен вывести 40:2 70:1 
в принципе на php он тоже не совсем корректен и требует доработок, но выдает нужное. но к сожалению нужно переписать на perl.

на перле делал по разному,
получилось сделать вывод выборки но посчитать не получилось,
в php начинающий в перле еще хуже(но учусь).
помогите если не сложно, заранее спасибо.

Это сообщение отредактировал(а) whopix - 20.12.2011, 07:11
PM MAIL   Вверх
DurRandir
Дата 20.12.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код перловый покажите.
PM   Вверх
whopix
Дата 20.12.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



самый простой
my $x=system "snmpwalk -v 2c -c public 127.0.0.1 1.3.6.1.3.59.1.1.2.1.4.239.0 | grep 239.0.2 | grep IpAddress | grep -v 192.168.201";
print @x;

вывод такой:
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.44.130 = IpAddress: 192.168.30.162
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.51.305 = IpAddress: 192.168.30.81
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.70.125 = IpAddress: 192.168.25.95
SNMPv2-SMI::experimental.59.1.1.2.1.4.239.0.2.70.133 = IpAddress: 192.168.33.42

более сложный, этот на нескольких сайтах видел

use strict;
use warnings;
use diagnostics;
use Net::SNMP;
my $snmp_host = '127.0.0.1'; 
my $snmp_community = 'public';
my $snmp_oid = '1.3.6.1.3.59.1.1.2.1.4.239.0.2';
my $snmp_session = Net::SNMP->session(
-hostname => $snmp_host,
-community => $snmp_community,
-version => 2,
) or die('Не удалось соединиться!');
my $result = $snmp_session->get_request(
-varbindlist => [$snmp_oid],
) or die('Не удалось выполнить запрос!');
print "Значение OID $snmp_oid = $result->{$snmp_oid}\n";
$snmp_session->close();

вывод: Значение OID 1.3.6.1.3.59.1.1.2.1.4.239.0.2 = noSuchInstance

т.е. вычисления не смог добавить только вывод пока 



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


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

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


 




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


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

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