1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. casi4712

Beiträge von casi4712

  • SSH Passwort falsch

    • casi4712
    • 3. November 2023 um 21:37

    Also noch mal den Hauptteil, die variable $stdout scheint immer leer zu sein, egal ob Receive erscheint oder nicht:

    AutoIt
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <WinAPIFiles.au3>
    
    HotKeySet("{ESC}", "AbortScript") ; Abbrechen mit Escape-Taste
    
    Global $usb = _checkBackVolume()
    Global $rueckgabe = ''
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Pfade bitte ggf. anpassen
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Global $ServerIP = "87.106.128.49"
    Global $bash = 'C:\cygwin64\bin\bash.exe'
    Local $targetPath = "/cygdrive/" & $usb & "/linuxback/koha/"
    Local $sourcePath = "/var/backup/"
    Local $sourcePath2 = "/"
    Local $sourcePath3 = "/"
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    _checkDomain()
    _CheckAndCreateBacksServerFolder()
    _ProgressGUI()
    
    ;MAIN
    ; Kopierbefehl
    Local $bashCommand = $bash & ' -l -c "rsync -azP --delete --progress -e /usr/bin/ssh.exe root@' & $serverIP & ':' & $sourcePath & ' ' & $targetPath & '"'
     ConsoleWrite("Bash-Befehl: " & $bashCommand & @CRLF) ; Konsolenausgabe
    
    Local $iPID = RunWait($bashCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    
    If @error Then
        MsgBox(16, '', 'Fehler beim Ausführen des Befehls')
        Exit
    EndIf
    
    Local $sStdOut = ""
    Local $authOKFound = False
    If StdOutRead($ipid,True) Then $rueckgabe &= StdERead($ipid)
    ;MsgBox(262144,"Title", $rueckgabe)
    
    While 1
        $sStdOut &= StdoutRead($iPID)
    
         Sleep(2000)
          MsgBox(262144,"Title", $sStdOut)
        If @error Then ExitLoop
        If not StringInStr($sStdOut, "receiving") Then
            ConsoleWrite("Authentifizierung ok" & @CRLF)
            $authOKFound = True
            SplashTextOn("", "Authentifizierung ok", 300, 50, @DesktopWidth - 320, 30, $DLG_TEXTLEFT + $DLG_NOTITLE + $DLG_MOVEABLE, "Arial", 11, 4000) ; 4 Sekunden lang Popup anzeigen
            Sleep(4000) ; Sicherstellen, dass das Popup ausreichend Zeit hat, um angezeigt zu werden
            SplashOff()
            ExitLoop
        EndIf
    Wend
    
    If Not $authOKFound Then
        MsgBox(16, '', 'Keine Authentifizierung möglich, Sie verfügen nicht über entsprechende RSA Schlüssel')
        Exit
    EndIf
    
    
    
    
    
    _MoveProgressBar()
    _ErfolgsMSG()
    _MoveProgressBar()
    _MoveProgressBar()
    _MoveProgressBar()
    GUIDelete()
    Alles anzeigen
  • SSH Passwort falsch

    • casi4712
    • 3. November 2023 um 19:33

    jetzt scheint es zu funktionieren, es muss natürlich RunWait heissen, aber nun sagt er mir wenn der Job fertif kopiert hat Kein Schlüssel vorhanden, stimmt da was nicht an der Reihenfolge, oder hab ich das ganze verkompliziert?

  • SSH Passwort falsch

    • casi4712
    • 3. November 2023 um 15:58

    du meinst hier:

    AutoIt
    Local $iPID = Run($bashCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ; Ausühren des Befehls
  • SSH Passwort falsch

    • casi4712
    • 3. November 2023 um 15:57

    ich habe den Checkblock noch mal rausgenommen und en ursprünglichen Run begefel rei genommen, mit dem gehts :

    AutoIt
    Local $bashCommand = $bash & ' -l -c "rsync -azP --delete --progress -e /usr/bin/ssh.exe root@' & $serverIP & ':' & $sourcePath & ' ' & $targetPath & '"'
     ConsoleWrite("Bash-Befehl: " & $bashCommand & @CRLF) ; Konsolenausgabe
      RunWait($bashCommand, "", @SW_show)

    aber mit dem bekomm ich das mit der Überprüfung nicht hin:(

  • SSH Passwort falsch

    • casi4712
    • 3. November 2023 um 15:48

    ah ok dann weiss ich Bescheid, werde ich noch einbauen, danke Dir. Ich habe das ganze noch mal neu aufgerollt, da mir nicht gefallen hat dass die Dteien hier immer komplett neu runtergeholt werden und das mit dem Passwort so noch nicht optimal war. Deshalb habe ich jetzt auf rsync umgeschwenkt, ist ja wohl ne gängige Praxis bei der Serversicherung. Zudem habe ich entsprechende RSA Schlüssel erzeugt und ausgetauscht. Mein Script funktioniert auch schon soweit. Nun kam ich noch auf die bescheuerte Idee die $stdout auslesen zu wollen, um über den Text Receiving entsprechende Meldungen auszugeben, dass evtl. ein Key Problem vorliegt. Die Fehlermeldungen kommen jtzt zwar aber der Kopierjob funktioniert so leider nicht. Vielleicht sieht ja jemand den Fehler,

    AutoIt
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <WinAPIFiles.au3>
    
    HotKeySet("{ESC}", "AbortScript") ; Abbrechen mit Escape-Taste
    
    Global $usb = _checkBackVolume()
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Pfade bitte ggf. anpassen
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Global $ServerIP = "0.0.0.0"
    Global $bash = 'C:\cygwin64\bin\bash.exe'
    Local $targetPath = "/cygdrive/" & $usb & "/linuxback/koha/"
    Local $sourcePath = "/var/backup/"
    Local $sourcePath2 = "/"
    Local $sourcePath3 = "/"
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    _checkDomain()
    _CheckAndCreateBacksServerFolder()
    _ProgressGUI()
    
    ;MAIN
    ; Kopierbefehl
    Local $bashCommand = $bash & ' -l -c "rsync -azP --delete --progress -e /usr/bin/ssh.exe root@' & $serverIP & ':' & $sourcePath & ' ' & $targetPath & '"'
     ConsoleWrite("Bash-Befehl: " & $bashCommand & @CRLF) ; Konsolenausgabe
    
    Local $iPID = Run($bashCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ; Ausühren des Befehls
      If @error Then
        MsgBox(16, '', 'Fehler beim Ausführen des Befehls')
        Exit
      EndIf
    
    Local $sStdOut = ""
    Local $authOKFound = False
    
      While 1
          $sStdOut &= StdoutRead($iPID)
          If @error Then ExitLoop
          If StringInStr($sStdOut, "receiving") Then
            ConsoleWrite("Authentifizierung ok" & @CRLF)
            $authOKFound = True
            SplashTextOn("", "Authentifizierung ok", 300, 50, @DesktopWidth - 320, 30, $DLG_TEXTLEFT + $DLG_NOTITLE + $DLG_MOVEABLE, "Arial", 11, 4000) ; 4 Sekunden lang Popup anzeigen
            Sleep(4000) ; Sicherstellen, dass das Popup ausreichend Zeit hat, um angezeigt zu werden
            SplashOff()
            ExitLoop
          EndIf
      Wend
    
      If Not $authOKFound Then
          MsgBox(16, '', 'Keine Authentifizierung möglich, Sie verfügen nicht über entsprechende RSA Schlüssel')
          Exit
      EndIf
    
    
    
    
    
    _MoveProgressBar()
    _ErfolgsMSG()
    _MoveProgressBar()
    _MoveProgressBar()
    _MoveProgressBar()
    GUIDelete()
    
    Func _ProgressGUI()
        ; Erstellen Sie ein GUI-Fenster mit Fortschrittsbalken
        GUICreate("Backup vom Server wird geholt", 300, 100)
        GUISetState(@SW_SHOW)
        GUICtrlCreateLabel("Backup vom Server wird geholt", 10, 10, 280, 20) ; Text für Fortschrittsanzeige
        GUICtrlSetFont(-1, 12, 800) ; Schriftgröße 12 und fett (800)
        Global $ProgressBar = GUICtrlCreateProgress(10, 40, 280, 30, $PBS_MARQUEE) ; Fortschrittsbalken
        GUICtrlCreateLabel("Escape zum Abbrechen", 10, 75, 280, 20, $SS_CENTER) ; Text am unteren Rand
        GUICtrlSetFont(-1, 10, 800) ; Schriftgröße 10 und fett (800)
    EndFunc
    
    Func _MoveProgressBar()
        For $i = 1 To 100 Step 10;Bewegung Balken
            GUICtrlSendMsg($ProgressBar, $PBM_SETPOS, $i, 0)
            Sleep(500) ; Ändere die Schlafdauer je nach Fortschrittsgeschwindigkeit
        Next
    EndFunc
    
    Func _ErfolgsMSG()
        $sMessage = "KOHA APACHE-Server, Backup wurde geholt!"
        SplashTextOn("", $sMessage, 300, 110, @DesktopWidth - 320, @DesktopHeight - 80, $DLG_TEXTLEFT + $DLG_NOTITLE + $DLG_MOVEABLE, "Arial", 11, "")
        _Speak("Das Backup vom KOHA Server wurde gesichert")
        Sleep(9000)
        SplashOff()
    EndFunc
    
    Func _Speak($text)
        $oSp = ObjCreate("SAPI.SpVoice")
        $oSp.Speak($Text)
    EndFunc
    
    Func _checkDomain()
        ; Überprüfen, ob der Server 192.168.100.33 im LAN erreichbar ist
        If Ping("192.168.100.33", 1000) Then
            ToolTip("Der verwendete PC darf sich nicht in der Domäne befinden, bitte offenes LAN nutzen !!!", 0, 0)
            Sleep(2000) ; 2 Sekunden warten
            ToolTip("") ; Tooltip ausblenden
            SplashTextOn("", "SSH Port gesperrt!!!", 300, 110, @DesktopWidth - 320, @DesktopHeight - 80, $DLG_TEXTLEFT + $DLG_NOTITLE + $DLG_MOVEABLE, "Arial", 11, "")
            Sleep(3000) ; 3 Sekunden warten
            SplashOff()
            Exit ; Beenden Sie das Skript, wenn der DC erreichbar ist, da kein SSH
        EndIf
    EndFunc
    
    Func _checkBackVolume()
        Local $var = DriveGetDrive("all")
        If Not @error Then
            For $i = 1 To $var[0]
                Local $search = FileExists($var[$i] & "\backupmedium1.txt") ; Beachten Sie den Backslash "\"
                If $search Then
                    $usb = StringUpper(StringLeft($var[$i], 1)) ; Ersten Buchstaben des Laufwerks in Großbuchstaben
                    ExitLoop
                EndIf
            Next
    
            If $usb = '' Then
                SoundPlay("C:\Windows\Media\Windows-Hardwarefehler.wav") ; Warnton abspielen
                _Speak("Bitte schließen Sie das Backup-Medium an")
                MsgBox(16, "Fehler", "Kein Backup-Volume gefunden")
                Exit
            EndIf
        EndIf
        Return $usb
    EndFunc
    
    Func _CheckAndCreateBacksServerFolder()
        Local $sFolderPath = $usb & ":\linuxback\koha"
    
        ConsoleWrite("Überprüfe und erstelle Ordner: " & $sFolderPath & @CRLF)
    
        If Not FileExists($sFolderPath) Then
            DirCreate($sFolderPath)
            If Not FileExists($sFolderPath) Then
                ConsoleWrite("Fehler: Der Ordner konnte nicht erstellt werden: " & $sFolderPath & @CRLF)
                MsgBox(16, "Fehler", "Der Ordner konnte nicht erstellt werden: " & $sFolderPath)
                Exit
            EndIf
        EndIf
    EndFunc
    
    Func AbortScript() ; Abbruchfunktion
        Exit
    EndFunc
    Alles anzeigen

    Vielen Dank noch mal

    lg und schönes WE

  • SSH Passwort falsch

    • casi4712
    • 13. Oktober 2023 um 17:36

    ok ich habs jetzt erst mal, wenn noch Anregungen gerne. Mit Regex schau ich demnächst mal

    AutoIt
    #cs ----------------------------------------------------------------------------
    
     AutoIt Version: 3.3.16.1
     Author:         myName
    
     Script Function:
        Template AutoIt script.
    
    #ce ----------------------------------------------------------------------------
    
    ; Script Start - Add your code below here
    Opt('MustDeclareVars', 1)
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPIFiles.au3>
    
    Global $PSCommand, $password, $pid, $output, $errorOutput, $line, $tries = 0
    Global Const $maxfails = 3
    Global Const $ServerIP = "x.x.x.x"
    ;LINUX COMMANDS
    Global Const $Command2 = 'systemctl start apache2'
    
    ; Datei "log.txt" löschen, falls vorhanden
    FileDelete("C:\log.txt")
    
    
    _precheck()
    
    
    While 1
        $output = ""
        $errorOutput = ""
        ; Benutzer zur Eingabe des Passworts auffordern
        $Password = InputBox("Anmeldeinformationen", "Geben Sie Ihr Passwort ein:", "", "*")
        ;Es wurde Abbrechen geklickt
        If @error = 1 then ExitLoop
    
        ; Stellen Sie sicher, dass ein Passwort eingegeben wurde
        If $Password = "" Then
            MsgBox(16, "Fehler", "Kein Passwort eingegeben.")
            ExitLoop
        EndIf
    
        ;Anzahl Versuche hochzählen
        $tries += 1
    
        ; Starten Sie PowerShell und übergeben Sie das Passwort
        ;StartSSH
     _startSSH()
    
        ;SSHcommand
        $PSCommand &= 'Invoke-SSHCommand -SSHSession $Session -Command \"' & $Command2 & '\" ; '
    
        ;SSH Sessioin beenden
    _EndSSH()
    
        $pid = Run($PSCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        While 1
            $line = StdoutRead($pid)
            If @error Then ExitLoop
            $output &= $line
        WEnd
    
        While 1
            $line = StderrRead($pid)
            If @error Then ExitLoop
            $errorOutput &= $line
        WEnd
    
        If StringInStr($errorOutput, "Permission denied (keyboard-interactive)") Then
            MsgBox(16, "Fehler", "Zugriff verweigert. Bitte überprüfen Sie das Passwort.")
            ;Prüfen ob zu viele Fehlversuche erreicht wurden.
            If $tries = $maxfails then ExitLoop
        Else
            FileWrite("C:\log.txt", $output)
            MsgBox(0, "Info", "Server wurde neu gestartet. Weitere Informationen finden Sie in C:\log.txt.")
            ExitLoop
        EndIf
    WEnd
    
    
    
    
    Func _StartSSH()
        $PSCommand = 'powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "'
        $PSCommand &= '$Username = \"root\" ; ' ; Hier ist der Benutzername festgelegt
        $PSCommand &= '$Password = ConvertTo-SecureString -String \"' & $Password & '\" -AsPlainText -Force ; '
        $PSCommand &= '$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password) ; '
        $PSCommand &= '$Session = New-SSHSession -ComputerName \"' & $ServerIP & '\" -Credential $Credential -Port 22 ; '
    EndFunc
    
    Func _EndSSH()
    $PSCommand &= 'Remove-SSHSession -SSHSession $Session ; "'
    EndFunc
    
    Func _ErrorHandling()
    EndFunc
    
    Func _precheck()
        If Not FileExists("C:\Program Files\PuTTY\pscp.exe") Then
            ToolTip("Die Datei 'C:\Program Files\PuTTY\pscp.exe' wird jetzt bereitgestellt!", 0, 0)
            Sleep(2000) ; 2 Sekunden warten
            ToolTip("") ; Tooltip ausblenden
            ; Hier MSI-Installation durchführen
            _InstallPSCP()
        EndIf
    
        ; Überprüfen, ob der Server 192.168.100.33 im LAN erreichbar ist
        ; If Ping("192.168.100.33", 1000) Then
            ; ToolTip("Der verwendete PC darf sich nicht in der Domäne befinden, bitte offenes LAN nutzen !!!", 0, 0)
            ; Sleep(2000) ; 2 Sekunden warten
            ; ToolTip("") ; Tooltip ausblenden
        ; EndIf
    
    
        ; Überprüfen, ob der Server 192.168.100.50 im LAN erreichbar ist
        If Ping("192.168.100.33", 1000) Then
         ToolTip("Der verwendete PC darf sich nicht in der Domäne befinden, bitte offenes LAN nutzen !!!", 0, 0)
         Sleep(2000) ; 2 Sekunden warten
         ToolTip("") ; Tooltip ausblenden
         SplashTextOn("", "Bitte offenes WLAN nutzen und noch mal probieren", 300, 110, @DesktopWidth - 320, @DesktopHeight - 80, $DLG_TEXTLEFT + $DLG_NOTITLE + $DLG_MOVEABLE, "Arial", 11, "")
         Sleep(3000) ; 3 Sekunden warten
         SplashOff()
         Exit ; Beenden Sie das Skript, wenn der Server erreichbar ist
        EndIf
    EndFunc
    Alles anzeigen
  • SSH Passwort falsch

    • casi4712
    • 13. Oktober 2023 um 17:16

    klingt gut, werde ich mich mal mit befassen, wenn mehr Zeit. Aber ich weiss jetzt warum es neulich nicht funktionierte, weil ich es in der Domänenumgebung versehentlich gestarten hatte, und da ist ssh leider gesperrt. Also kommt bei Fehleingabe des Passwortes der Text server wurde neu gestartet, passiet natürlich nix. Also fehlt nur noch ne Abfrage dass er dass dann nicht bringt sondern ein Fenster Bitte nicht in der Domänenumgebung verrwenden, also wenn Bedingung server 192.168.100.50 erreichbar (Domänenserver) aber an welche Stelle, dass ist hier die Frage


    lg

    und schönen Abend noch

  • SSH Passwort falsch

    • casi4712
    • 12. Oktober 2023 um 16:30

    Also mit dem Regex Ansatz müsste ich mich noch mal bei Gelegenheit genauer befassen, denke es muss aber auch nciht so kompliziert funktionieren, wenn man das auch mit stdout erledigen kann. So und nun habe ich noch mal geschaut und nun funktioniert komischerweise wieder meine vorversion bzw, auch deine angepasste Version, ganz merkwürdig.

    lg

  • SSH Passwort falsch

    • casi4712
    • 12. Oktober 2023 um 16:14

    okidoki recht herzlichen Dank, werde ich morgen gleich mal testen

    lg und schönen Abend noch

  • SSH Passwort falsch

    • casi4712
    • 10. Oktober 2023 um 17:18

    ja funktioniert jetzt beides nicht mehr, ich hatte es gestern abend noch mehrfach getestet, selbst wenn ich bei 2ten mal das pw richtig eingebe kommt paswort verweigert, weil das log immer leer bleibt, kein Plan warum es gestern ging

    @Taler:ist diede Methode sicher?

    lg und einen schönen Abend

  • SSH Passwort falsch

    • casi4712
    • 10. Oktober 2023 um 13:08

    schon megakomisch, gestern hats wirklich noch funktioniert, jetzt bleibt das log immer leer und er fährt mit der weiteren Verarbeitung fort, auc hwenn er natürlcih nichts tut bei falschem Pw, aber er sagt das er was tut und keine erneute PW Abfrage, gestern stand noch im log irgendwas mit Fehler 0 bei erfolgtem Login.

    Zum Mäuse melken

  • SSH Passwort falsch

    • casi4712
    • 10. Oktober 2023 um 13:01

    jo danke MOmbi, war wohl gestern noch zu spät, komischerweise hat es da noch funktioneirt, ich versuchew mal Deine überarbeitete.

    recht herzlichen Dank

    lg

    PS @Taler Danke für den Tip

  • SSH Passwort falsch

    • casi4712
    • 10. Oktober 2023 um 10:02

    so ich habe mal versucht jetzt eure Vorschläge zusammenzupacken und bin jetzt zu folgendem funktionsähigen Ergebnis gekommen, wenn jemand noch Ergänzungsvorschläge hat, gerne:

    AutoIt
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPIFiles.au3>
    
    ; Datei "log.txt" löschen, falls vorhanden
    FileDelete("C:\log.txt")
    
    Global  $PSCommand = 'powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "'
    Global $ServerIP = "x.x.x.x"
    Global $Command2 = 'systemctl start apache2'
    
    While 1
        ; Benutzer zur Eingabe des Passworts auffordern
        Local $Password = InputBox("Anmeldeinformationen", "Geben Sie Ihr Passwort ein:", "", "*")
    
        ; Stellen Sie sicher, dass ein Passwort eingegeben wurde
        If $Password = "" Then
            MsgBox(16, "Fehler", "Kein Passwort eingegeben.")
            ExitLoop
        EndIf
    
        ; Starten Sie PowerShell und übergeben Sie das Passwort
        ;StartSSH  
        $PSCommand &= '$Username = \"root\" ; ' ; Hier ist der Benutzername festgelegt
        $PSCommand &= '$Password = ConvertTo-SecureString -String \"' & $Password & '\" -AsPlainText -Force ; '
        $PSCommand &= '$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password) ; '
        $PSCommand &= '$Session = New-SSHSession -ComputerName \"' & $ServerIP & '\" -Credential $Credential -Port 22 ; '
        
        ;SSHcommand
          $PSCommand &= 'Invoke-SSHCommand -SSHSession $Session -Command \"' & $Command2 & '\" ; '
        
        ;SSH Sessioin beenden
        $PSCommand &= 'Remove-SSHSession -SSHSession $Session ; "'
    
        Local $pid = Run($PSCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        
        
        Local $output = ""
        Local $errorOutput = ""
    
            While 1
                $line = StdoutRead($pid)
                If @error Then ExitLoop
                $output &= $line
            WEnd
    
            While 1
                $line = StderrRead($pid)
                If @error Then ExitLoop
                $errorOutput &= $line
            WEnd
    
        If StringInStr($errorOutput, "Permission denied (keyboard-interactive)") Then
            MsgBox(16, "Fehler", "Zugriff verweigert. Bitte überprüfen Sie das Passwort.")
        Else
            FileWrite("C:\log.txt", $output)
            MsgBox(0, "Info", "Server wurde neu gestartet. Weitere Informationen finden Sie in C:\log.txt.")
            ExitLoop
        EndIf
    WEnd
    Alles anzeigen

    lg und eine schöne Woche noch

  • SSH Passwort falsch

    • casi4712
    • 9. Oktober 2023 um 14:53

    ok Moombas dann werd ich das erst mal prüfen

    recht herzlichen Dank für euren Input

  • SSH Passwort falsch

    • casi4712
    • 9. Oktober 2023 um 14:52

    ne Iddee wäre vielleicht die authlog aus var/logs auf der LinuxSeite zu nutzen, bei erscheinen dann diese 2 Zeilen:

    Zitat

    Oct 9 14:49:39 s19457989 sshd[2278]: Failed password for invalid user spark from 220.83.208.16 port 37428 ssh2

    Oct 9 14:49:40 s19457989 sshd[2278]: Connection closed by invalid user spark 220.83.208.16 port 37428 [preauth]

    Könnte man dass evtl checken durch Autoit

  • SSH Passwort falsch

    • casi4712
    • 9. Oktober 2023 um 14:26

    hall danke euch erstmal, also wie ich dem SSH client das sagen soll dass er eine Datei schreiben soll müsste ich ma gucken.

    @Mombas: das werde ich gleich mal ausprobieren, ich versteh jetzt aber nicht was das hier macht:

    Code
    adb tcpip 5555

    oder ist das nur exemplarisch gemeint, adb kenne ich von meinem Handy;)

    danke und bis spädder

  • SSH Passwort falsch

    • casi4712
    • 9. Oktober 2023 um 00:15

    okidoki, danke erst mal, ich schau mir das morgen mal an, klingt interessant.

    lg

    Ich sehe gerade ich hoffe wir haben nicht aneinnder vorbei geredet, dass was du angehängt hat generiert ja einen MD5 Key, Ich habe ja für meinen Server ein Passwort, ich möchte das aber ungern in der autoit speichern, wär natürlich das einfachste. Die Sicherheit des Servers ist auch gewährleistet durch Zufügen des Zertifikats in die Registry, das ist also nicht das Problem, aber die Rückmeldung wenn ein falsches Passwort eingegeben wurde an autoit, da habe ich halt noch keine Lössung für.

  • SSH Passwort falsch

    • casi4712
    • 8. Oktober 2023 um 18:34

    Hallo allerseits,

    ichhabe ein kleiens Problemchen, vielleicht kann ja jemand helfen und weiss wie es geht. Ich habe ein kleines Scrpzchen, um auf meinem root server einen Befehl auszuführen, hier exemplarisch ein restart des webservers. Das funktioniert auch, leider erkennt er nicht wenn ein falsches Kennwort eingegeben wird, also auf der ssh konsole Access denied erscheinen würd. Kenne mich mit den Umleitungsgeschichten noch nicht so aus, hier das kleine script:

    AutoIt
    ...
    .
    .
    Local $Password = InputBox("Anmeldeinformationen", "Geben Sie Ihr Passwort ein:", "", "*")
    
    ; Passwort muss eingegeben werden
    If $Password <> "" Then
        ; Starten Sie PowerShell und übergeben Sie das Passwort
        Local $ServerIP = "x.x.x.x"
        Local $Command = 'systemctl restart apache2'
        Local $PSCommand = 'powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "'
        
        ; SSH Anmeldung
        $PSCommand &= '$Username = \"root\" ; ' ; Hier ist der Benutzername festgelegt
        $PSCommand &= '$Password = ConvertTo-SecureString -String \"' & $Password & '\" -AsPlainText -Force ; '
        $PSCommand &= '$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password) ; '
        $PSCommand &= '$Session = New-SSHSession -ComputerName \"' & $ServerIP & '\" -Credential $Credential -Port 22 ; '
        
        
        ;SSH befehl ausführen
        $PSCommand &= 'Invoke-SSHCommand -SSHSession $Session -Command \"' & $Command2 & '\" ; ' ;restart Apache
    
    
        ;SSH beenden
        $PSCommand &= 'Remove-SSHSession -SSHSession $Session ; '
        $PSCommand &= '"'
        
        RunWait($PSCommand, "", @SW_HIDE)
        
        MsgBox(0, "Info", " Server wurde neu gestartet.")
    Else
        MsgBox(16, "Fehler", "Kein Passwort eingegeben.")
    EndIf
    
    ...
    .
    .
    Alles anzeigen

    Vielen dank schon mal und einen schönen Rest Sonntag

    lg

  • Ausgang aus While Schleife

    • casi4712
    • 31. Mai 2023 um 14:33

    ok dat hatte ich mir schon gedacht, (solltest oder geht einfach nicht?) aber wie mach ich das mit den auskommentierten Teilen, dann auch in eine Extra Function?

    Danke für die prompte Antwort


    lg

  • Ausgang aus While Schleife

    • casi4712
    • 31. Mai 2023 um 13:13

    Hallo allerseits,

    habe wieder mal eine blöde Frage. Ich versuche aus einer OPT Eventmode GUI eine SubGUI zu erstellen. Diese funktioniert so auch, aber sobald ich dort (in dei SubGUI) eine While Schleife mit bestimmten Ifs einfüge (hier auskommentiert) kann ich diese nicht mehr schliessen. Was felht hier, sicherlich nur ne Kleinigkeit. Für sachdienliche Hinweise wäre ich sehr dankbar. Ich hoffe nicht dass es am EventMode liegt.

    AutoIt
    #include-once
    #include <File.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListBox.au3>
    #include <GuiComboBox.au3>
    #include <StringSize.au3>
    
    Opt("GUIOnEventMode", 1)
    #NoTrayIcon
    Global $SubBack = 0xFFFFFF, $Var1, $Var2
    Global $btn1, $btn2
    Global $hGuiSettings, $hMainGui
    
    
    $hMainGui = GUICreate("Some Windowww", 600, 400)
    GUICtrlSetState($hMainGui, $GUI_SHOW)
    Global $mPrinter = _Form2($hMainGui)
    GUISetState(@SW_SHOW, $mPrinter)
    
    
     While Sleep(100)
     WEnd
    
    Func _Form2($hParent)
     Local $iWidth = 430, $iHeight = 480, $iBorder = 10, $iWidthRight = 100, $iListHeight = 120, $iLineHeight = 30
     Local $iWidthLeft = $iWidth-$iWidthRight-$iBorder*3
     Local $mPrinterGuiData[]
    
    
    ;CREATE GUI
    $mPrinterGuiData.Gui = GUICreate("SPC", $iWidth, $iHeight, -1, -1, -1, -1, $hParent)
    
     GUICtrlSetState($hParent, $GUI_DISABLE)
      GUICtrlSetState(-1, $GUI_DISABLE)
      GUISetOnEvent($GUI_EVENT_CLOSE, "_closePrinterGui", $mPrinterGuiData.Gui)
    
      $idButton_Setings = GUICtrlCreateButton("Prefs1", 170, 10, 70, 20)
       GUICtrlSetOnEvent( -1, "OpenGuiSettings")
       GUICtrlSetTip( -1, "Settings")
    
    EndFunc
    
    
    Func OpenGuiSettings()
        ; GUI "GUI settings" erstellen
        $hGuiSettings = GUICreate("GUI settings", 450, 260, 450, 295)
        GUISetOnEvent($GUI_EVENT_CLOSE, "_GuiSettingsClose")
    
    local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)
        Local $aWindow_Size = WinGetPos($hGuiSettings)
        Local $aWindowClientArea_Size = WinGetClientSize($hGuiSettings)
    
        Local $Inputvar1 = GUICtrlCreateInput($var1, 170, 50, 240, 20)
        Local $Inputvar2 = GUICtrlCreateInput($var2, 170, 150, 240, 20)
        $btn2 = GUICtrlCreateButton ("Fertig", 290, 230, 120, 20)
    
        ; GUI "GUI settings" anzeigen
        GUISetState(@SW_SHOW, $hGuiSettings)
    
    
         ; While 1 ; Loop until the user exits.
             ; Switch GUIGetMsg($hGuiSettings)
    
            ;_Bei Änderung InputFelder
                 ; If $var1 <> GUICtrlRead($Inputvar1) Then IniWrite("spc.ini", "settings", "var1", GUICtrlRead($Inputvar1))
                 ; If $var2 <> GUICtrlRead($Inputvar2) Then IniWrite("spc.ini", "settings", "var2", GUICtrlRead($Inputvar2))
             ; ExitLoop
    
                ; CASE $btn2
                    ; _startcheck()
                   ; GUIDelete($hGuiSettings)
                   ; Return
    
                ; Case $GUI_EVENT_CLOSE
                    ; GUIDelete($hGuiSettings)
                    ; ExitLoop
            ; EndSwitch
        ; WEnd
    EndFunc   ;==>OpenGuiSettings
    
    
    Func _closePrinterGui()
        exit
    EndFunc
    
    Func _GuiSettingsClose()
        GUIDelete($hGuiSettings)
    EndFunc   ;==>_GuiSettingsClose
    Alles anzeigen

    lg und schöne Restwoche noch

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™