pondělí 30. července 2012

Netdisco v praxi

Již v minulosti jsem zkoušel zprovoznit system Netdisco a zde na blogu jsem o tom psal velmi obecné informace. Onehdá jsem už neměl čas systém více poznat a použít jej tam kde je jeho silná stránka a tou jsou sítě s Layer 2 přepínačema. Nyní jsem provedl vesměs naprosto stejnou instalaci na FreeBSD 8.2.

Pro instalaci jsem volil port net-mgmt/netdisco/ který mi nainstaluje aktuální verzi 1.1.

n e t  d i s c o
--------------------------------------------------
Netdisco Version   : 1.1
SNMP::Info Version : 2.06
Net-SNMP Version   : 5.0701
Perl Version       : 118.53.46.49.52.46.50

Netdisco je dle webu vývojářů vyvýjeno na FreeBSD a tudíž v dokumentaci nechybí ani informace potřebné k instalaci. Jistá zastaralost dokumentace znát ovšem je. Volil jsem použití Apache 2.2 a PostgreSQL 9.1 s tím že tuto volbu port akceptuje.

Během instalace jsem měl jen jeden problém s konfliktem dvou balíků pkg_config a pkgconf. Musel jsem pkg_config odinstalovat a s nim i zavislosti. Posléze jsem instaloval port graphics/graphviz, který si pkgconf žádal. Zbytek instalace již nevykazoval problémy.

Po instalaci portu netdisco bylo třeba provést úkony v  postinstalačním postupu, který jsem zmiňoval již v prvním příspěvku. Tímto postupem importujeme db schéma do PostgreSQL a nastavíme systém tak, aby služby nastartovaly atd.

Pro přihlášení do Web GUI bylo třeba si přidat patřičného uživatele.

netdisco -u admin

Pro fungování v praxi jsem testoval přidávat switch Dell PowerConnect 5448 s public komunitou.

Pro přídání switchů jsem nejprve užil web GUI, ale i s debug režimem se mi nechtěl přidat i přes prověření funkčnosti SNMP pomocí snmpwalk, které odpovídalo.

snmpwalk -Os -c public -v 2c 192.168.0.42 system
sysDescr.0 = STRING: PowerConnect 5448
sysObjectID.0 = OID: enterprises.674.10895.3021
sysUpTimeInstance = Timeticks: (361894700) 41 days, 21:15:47.00
sysContact.0 = STRING: SmEjDiL
sysName.0 = STRING: switch42
sysLocation.0 = STRING: DKnL
sysServices.0 = INTEGER: 2
sysORLastChange.0 = Timeticks: (0) 0:00:00.00
sysORID.1 = OID: enterprises.89.73
sysORDescr.1 = STRING: RS capabilities
sysORUpTime.1 = Timeticks: (0) 0:00:00.00


Dle manuálové stránky patřičného modulu jsem se dočetl o potřebných MIB souborech.

man SNMP::Info::Layer3::Dell

Dále jsem postupoval tak, že jsem zařížení přidával za pomocí cmd.

netdisco -d 192.168.0.42
n e t  d i s c o
--------------------------------------------------
[
192.168.0.42] Discover starting
[
192.168.0.42] [Trying SNMP Version 1]
[
192.168.0.42]  Fetching Device Info
[
192.168.0.42]  Fetching Device Info
[
192.168.0.42]  Fetching Interface Information
[
192.168.0.42]   32 Interfaces.
[
192.168.0.42]  Fetching VLAN Information
[
192.168.0.42]   Scrubbing VLANs from device_port_vlan table... 0 removed
[
192.168.0.42]   Scrubbing VLANs from device_vlan table... 0 removed
[
192.168.0.42]   28 VLAN Interfaces, 1 names.
[
192.168.0.42]  Fetching Power Information
[
192.168.0.42]   0 Power Modules
[
192.168.0.42]  Fetching Module Information
[
192.168.0.42]   0 Modules.
[
192.168.0.42]  Fetching Neighbor Information
[
192.168.0.42]   ! CDP not Enabled.

Tento příkaz již napovídal, že mu chybí potřebné SNMP MIB definice. Netdisco má jeden balík MIBů. Tento balík obsahuje velké množství MIB souborů od ruzných výrobců i ty normované RFC, ale i přesto bylo třeba stáhnout MIBy od výrobce.

netdisco-mibs-0.9   Mibs for use with ports-mgmt/netdisco (and snmp)

Po chvilce googlování jsem požadované soubory postahoval např. z http://www.oidview.com/.

Během používání Netdisco jsem narazil na dvě chybové hlášky.

/usr/local/www/netdisco/device.html 789

Popis problému je v konferenci.

## line 789
## replace:
%  for my $f qw(fw hw sw) {
## with:
%  for my $f (qw(fw hw sw)) {


Např. pří restartu apache se objevovala tato druhá chyba na řádku ...

/usr/local/lib/perl5/site_perl/5.14.2/netdisco.pm 337

Stejné řešení s popisem problému zde.

Žádné komentáře: