SNMP-Abfragen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

SNMP-Abfragen

Beitrag von Jan »

Lt. Doku von MS kann man SNMP-Informationen per WMI abfragen. Ob das jetzt für mich der richtige Weg ist weiß ich aber (noch) nicht.

Es geht darum, das ich von Netzwerk-Komponenten wie Switches Detailinfos abfragen muß. Was per SNMP geht. Und SNMP wiederum kann ich per WMI ansprechen.

Ist das soweit korrekt? Wenn nein - wie dann. Wenn ja - wie spreche ich denn per WMI den SNMP an (die WMI-Demos von Alaska habe)?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SNMT-Abfragen

Beitrag von brandelh »

Du meinst doch sicher das SimpleNetworkManagementProtokoll (SNMP) oder ?

SNMT Sprint Network Modeling Tool
SNMT Shared Network Management Tool

das scheinen Programme zu sein. Hier gibt es Infos, allerdings habe ich mich da nie näher mit beschäftigt.

http://de.wikipedia.org/wiki/Simple_Net ... t_Protocol

http://www.windowspro.de/wolfgang-somme ... ren-testen
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: SNMP-Abfragen

Beitrag von Jan »

Hubert,

Du hast Recht. Als ich vorhin mit dem Admin gesprochen hatte da kam das SMTP auf, was natürlich falsch war. Aber dadurch ist das "T" irgendwie im Kopf stecken geblieben.

Ich hab mein Posting entsprechend korrigiert.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: SNMP-Abfragen

Beitrag von ramses »

Hi

ein plötzlich aufgetauchtes Problem zwang mich kurzfristeig eine Lösung zu findem um per SNMP bestimmte Geräteparameter auszulesen. Anscheinend ist dies in Xbase++ auf direktem Weg nicht vorgesehen. Auch Bibliotheken usw. sind sehr rar.
Jedoch sind einige Kommandozeilenprogramme frei verfügbar. z.B. http://sourceforge.net/projects/net-snmp/ mit Hilfe dieser habe ich eine "Quick and Dirty" Lösung erarbeitet die ich euch nicht vorenthalten möchte.

Jedoch mit der bitte Verbesserungen usw. auch hier niederzuschreiben ......

Cu Carlo

Code: Alles auswählen

#include "common.ch"
#include "dll.ch"


function main()

local cserver := "192.168.10.129"
local cError , nC


  nC  :=  snmpget(  cServer, "1.3.6.1.4.1.28507.39.1.6.1.1.2.1" , "INTEGER:" ,"N", 0.1, @cError )


  ?  "Temperatur im Rack:" + iif(empty(cError), str( nc,5,1 ) + " Grad C", cError )


return(nil)


// ///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Basiert auf den Commandlinetools von   Net-SNMP.Org     http://sourceforge.net/projects/net-snmp/
// das File snmpget.exe aus diesem Paket muss im Programmverzeichniss vorhanden sein.
//
// Dieses wird ber ein Batchfile gestartet um die Ausgabeumleitung in eine Datei zu erm”glichen
// die dann ausgewertet wird. 
//
//
function snmpget( cServer, cAdresse, cToken , cDataTyp, nMul, cError )
local cBatch, t, i
local cFileOUT := "t.txt"
local ret_val := ""

  cError := ""

  cBatch := 'snmpget.exe -v2c -Lf err.txt -c public ' + cServer + ' ' + cAdresse + " > " + cFileOut
  strfile( cBatch, "runsnmp.bat")

  NewRunShell("runsnmp.bat",, ,0,,@cError )

  if empty(cError)
        t := filestr( cFileOut )
        i := at( cToken, t )
        if i > 0
           ret_val := substr(t, i+len(cToken))
        else
            cError := "SNMPGET -> Token: "+cToken+" nicht gefunden - " + t
        endif
  endif
  if cDataTyp = "N"
      ret_val := val(ret_val)
      if nMul != nil .and. nMul != 0
        ret_val := ret_val * nMul
      endif
  endif



return( ret_val )



static Function NewRunShell(cFile, cParameters, cDir, nMode, oDlg, cError )
local sw_normal := 1
  **#define SW_HIDE 0 ; #define SW_NORMAL 1, #define SW_SHOWNORMAL 1 ,#define SW_SHOWMINIMIZED  2 ,#define SW_MAXIMIZE 3 ,#define SW_SHOWMAXIMIZED  3 ,#define SW_SHOWNOACTIVAT     4
  **#define SW_SHOW  5 ;#define SW_MINIMIZE      6;#define SW_SHOWMINNOACTIVE   7;#define SW_SHOWNA        8;#define SW_RESTORE       9;#define SW_SHOWDEFAULT      10;#define SW_FORCEMINIMIZE    11;#define SW_MAX          11
LOCAL cStartDir := iif(empty(cDir), curdrive()+":\"+CurDir(), cDir)
LOCAL nWinMode  := iif(nMode == NIL, SW_NORMAL, nMode)
LOCAL nHandle   := iif(oDlg  == NIL, AppDesktop():GetHWnd(), oDlg:GetHWnd())
LOCAL nError
      if !file(cFile)
           cError := "Shell32 ExecuteA -> " + cFile +" ist nicht vorhanden.Start nicht m”glich"
      else
           nError  := DllCall("Shell32.dll", DLL_STDCALL, "ShellExecuteA", ;
                      nHandle, "open", cFile, cParameters, cStartDir, nWinMode)
           if nError < 32
                cError := "Shell32 ExecuteA -> Beim Start von "+cFile+" ist ein Fehler aufgetreten. Code:"+str(nError,3)
           endif
      endif

return (nError)
Valar Morghulis

Gruss Carlo
Antworten