Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Утановка значений перем. в CSM - Cisco через XML


Автор: Val57 21.12.2006, 04:46
Как это делается описано здесь:

http://www.cisco.com/en/US/products/hw/switches/ps708/module_installation_and_configuration_guides_chapter09186a008022ff2b.html#wp1038546

http://www.cisco.com/en/US/products/hw/switches/ps708/module_installation_and_configuration_guides_chapter09186a008022ff46.html

Я не сетевик, поэтому для меня сложновато схватить это слёту. 

Мне нужно в Веб перловском приложении изменить-установить статус реального сервера в лоадбалансере. Проблем с чтением текущих состояний через  SNMP протокол у меня нет, а вот писать они не позволяют. См. ответ ис CISCO-support:
-------------------------------
The MIB definitions in the MIB file are not correct. Development had created a CISCO-SLB-CAPABILITY-MIB which should have corrected the fact that all of the objects should be read-only. That MIB is available on CCO, though it's not well linked to the MIB lookup pages:

 ftp://ftp-sj.cisco.com/pub/mibs/v2/CISCO-SLB-CAPABILITY.my

 The capability MIB was added as a result of CSCds80184 regarding the lack of write access implementation in the SLB MIB. And the response from the DE is that this is by design and that the SLB MIB should be read only.

 --------------------------

Короче, SNMP - только для чтения. Через XML я не делал.

Помогите! Куда грести, мужики?







Автор: nitr 22.12.2006, 00:10
Для работы с XML множество модулей http://search.cpan.org/search?query=XML&mode=all
Я бы посоветовал http://search.cpan.org/author/PAJAS/XML-LibXML-1.62001/LibXML.pod, а более простой http://search.cpan.org/author/GRANTM/XML-Simple-2.16/lib/XML/Simple.pm
Как работать в перл с XML много описано и на форуме - воспользоваться поиском.

Как я понял из документации по ссылке http://www.cisco.com/en/US/products/hw/switches/ps708/module_installation_and_configuration_guides_chapter09186a008022ff46.html
, то вам с помощью модулей, указанных выше необходимо генерить данный документ. Я к сожалению не работал с Cisco так много smile , но попробую тоже потестировать.

Если у вас есть больше информации, то просьба поделиться. Постараюсь помочь. К Cisco благо доступ есть ;)
А из первой ссылки я понял, что описывается - как пользоваться этим CSM.
Cisco любая подойдёт для тестового плацдарма? smile у меня модели 877 и 871

Автор: Val57 22.12.2006, 04:19
Постараюсь вкратце пояснить для чего всё это нужно. Я уже второй год работаю "программистом" в американсой компании занимающейся предоставлением услуг по хостингу.  Клиентов много. В месяц приход составляет $30 млн. долларов. Естественно существуют веб приложения/системы для управления всем этим хозяством (для серверов под UNIX, это там где я, под Windows другая команда) одна со стороны работников (служб поддержки), которая в основном на PHP-mySQL, другая для клиентов работает под PERL-MASON-mySQL. Моя работа заключается в бесконечном усовершенствовании этих систем. Вот и работаю одновременно и в перле и в рнр с java скриптом на гарнир. PHP не люблю, зачем он вообще был придуман - остаётся только гадать, теперь в сложных приложениях приходиться "гланды через одно место вырезать". От perl - болдею. Это можно назвать любовью с первого взгляда - когда я начал делать первые CGI - приложения по приезду в Канаду восемь лет назад в эпоху .COM-омовской золотой лихорадки.  Perl - это не просто язык программирования- это стиль жизни. Свою первую программу я написал в 1975 году и поверьте мне было с чем сравниваьть PERL-идеологию, после 20 лет моей доперловой эпохи.

Проблема в том, что я не сетевик, и когда у кого-то возникла идея показывать пользователям некоторые параметры  сетевых модулей в реальном времени, пришлось с нуля врубаться в эти CISCO, MIB, SNMP-протокол, OID и т.п. Сейчас всё читается, в моём примере, состояние реального сервера в лоадвалансере (далее LB, как он зовётся по-русски не видел). Потом сказали, а не плохо бы, чтобы пользователь сам изменял состояние реального сервера. Я тоже поначалу подумал, что через SNMP-протокол, согласно документации это можно делать. Промучился пару дней - ничего не пишется.
Заслали письмо с CISCO-support, а они говорят - "Сорри, ошибочка в документации. Параметры только для чтения"

Один яйцеголовый сетевик сказал, что как-то можно через XML ... и пропал на неделю - атаки отбивал (физически он присутсвует в Техаском отделении фирмы и так его не поймаешь). 
По его ссылкам я толком ничего не понял. Вот и решил поискать помощи на форумах. 

Спасибо  nitr за первый отклик. 

С XML у меня проблем нет. По-моему я работал с XML::Simple и парсил довольно сложные XML-файлы.
Также работал с RPC - делами. Тут, как я понял, простые xml-льки и RPC не пахнет. Здесь, как я догадываюсь надо установить LWP - соединение с LB, по его реальному IP, а не по какому-то свичевскому IP. IP мне сетевики дадут. Короче эмулировать браузер, это я делал уже не раз и  вперёд как в одной из ссылок написано. Ты ему туда, а он тебе обратно.  

"Cisco любая подойдёт для тестового плацдарма?  у меня модели 877 и 871 " - доберусь до сетевиков спрошу, но это не раньше чем через неделю. У нас 25 рождество и все уже разбежались.

Я думаю это не такая уж уникальная задача - программно изменит что-то в CSM. Как сетевики-то это делают? Не с отвёрткой же в руках.


Автор: Val57 5.1.2007, 02:25
Праздники пролетели (в Америке). Сегодня связался в сослуживцами из Техасского филиала компании и вместе решили эту задачку.

Первую инфо я взял из:
http://users.skynet.be/pascalbotte/rcx-ws-doc/perlpost.htm

Немного адаптировали и заработало:
IP - мною изменены 

это пример для создания фермы и реал сервера (без активизации)
--------------------------------------------------------------------
#!/usr/bin/perl -w

use strict;

use LWP::UserAgent;
use HTTP::Request::Common;

my $userAgent = LWP::UserAgent->new(agent => 'perl post');

my $message = <<MSG;
<?xml version="1.0"?>
<config>
 <csm_module slot="9">
   <serverfarm name="FOO">
      <real_server ipaddress="1.2.3.4">
      </real_server>
   </serverfarm>
 </csm_module>
</config>
MSG
 
my $response = $userAgent->request(POST 'http://202.188.4.171/xml-config',
Content => $message);

print $response->error_as_HTML unless $response->is_success;

print $response->as_string;

print "\n\n\n\nThe End\n";
----------------------------------------------------------------------
На выходе:

HTTP/1.1 200 OK
Connection: close
Content-Length: 23
Client-Date: Thu, 04 Jan 2007 23:18:17 GMT
Client-Peer: 202.188.4.171:80
Client-Response-Num: 1

<?xml version="1.0"?>




The End


-----------------------------------------------------------------------
Для активизации реал сервера:

my $message = <<MSG;
<?xml version="1.0"?>
<config>
 <csm_module slot="9">
  <serverfarm name="FOO">
   <real_server ipaddress="1.2.3.4">
    <inservice sense="yes">
    </inservice>
   </real_server>
  </serverfarm>
 </csm_module>
</config>
MSG
-------------------------------------------------------------------------

Я ещё поработаю с этим в реале пару недель. 
Если есть вопросы. Пишите.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)