Hallo zusammen,
ich bastel derzeit ein Tool für meine Arbeit, wo ich den Status eines bestimmten Gateways prüfen kann.
Dieser Gateway muss zwingend über Port 443 erreichbar sein, demnach macht ein anpingen keinen Sinn, zumal der Gateway im Stealth-Modus läuft und eh über Ping keine Antwort zurückkommt.
Also ist für uns die Lösung momentan das ganze über Telnet zu prüfen. Mache ich das ganze manuell über das CMD Fenster sehe ich, dass ich über Telnet verbunden wurde. Den gleichen Befehl kann ich natürlich auch über AutoIT senden, jedoch wie kann ich in der GUI anzeigen lassen, dass die Verbindung auch wirklich steht und er nicht ein "unable to connect to host" kommt?
Momentan sende ich ja bereits über einen Button den Telnet-Befehl... es öffnet sich auch das Telnet/CMD Fenster, aber erstens will ich, dass später der Anwender das CMD Fenster gar nicht mehr sieht und zweitens wie kann ich eine Abfrage stellen, dass die Telnetverbindung auch erfolgreich war?
Hier mal das Skript - der dort enthaltene Gateway ist auch genau der um den es geht:
Spoiler anzeigen
#include <guiconstants.au3>
#include <AutoItConstants.au3>
$PortScanner = GUICreate("Port Scanner", 400, 270)
GUICtrlCreateGroup("Port Scan", 5, 5, 385, 160)
$IPLabel = GUICtrlCreateLabel("IP:", 20, 17)
$PortIPAddress = GUICtrlCreateInput("127.0.0.1", 20, 33, 125)
GUICtrlCreateLabel("Start Port", 28, 55)
$PortStartNumber = GUICtrlCreateInput("8080", 20, 68, 60)
GUICtrlCreateLabel("End Port", 93, 55)
$PortEndNumber = GUICtrlCreateInput("8085", 85, 68, 60)
$StartScanRange = GUICtrlCreateButton("Range Scan", 20, 91, 125)
GUICtrlSetFont($StartScanRange,13)
GUICtrlCreateLabel("Single Port Scan", 20, 120)
$SinglePort = GUICtrlCreateInput("443", 20, 135, 60)
$StartScanSingle = GUICtrlCreateButton("Scan", 90, 133, 50)
GUICtrlSetFont($StartScanSingle,13)
$OnPort = GUICtrlCreateLabel("Scanne Port:", 160, 145, 300, 15)
GUICtrlCreateGroup("Offene Ports", 160, 17,105, 125)
$OpenPortList=GUICtrlCreateList("", 168, 30, 90, 109)
GUICtrlSetBkColor( -1, 0x00FF00)
GUICtrlCreateGroup ("",-99,-99,1,1)
GUICtrlCreateGroup("Geschlossene Ports", 270, 17,105, 125)
$ClosedPortList=GUICtrlCreateList("", 278, 30, 90, 109)
GUICtrlSetBkColor( -1, 0xFF0000)
GUICtrlCreateGroup ("",-99,-99,1,1)
GUICtrlCreateGroup("Gateway Scan", 5, 175, 385, 85)
$GatewayLabel = GUICtrlCreateLabel("Adresse:", 20, 190, 50, 13)
$GatewayInput = GUICtrlCreateInput("gateway.fedex.com", 20, 206, 125, 20)
$GatewayPortLabel = GUICtrlCreateLabel("Port:", 168, 190, 50, 13)
$GatewayPortInput = GUICtrlCreateInput("443", 168, 206, 125, 20)
$StartScanGateway = GUICtrlCreateButton("Scan", 20, 230, 125)
GUICtrlSetFont($StartScanGateway,13)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_ClOSE
ExitLoop
Case $msg = $StartScanRange
_StartScanRange()
Case $msg = $StartScanSingle
_StartScanSingle()
Case $msg = $StartScanGateway
_StartScanGateway()
EndSelect
WEnd
Func _StartScanGateway()
$Gateway=GUICtrlRead($GatewayInput)
$GatewayPort=GUICtrlRead($GatewayPortInput)
;~ Run("telnet gateway.fedex.com 443", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
Run("telnet " & $Gateway & " " & $GatewayPort, @SystemDir, $STDIN_CHILD + $STDOUT_CHILD)
If @error Then
MsgBox(16, "Attention!", "No TELNET connection!" & @CRLF & "Please be sure that your computer is well configured" & @CRLF & " and your connection is running!", 20)
EndIf
EndFunc
Func _StartScanSingle()
$PortIP=GUICtrlRead($PortIPAddress)
$SinglePortRead=guictrlread($SinglePort)
TCPStartup()
$socket = TCPConnect($PortIP,$SinglePortRead)
ControlSetText("", "", $OnPort, "Scanne Port: " & $SinglePortRead & "")
If $socket = -1 Then
GUICtrlSetData($ClosedPortList, $SinglePortRead)
$SinglePortRead = $SinglePortRead + 1
ElseIf $socket = 1 Then
$SinglePortRead = $SinglePortRead + 1
ElseIf $socket = 2 Then
$SinglePortRead = $SinglePortRead + 1
Else
GUICtrlSetData($OpenPortList,$SinglePortRead)
$SinglePortRead = $SinglePortRead + 1
EndIf
TCPShutdown()
ControlSetText("", "", $OnPort, "Scanne Port: " & $SinglePortRead-1 & " - Portsuche abgeschlossen")
EndFunc
Func _StartScanRange()
$PortIP=GUICtrlRead($PortIPAddress)
$PortEndNumberB=guictrlread($PortEndNumber)
$PortStartNumberB=guictrlread($PortStartNumber)
TCPStartup()
$timerstart = TimerInit()
For $LetsGo = $PortStartNumberB To $PortEndNumberB
$socket = TCPConnect($PortIP,$PortStartNumberB)
ControlSetText("", "", $OnPort, "Scanne Port: " & $PortStartNumberB & "")
If $socket = -1 Then
;~ ConsoleWrite($PortStartNumberB & " - Unable to connect." & @CRLF)
GUICtrlSetData($ClosedPortList, $PortStartNumberB)
$PortStartNumberB = $PortStartNumberB + 1
ElseIf $socket = 1 Then
;~ ConsoleWrite($PortStartNumberB & " - Wrong Address" & @CRLF)
$PortStartNumberB = $PortStartNumberB + 1
ExitLoop
ElseIf $socket = 2 Then
;~ ConsoleWrite($PortStartNumberB & " - Wrong Port" & @CRLF)
$PortStartNumberB = $PortStartNumberB + 1
Else
;~ ConsoleWrite($PortStartNumberB & " - Success!" & @CRLF)
GUICtrlSetData($OpenPortList,$PortStartNumberB)
$PortStartNumberB = $PortStartNumberB + 1
EndIf
Next
TCPShutdown()
ControlSetText("", "", $OnPort, "Scanne Port: " & $PortStartNumberB-1 & " - Portsuche abgeschlossen")
$timerend = TimerDiff($timerstart)
TrayTip("Port Scanner", "Done Process took " & Round($timerend,-1)/1000 & " seconds", 7, 1)
EndFunc
Alles anzeigen
Habt ihr ne Idee wie ich das realisieren kann? Mometan öffnet sich halt einfach nur das CMD Fenster und ist leer (ein Zeichen dafür, dass ich mit dem Gateway connected bin). Aber wie kann ich das jetzt "auslesen"? Ich will mit dem Tool nur testen ob der Gateway überhaupt erreichbar ist - keine weitere Kommunikation soll damit stattfinden...