Import aus SNMP (Simple Network Management Protocol)

Das Simple Network Management Protocol wird in rimacon omniSuite nicht direkt unterstützt, aber dank der Möglichkeit, die C#-Scripte zu nutzen, lässt sich das Netzwerk mit SNMP relativ leicht scannen.

Aufgabe

Das Netzwerk scannen und Name mit Beschreibung importieren.

Lösung

Schritt 1

Für SNMP verwenden wir eine von rimacon entwickelte SNMP-Bibliothek rimacon.snmp.dll Version 2.0.0.0. (Diese wird nicht standardmäßig ausgeliefert, bitte wenden Sie sich dafür an den Support). Natürlich kann auch eine andere SNMP-Bibliothek genutzt werden, diese dient für eine schnelle Übersicht.
Kopieren Sie die entsprechende rimacon.snmp.dll in das cmdbcore.exe-Verzeichnis.

Schritt 2

Beim Import Neu ➟ Quelle Auswahl - wählen Sie C#

Schritt 3

Hier die einzelnen Code-Sektionen:
Referenzen

{$CMDBCOREDIR}\rimacon.snmp.dll
Usings:
rimacon.cmdb.ExternalDataSet
rimacon.SNMP    
Interne Definitionen:
SNMPScanner Scanner = null;
int ResultIndex = -1;
Open:
string IP_FROM = "192.168.1.1"; // Anpassen!
string IP_TO = "192.168.1.5"; // Anpassen!
int[] ports=new int[] { 161, 162 }; // Anpassen!
string[] community = new string[] { "public" }; // Anpassen!
SNMPScanner.IP4Range range = new SNMPScanner.IP4Range(IP_FROM, IP_TO, ports, community);
SNMPScanner.IP4Range rangeSimple = new SNMPScanner.IP4Range("192.168.1.13", ports, community);

Scanner = new SNMPScanner();
Scanner.StartScan( new SNMPScanner.IP4Range[] { range, rangeSimple } , 20/*ThreadCount*/, 1000/*ReceiveTimeout*/ );

while (Scanner.IsRunning) 
{
   System.Threading.Thread.Sleep(100);
}

ResultIndex = -1;

return "";

Fields:
return new FieldInfo[] { 
    new FieldInfo() { Name="IP", OriginalTypeAsString="string", CmdbType=19, CmdbLength=-1, CmdbScale=0 }, 
    new FieldInfo() { Name="Port", OriginalTypeAsString="int", CmdbType=8 },
    new FieldInfo() { Name="Community", OriginalTypeAsString="string", CmdbType=19, CmdbLength=-1, CmdbScale=0 }, 
    new FieldInfo() { Name="Name", OriginalTypeAsString="string", CmdbType=19, CmdbLength=-1, CmdbScale=0 }, 
    new FieldInfo() { Name="Description", OriginalTypeAsString="string", CmdbType=19, CmdbLength=-1, CmdbScale=0 }
};      
Read:
if (Scanner == null) return false;
ResultIndex++;
return (ResultIndex < Scanner.ResultCount);
GetData:
errmsg = "";
if (Scanner == null) { errmsg = "Error: Source not opened!"; return null; }

SNMPScanner.Result R = Scanner.GetResult(ResultIndex);
if (index == 0) return R.IP;
if (index == 1) return R.Port;
if (index == 2) return R.Community;
if (index == 3) return R.Name;
if (index == 4) return R.Description;

return null;      
Close:
if (Scanner != null) Scanner.Clear();
Scanner = null;    

Schritt 4

Button "Vorschau" anklicken.

Schritt 5

Die Konfiguration der Quelle ist damit abgeschlossen und kann jetzt genauso wie die anderen üblichen Quellen genutzt werden.

Hinweis

Das Scannen des Netzwerks kann zeitintensiv sein, daher könnten die Daten evtl. besser als Materialized View ausgelesen werden. Die Konfiguration der C#-Skripte ist 1:1 identisch.