Hallo Gemeinde,
ich muss eine Tabelle unserer KVM-Switche auslesen. Leider geht das nicht via SSH oder REST, etc.. D. h. mein Programm startet den Firefox, öffnet die LoginSeite und sendet die Logindaten.
Leider geht das nicht da er die Seite nicht findet. Laut Logfile: Logwrite(379,...).
Alle Versuche das via KI zu fixen funktionieren nicht. Findet jemand den Fehler oder hat eine Idee wie ich das so hinbekomme, dass die Loginseite auf jeden Fall gefunden wird?
Der Name der Website Login — Mozilla Firefox wurde durch Weblist verifiziert...
Code
Func LoginToKVMWebInterface($sFirefoxPath, $sProfile, $sURL, $sAccount, $sPwd, $iKVMID)
Opt("WinTitleMatchMode", 2)
Local $sTempProfile = @TempDir & "\ffprofile_" & $iKVMID
DirCreate($sTempProfile)
Local $sCmd = '"' & $sFirefoxPath & '" -no-remote -profile "' & $sTempProfile & '" "' & $sURL & '"'
Run($sCmd, "", @SW_HIDE)
LogWrite(375, "INFO: Firefox fuer KVM-ID " & $iKVMID & " gestartet mit URL: " & $sURL)
Local $bLoginWindow = WinWaitActive("Login — Mozilla Firefox", "", 20)
If Not $bLoginWindow Then
LogWrite(379, "ERROR: Login-Fenster bei " & $sURL & " nicht gefunden!")
KillFirefoxInstance($sTempProfile)
DirRemove($sTempProfile, 1)
Return SetError(1, 0, "")
EndIf
; Anmeldedaten eingeben
; Warten bis Login-Fenster erscheint
Local $hWnd = WinWait("[REGEXPTITLE:^Login — Mozilla Firefox$]", "", 20)
If $hWnd = 0 Then
LogWrite(389, "FEHLER: Browser/Login-Fenster nicht gefunden")
Return
EndIf
; Aktivieren und sicher warten
WinActivate($hWnd)
If Not WinWaitActive($hWnd, "", 10) Then
LogWrite(392, "FEHLER: Fenster konnte nicht aktiviert werden")
Return
EndIf
LogWrite(395, "Fenster aktiv")
; WICHTIG: kurze Stabilisierung
Sleep(1000)
WinActivate($hWnd)
; Anmeldedaten eingeben
Send($sAccount)
Sleep(200)
Send("{TAB}")
Sleep(200)
Send($sPwd)
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{ENTER}")
;~ Sleep(3000)
LogWrite(405, "INFO: Anmeldedaten gesendet fuer KVM-ID " & $iKVMID)
; Auf erfolgreichen Login (Fenstertitel der Startseite) warten
Local $bLoginSuccess = False
For $i = 1 To 20
Sleep(1000)
Local $sTitle = WinGetTitle("[ACTIVE]")
If StringInStr($sTitle, "Port Access") Or StringInStr($sTitle, "/home.asp") Then
$bLoginSuccess = True
ExitLoop
EndIf
Next
If Not $bLoginSuccess Then
LogWrite(419, "ERROR: Login fehlgeschlagen fuer KVM-ID " & $iKVMID & " bei URL: " & $sURL)
KillFirefoxInstance($sTempProfile)
DirRemove($sTempProfile, 1)
Return SetError(2, 0, "")
EndIf
LogWrite(425, "INFO: Login erfolgreich fuer KVM-ID " & $iKVMID & " bei URL: " & $sURL)
Return $sTempProfile
EndFunc ;==>LoginToKVMWebInterface
Alles anzeigen