2015-07-14 11 views
5

Kürzlich habe ich versucht, mit Swift ein (sehr) einfaches Programm zu erstellen, mit dem Sie sich über SSH mit einem Server verbinden und einige Dateien ausführen können. Leider konnte ich nicht herausfinden, wie man eine SSH-Sitzung vollständig innerhalb der Swift-App startet. Hier ist ein Code, den ich geschrieben habe:SSH-Konnektivität mit Swift

var sshConnectCommand = ["-c", "spawn ssh "+sshUsername+"@"+sshHost+"; expect assword:; send "+sshPassword+"\r"] 
func sshIn() { 
    //starting ssh session 
    let sshConnect = NSTask() 
    sshConnect.arguments = [testCmd] 

    //rerouting output through a pipe 
    sshConnect.standardOutput = logAppend 

    //launch! 
    sshConnect.launch(); 
} 

Wie Sie sehen können, habe ich verwendet NSTask zu versuchen und führen Sie den ‚erwarten‘ Befehl das Passwort ein und alles geben. Ich möchte versuchen, die Verwendung von SSH-keygen so weit wie möglich zu vermeiden, da dies ein Server sein soll, auf den der Benutzer keinen Zugriff hat.

Also, um zusammenzufassen: Wie würden Sie SSH ohne SSH-keygen verbinden, während Sie vollständig innerhalb des Anwendungscodes bleiben?

edit: Ich sollte auch hinzufügen, wenn ich versuche, zu kompilieren, bekomme ich diesen Fehler: [Swift._SwiftDeferredNSArray fileSystemRepresentation]: unrecognized selector sent to instance 0x600000032500. Ich bin mir nicht sicher, was das bedeutet.

+0

Sieht aus, als ob Sie irgendwo ein Array haben, dass ein anderes Objekt (ein NSURL, würde ich erraten) erwartet wird. – Kevin

Antwort