2016-07-08 11 views
0

Ich versuche simplessh Bibliothek zu verwenden, um eine Reihe von Befehlen über SSH (eigentlich, um etwas Haskell zu lernen). Es scheint zu gehen, in Ordnung, aber es hängt an den zweiten runSimpleSSH in diesem Code:Simplessh-Bibliothek hängt bei der Ausführung eines Befehls

module Main where 

import Network.SSH.Client.SimpleSSH 

main :: IO() 
main = do 
    s <- runSimpleSSH $ openSession' "localhost" 22 Nothing 
    case s of 
     Left e -> print e 
     Right s -> do 
      r <- runSimpleSSH $ execCommand s "ls" -- hangs here 
      case r of 
       Left e -> print e 
       Right (Result { resultOut=resultOut, resultErr=resultErr, resultExit=resultExit }) -> print resultExit 

Gibt es etwas falsch mit meinem Haskell-Code oder verwende ich die Bibliothek nicht in Ordnung? Ich bin mir sicher, dass jemand anhand der von der Bibliothek zur Verfügung gestellten Typen feststellen kann.

PS: Ich benutze eigentlich eine patched version of the library, die keine known_hosts erlaubt, aber der Rest scheint unverändert.

Antwort

2

nie benutzt diese Bibliothek aber suchen Sie in der Dokumentation zu openSession:

Öffnen Sie eine SSH-Sitzung. Der nächste Schritt ist die Authentifizierung.

Auch aus execCommand Beschreibung:

Man sollte vor dem Senden von Befehlen auf einer Session authentifiziert werden.

Ich denke, Ihr Code bricht die Konvention durch den Aufruf execCommand vor der erfolgreichen Authentifizierung. Ich bin mir nicht sicher, dass das das Problem ist, aber es sieht so aus, als müsste man das sowieso beheben.

+0

Das passiert, wenn Sie 2 Stunden Schlaf programmieren. Vielen Dank! – zoran119

Verwandte Themen