Hi Leute da ich Netzwerkadmin bin habe ich viel mit MAC-Adressen zutun. Da die aber ewig lang sind und man die nie weis habe ich ein Tool geschrieben was mir ein klein bischen Arbeit abnimmt.
Das Tool bassiert auf den Dos-Befehlen:
- Ping <IP-Adresse>
- Arp -a <IP-Adresse>
Getestet wurde es unter dem Betriebssystemen
- Windows Vista
- Windows XP
- Windows 2000
Beschreibung:
Es können Rechner Remote oder lokal abgefragt werden.
Nach Eingabe der IP-Adresse, wird ein Ping auf das Gerät abgesetzt um zusehen ob es online ist.
Sollte ein Name angegeben werden wird dieser mit der Function "TCPNameToIP" umgesetzt da eine Arpanfrage nur auf eine IP funktioniert.
Sollte keine Adresse angegeben werden, wird das lolale Gerät abgefragt.
Das Ergebniss wird dann in einem Editfeld angezeigt und in die Zwischenablage kopiert. (Das erspart falsches abschreiben :schild4: )
Mit "Strg + V" kann sie somit überall eingefügt werden.
Feedback:
So schreibt bitte was Ihr von dem Tool haltet und ob es für Euch von Interesse ist.
Edit: Neue Version 1.3
Changes:
- Auflösung nach IP und DNS-Name.
- Fehlermeldung korrigiert.
Edit: Neue Version 1.4
Changes:
- Checkbox kopieren ja nein eingebunden.
- Gui verändert.
Edit: Neue Version 1.5
Changes:
- GUI an Vista angepasst.
- Fehler durch Autoitversion 3.2.2.0 behoben
Der Quellcode:
Spoiler anzeigen
#include <GuiStatusBar.au3>
#include <Inet.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#AutoIt3Wrapper_icon=192.ico
#AutoIt3Wrapper_outfile=Arptool.exe
Dim $author = "Der_Doc"
Dim $version = "1.5"
Dim $change = "Update: 1.3 | 26.02.2007" & @CRLF & _
' -Auflösung nach IP und DNS-Name' & @CRLF & _
'Update: 1.4 | 05.04.2007 ' & @CRLF & _
' -Checkbox kopieren ja nein eingebunden' & @CRLF & _
' -Gui erneuert ' & @CRLF & _
'Update: 1.5 | 23.04.2009 ' & @CRLF & _
' -GUI an Vista angepasst'
Dim $a_PartsRightEdge[2] = [110, -1]
Dim $a_PartsText[2] = [$author & " 2009", "Version: " & $version]
Dim $ausgabe
#Region ### START Koda GUI section ### Form=arpgui.kxf
$Arpgui = GUICreate("Arptool", 279, 250, -1, -1)
$Group1 = GUICtrlCreateGroup("IP oder PC-Name", 6, 7, 265, 55)
$In_Input = GUICtrlCreateInput("", 14, 27, 249, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Ergebniss der Arpanfrage", 7, 68, 265, 90)
$Edit = GUICtrlCreateEdit("", 22, 86, 241, 65, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Senden = GUICtrlCreateButton("Senden", 214, 167, 57, 25, $BS_DEFPUSHBUTTON)
$check1 = GUICtrlCreateCheckbox("Ergebniss in Zwischenablag kopieren", 6, 173, 201, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetState($In_Input, $GUI_FOCUS)
$MenuItem1 = GUICtrlCreateMenu("&Datei")
$MenuItem2 = GUICtrlCreateMenuItem("Neu", $MenuItem1)
$separator2 = GUICtrlCreateMenuItem("", $MenuItem1, 2)
$MenuItem3 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
$dateihelp = GUICtrlCreateMenu("?")
$menuehelp = GUICtrlCreateMenuItem("Über Arptool", $dateihelp)
$StatusBar1 = _GUICtrlStatusBar_Create($Arpgui, $a_PartsRightEdge, $a_PartsText)
GUICtrlCreateGraphic(0, 0, 306, 2, BitOR($SS_NOTIFY, $SS_SUNKEN))
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $MenuItem2
GUICtrlSetData($Edit, "")
GUICtrlSetData($In_Input, "")
ClipPut("")
Case $Senden
$Input = GUICtrlRead($In_Input)
If $Input = "" Then $Input = @ComputerName ; Wenn kein Computername eingegeben wurde wird der locale genommen.
$ping = Ping($Input, 50)
Select
Case $ping > 0
TCPStartup()
$ausgabe = TCPNameToIP($Input)
$ausgabe_name = _TCPIpToName($ausgabe, 0)
GUICtrlSetData($Edit, 'PC-Name: ' & @TAB & $ausgabe_name & @CRLF)
TCPShutdown()
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'IP-Adresse: ' & @TAB & $ausgabe & @CRLF)
arp()
If $ausgabe = "" Then ipconfig()
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'Mac-Adresse: ' & @TAB & $ausgabe & @CRLF)
If GUICtrlRead($check1) = 1 Then
ClipPut($ausgabe)
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'Mac-Adresse in Zwischenablage kopiert!' & @CRLF)
Else
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'Mac-Adresse wurde nicht kopiert!' & @CRLF)
EndIf
Case $ping = 0
MsgBox(64, "Fehlermeldung Arptool", "Der Host ist nicht Verfügbar! " & @CRLF & "Bitte neue Abfrage starten!")
GUICtrlSetData($Edit, "")
GUICtrlSetData($In_Input, "")
GUICtrlSetState($In_Input, $GUI_FOCUS)
EndSelect
Case $menuehelp
$help = GUICreate("Über Arptool ......", 280, 180, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_GROUP, $WS_BORDER, $WS_CLIPSIBLINGS))
$help_ok = GUICtrlCreateButton("OK", 112, 136, 75, 25, $BS_DEFPUSHBUTTON)
$Info = GUICtrlCreateEdit("", 24, 48, 249, 73, BitOR($ES_READONLY, $WS_VSCROLL))
GUICtrlSetData(-1, "Author: " & $author & @CRLF & _
'AutoIt Version: 3.2.2.0' & @CRLF & _
'Datum: 15.01.2007' & @CRLF & _
$change)
$Label_help = GUICtrlCreateLabel("Arptool " & $version, 125, 16, 134, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Times New Roman")
GUICtrlCreateIcon("shell32.dll", 24, 50, 7, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
GUISetState(@SW_SHOW, $help)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Case $help_ok
GUIDelete($help)
GUISetState(@SW_SHOW, $Arpgui)
GUISwitch($Arpgui)
ExitLoop
EndSwitch
WEnd
Case $GUI_EVENT_CLOSE
Exit
Case $MenuItem3
Exit
EndSwitch
WEnd
Func arp()
$pid = Run(@ComSpec & " /c arp -a " & $ausgabe, "", "", 2)
$ausgabe = StdoutRead($pid)
While ProcessExists($pid)
Sleep(100)
WEnd
$ausgabe = StringMid($ausgabe, StringInStr($ausgabe, "-", 0, -5) - 2, 17)
EndFunc ;==>arp
Func ipconfig()
$pid = Run(@ComSpec & " /c ipconfig /all", "", "", 2)
$ausgabe = StdoutRead($pid)
While ProcessExists($pid)
Sleep(100)
WEnd
$ausgabe = StringMid($ausgabe, StringInStr($ausgabe, "Physikalische Adresse", 0, -1) + 36, 17)
EndFunc ;==>ipconfig
Als Anlage noch die Kodadatei und das ICON.
MfG
Der_Doc