Hallo,
ich komme bei meinem Script nicht weiter. Ich versuche über die Windows CMD plink zu starten und mich dort anzumelden. Naja eiglt versuche ich es nicht es hat geklappt. Jedoch verlangt das fertige Script später das ich auf unterschiedliche Server verbinden muss.
Nun habe ich das Problem das mein Script ständig eine neue CMD dafür öffnet und man damit quasi nach und nach den Bildschirm vollpflastert je öfter man drauf angewiesen ist.^^
Ich habe versucht das ganze mit If WinExist zu lösen aber irgendwie wird das einfach ignoriert.
Außerdem habe ich versucht das CMD während des Einloggens zu verstecken das der User quasi nichts von den Daten sieht die da gesendet werden oder wenigstens minimiert, allerdings ohne Erfolg. Fenster muss sichtbar sein damit die Login Daten übermittelt werden können.
Hier die Problemzone:
[autoit]If not FileExists(@ScriptDir & "\plink.exe") Then
MsgBox(48,"Fehler","Achtung plink.exe befindet sich nicht im gleichen Verzeichniss wie dieses Programm." & @CRLF & "Lad dir das Programm bitte runter und sorg dafür das beide Programme im selben Verzeichniss sind!")
Exit
Else
$antwort = MsgBox(36,"Information","Login auf dem entsprechenden Server notwendig. Die Tastatur und Maus Eingaben werden gleich für einige Sekunden gesperrt. Weiter machen?") ;fragt nach, antwort möglichkeit ja (6) oder nein (7)
If $antwort = 6 Then ;wenn antwort ja (6) dann...
$root = "HIER DER SERVER"
AutoItSetOption("WinTitleMatchMode",2)
#requireAdmin ;fragt unter vista nach ob das programm als admin ausgeführt werden soll
If Not WinExists("\system32\cmd.exe") Then
$block = Blockinput(1) ;sperrt die nutzereingaben
If $block = 1 Then ;wenn die eingaben gesperrt sind dann....
ShellExecute("cmd.exe", "", @SystemDir)
WinActivate("\system32\cmd.exe")
Sleep(1000)
Send("cd " &@ScriptDir &"{Enter}")
Sleep(500)
Send("plink.exe -L 3306:localhost:3306 "& $root &"{Enter}")
Sleep(500)
WinActivate("\system32\cmd.exe") ;sicherstellung das cmd aktiv ist zum senden des acc pw
Send("PW FÜR DEN ACCOUNT{Enter}")
BlockInput(0) ;entsperrt die nutzereingaben
Else ;wenn die eingaben nicht gesperrt sind dann...
MsgBox(48,"Fehler","Eingaben konnten nicht gesperrt werden. Programm wird beendet.")
Exit
EndIf
ElseIf WinExists("\system32\cmd.exe") Then
$block = BlockInput(1)
If $block = 1 Then
WinActivate("\system32\cmd.exe")
Sleep(500)
Send("Exit{Enter}")
Sleep(500)
Send("cd " &@ScriptDir &"{Enter}")
Sleep(500)
Send("plink.exe -L 3306:localhost:3306 HIEr DER SERVER{Enter}") ; Verbindungskomando mit dem entsprechenden Server
Sleep(1000)
WinActivate("\system32\cmd.exe")
Send("PW FÜR DEN ACCOUNT{Enter}")
BlockInput(0)
EndIf
EndIf
ElseIf $antwort = 7 Then ;wenn antwort auf die frage oben nein (7) dann...
Exit
EndIf
EndIf
Später wenn das läuft wollte ich darauf ne Funktion machen das ich das nicht immer wieder kopieren muss, Daher $root zum einfachen wechseln des Servers auf den verbunden werden soll.
Hoffe jemand hat Rat. Habe es wirklich schon oft probiert und umgeschrieben.
Danke schonmal.