Hi Leute,
wie schon öfter geschrieben bin ich Netzwerkadmin und schreibe eben gerne Tools die mir das Leben erleichtern.
So entstand auch dieses nette Prog
Vorraussetzung:
Der PC, der abgefragt werden soll, muss mit SNMP nachinstalliert werden, sollte es nicht vorhanden sein.
Beschreibung:
NicError erklärt sich eigentlich von selber.
Es liest per SNMP die Fehler der aktiven Netzwerkkarte aus und gibt diese in einem Listfeld zurück.
Umgang:
Der Umgang ist denkbar einfach, es muss entweder der PCname oder die IP, des Rechners eingegeben werden der abgefragt werden soll.
Wenn keine Eingaben gemacht werden, wir "localhost" abgefragt.
Eingebundene Programme:
Folgende Programme habe ich eingebunden:
- libsnmp.dll
- snmpwalk.exe
- snmpget.exe
Quelltext:
Da Programme eingebunden sind hänge ich den Quelltext nur zum anschauen mit an, da er nur mit Anpassungen funktioniert.
Spoiler anzeigen
;~ Author: <Der_Doc>
;~ Version: <NicError_1.35>
;~ AutoIt Version: 3.2.4.9
;~ Datum: 15.06.2007
;~ Beschreibung:
;~ Mit diesem Programm können nach die Fehler der Netzwerkkarte per SNMP ausgelesen werden.
;~ Hierbei ist es egal ob der Rechenr der abgefragt werden soll Windows oder Linux ist.
;~ Vorraussetzungen:
;~ Auf dem Rechner muss SNMP nachinstalliet werden.
#include <string.au3>
#include <array.au3>
#include <GuiListView.au3>
#include <GuiList.au3>
#Include <GuiStatusBar.au3>
#include <GUIConstants.au3>
#compiler_icon="2220.ico"
#compiler_outfile="NicError.exe"
Dim $version = " NicError 1.35"
Dim $author = "Der_Doc"
;~ Statusbar
Dim $a_PartsRightEdge[2] = [150,-1]
Dim $a_PartsText[2] = [$author&" 2007","Version: " &$version]
;~ Errors
Dim $Input_Computername_read
Dim $ifTable_array[5][20]
Dim $lauf[20][3]
$lauf[0][0] = "17"
$lauf[1][0] = "2" ; ifName
$lauf[1][1] = "Description"
$lauf[2][0] = "3" ; ifType
$lauf[2][1] = "Type"
$lauf[3][0] = "4" ; ifMtu
$lauf[3][1] = "Mtu"
$lauf[4][0] = "5" ;ifSpeed
$lauf[4][1] = "Speed"
$lauf[5][0] = "6" ;ifSpeed
$lauf[5][1] = "PhysAddress"
$lauf[6][0] = "10" ;ifAddress
$lauf[6][1] = "InOctets"
$lauf[7][0] = "11" ;ifUcast
$lauf[7][1] = "InUnicast"
$lauf[8][0] = "12" ;ifNUcast
$lauf[8][1] = "InNonUnicast"
$lauf[9][0] = "13" ;ifDiscards
$lauf[9][1] = "InDiscards"
$lauf[10][0] = "14" ;ifErrors
$lauf[10][1] = "InErrors"
$lauf[11][0] = "16" ;ifAddress
$lauf[11][1] = "OutOctets"
$lauf[12][0] = "17" ;ifUcast
$lauf[12][1] = "OutUnicast"
$lauf[13][0] = "18" ;ifNUcast
$lauf[13][1] = "OutNonUnicast"
$lauf[14][0] = "19" ;ifDiscards
$lauf[14][1] = "OutDiscards"
$lauf[15][0] = "20" ;ifErrors
$lauf[15][1] = "OutErrors"
$lauf[16][0] = "21" ;ifErrors
$lauf[16][1] = "OutQLen"
$lauf[17][0] = "22" ;ifErrors
$lauf[17][1] = "Specific"
#Region ### START Koda GUI section ### Form=d:\autoitscripte\nicerror\nicerror.kxf
$nicerror = GUICreate("NicError", 298, 463, -1, -1)
$group = GUICtrlCreateGroup("", 8, 0, 273, 441)
$lable = GUICtrlCreateLabel("Hostname oder IP eingeben", 34, 13, 136, 17)
$Input_Computername = GUICtrlCreateInput("", 33, 31, 137, 21)
$list = GUICtrlCreateList("", 33, 60, 230, 58, BitOR($WS_VSCROLL,$WS_BORDER))
$ok = GUICtrlCreateButton("OK", 187, 29, 73, 25, $BS_DEFPUSHBUTTON)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;~ ######################
;~ # Menue
;~ ######################
$dateimenu = GUICtrlCreateMenu ("&Datei")
$menueneu = GUICtrlCreateMenuitem ("Neu",$dateimenu)
$separator1 = GUICtrlCreateMenuitem ("",$menueneu,1)
$menueclose = GUICtrlCreateMenuitem ("Beenden",$dateimenu)
$StatusBar1 = _GUICtrlStatusBarCreate ($nicerror, $a_PartsRightEdge, $a_PartsText)
GUISetState(@SW_SHOW)
$listview = GUICtrlCreateListView("Typ|Wert", 33, 115, 230, 300)
_GUICtrlListViewSetColumnWidth ( $listview,0, 112 )
_GUICtrlListViewSetColumnWidth ( $listview,1, 113 )
file_install()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
del_file()
Exit
Case $menueclose
del_file()
Exit
Case $ok
SplashTextOn("","Bitte warten" ,"150","30","-1","-1",33,"Times New Roman","14","700")
_GUICtrlListViewDeleteAllItems ($listview)
GUICtrlSetData($list,"")
$Input_Computername_read = GUICtrlRead($Input_Computername)
if $Input_Computername_read ="" Then ; Wenn kein Computername eingegeben wurde wird der locale genommen.
$Input_Computername_read = @ComputerName
EndIf
$ping_erg = Ping($Input_Computername_read,100)
if $ping_erg > 0 then
$ifNumber_OID = ".1.3.6.1.2.1.2.1.0"
$ifIndex_OID = ".1.3.6.1.2.1.2.2.1.1"
$ifTable_OID = ".1.3.6.1.2.1.2.2.1."
$pid = Run(@ComSpec & " /c snmpget -v2c " & $Input_Computername_read & ' public ' &$ifNumber_OID, @TempDir, "", 2)
$ifNumber = StdoutRead($pid)
$ifNumber = StringMid($ifNumber, StringInStr($ifNumber, "=", 0,+1)+2,+1)
$pid = Run(@ComSpec & " /c snmpwalk -v2c " & $Input_Computername_read & ' public ' &$ifIndex_OID, @TempDir, "", 2)
$ifIndex = StdoutRead($pid)
for $pos = 1 to $ifNumber
$ifIndex_wert = StringMid($ifIndex,StringInStr($ifIndex,"=",0,$pos)+2,StringInStr($ifIndex,@CRLF,0,$pos) - StringInStr($ifIndex,"=",0,$pos)-2)
$pid = Run(@ComSpec & " /c snmpget -v2c " & $Input_Computername_read & ' public ' &$ifTable_OID& "2." &$ifIndex_wert, @TempDir, "", 2)
$ifDescr = StdoutRead($pid)
$ifDescr_wert = StringMid($ifDescr,StringInStr($ifDescr,":")+2,StringInStr($ifDescr,@CRLF,0,-1) - StringInStr($ifDescr,":")-2)
$ifDescr_name = _HexToString(StringStripWS ($ifDescr_wert,8))
if @error Then
$ifDescr_name = StringMid($ifDescr,StringInStr($ifDescr,"=")+2,StringInStr($ifDescr,@CRLF,0,-1) - StringInStr($ifDescr,"=")-2)
$ifDescr_name = StringReplace($ifDescr_name,'"',"")
EndIf
_GUICtrlListInsertItem ($list, $ifDescr_name)
for $i = 1 to $lauf[0][0]
$pid = Run(@ComSpec & " /c snmpget -v2c " & $Input_Computername_read & ' public ' &$ifTable_OID&$lauf[$i][0]&"."&$ifIndex_wert, @TempDir, "", 2)
$ifTable = StdoutRead($pid)
$ifTable = StringReplace($ifTable, "Gauge: ", "")
$ifTable = StringReplace($ifTable, "Hex: ", "")
$ifTable_array[$pos][$i] = StringMid($ifTable, StringInStr($ifTable,"=")+2,StringInStr($ifTable,@CRLF) - StringInStr($ifTable,"=")-2)
$ifTable_array[$pos][0] = StringStripWS ($ifDescr_wert,8)
Next
Next
Else
SplashOff()
MsgBox(0,"","Rechner "& $Input_Computername_read &" existiert nicht!")
EndIf
SplashOff()
case $list
$ret = _GUICtrlListSelectedIndex ($list) ;Zeile im Listenfeld
$ret += 1
_GUICtrlListViewDeleteAllItems ($listview)
for $i = 1 to $lauf[0][0]
if $i = 1 then
$ifTable_array[$ret][$i] = _HexToString(StringStripWS ($ifTable_array[$ret][$i],8))
GUICtrlCreateListViewItem($lauf[$i][1] &" | " &$ifTable_array[$ret][$i],$listview)
$i +=1
EndIf
GUICtrlCreateListViewItem($lauf[$i][1] &" | " &$ifTable_array[$ret][$i],$listview)
Next
case $menueneu
_GUICtrlListViewDeleteAllItems ($listview)
GUICtrlSetData($list,"")
GUICtrlSetData($Input_Computername,"")
EndSwitch
WEnd
Func file_install()
FileInstall("..\include\prog\libsnmp.dll", @TempDir&"\libsnmp.dll",1)
FileInstall("..\include\prog\snmpwalk.exe", @TempDir&"\snmpwalk.exe",1)
FileInstall("..\include\prog\snmpget.exe", @TempDir&"\snmpget.exe",1)
EndFunc
Func del_file()
FileDelete(@TempDir&"\libsnmp.dll")
FileDelete(@TempDir&"\snmpwalk.exe")
FileDelete(@TempDir&"\snmpget.exe")
EndFunc
Programm:
Das Programm ist in einer Zip-Datei mit allen Datein im Ordner NicError enthalten. Nur ne exe draus machen und los geht es
So genug
Lob und sowas natürlich bitte an mich
MfG
Der_Doc