Hallo zusammen,
ich versuche mich gerade an einer SSH-Software, um vom iPhone aus unterwegs auf zu wartende Server zugreifen zu können.
Dazu verwende ich das im OS X-Basissystem beiliegende SSH-Programm, weil ich ein wenig ratlos war, wie ich vorhandene Bibliothek (z.B. libssh2) gegen das iPhone kompilieren und meiner Anwendung beilegen kann.
Um das SSH-Programm zu starten verwende ich NSTask, wie von Apple empfohlen (siehe Code unten). Das funktioniert in soweit gut, als dass das Programm zumindest startet, wenn ich keine Parameter zu übergeben versuche. Wenn ich allerdings den Aufruf "ssh -l <username> <host> -T" starte, so startet der Debugger in Xcode, der allerdings scheinbar nicht in die Anwendung reinkommt, zumindest sehe ich nur die gdb-Konsole:
Theoretisch sollte ich zumindest die Frage nach dem RSA-Fingerprint sehen. Aber das bleibt aus irgendeinem Grund aus stattdessen sehe ich genanntes Bild in der Konsole von Xcode.
Alles anzeigen
Kann mir jemand einen Anhaltspunkt dafür geben, wo ich den Fehler zu suchen habe?
Grüße,
Christopher
ich versuche mich gerade an einer SSH-Software, um vom iPhone aus unterwegs auf zu wartende Server zugreifen zu können.
Dazu verwende ich das im OS X-Basissystem beiliegende SSH-Programm, weil ich ein wenig ratlos war, wie ich vorhandene Bibliothek (z.B. libssh2) gegen das iPhone kompilieren und meiner Anwendung beilegen kann.
Um das SSH-Programm zu starten verwende ich NSTask, wie von Apple empfohlen (siehe Code unten). Das funktioniert in soweit gut, als dass das Programm zumindest startet, wenn ich keine Parameter zu übergeben versuche. Wenn ich allerdings den Aufruf "ssh -l <username> <host> -T" starte, so startet der Debugger in Xcode, der allerdings scheinbar nicht in die Anwendung reinkommt, zumindest sehe ich nur die gdb-Konsole:
This GDB was configured as "i386-apple-darwin".warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
Theoretisch sollte ich zumindest die Frage nach dem RSA-Fingerprint sehen. Aber das bleibt aus irgendeinem Grund aus stattdessen sehe ich genanntes Bild in der Konsole von Xcode.
Quellcode
- // Now let's start SSH
- NSTask *sshTask = [[NSTask alloc] init];
- NSPipe *inputPipe = [NSPipe pipe];
- NSPipe *outputPipe = [NSPipe pipe];
- NSFileHandle *outputFHandle = [outputPipe fileHandleForReading];
- NSFileHandle *inputFHandle = [inputPipe fileHandleForWriting];
- NSData *outputData = nil;
- // Set the Pipes as Input and Output
- [sshTask setStandardInput:inputPipe];
- [sshTask setStandardOutput:outputPipe];
- [sshTask setStandardError:outputPipe];
- [sshTask setLaunchPath:sshBinary];
- [sshTask setArguments:[NSArray arrayWithObjects:@"-l", username, @"-T", hostname, nil]];
- NSLog(@"Task set up.\n"); // dieser Punkt wird noch erreicht!
- // Make it running.
- [sshTask launch];
- // Change to Terminal view
- [tabController setSelectedIndex:2];
- [terminalView setText:nil];
- while ((outputData = [outputFHandle availableData]) && [outputData length]) {
- NSString *dataString = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding];
- [terminalView setText:[[NSString stringWithString:[terminalView text]] stringByAppendingString:dataString]];
- [dataString release];
- }
- // Okay, we're finished
- [sshTask release];
Kann mir jemand einen Anhaltspunkt dafür geben, wo ich den Fehler zu suchen habe?
Grüße,
Christopher