1

セッションが作成されると、シェルが開始され、コマンドが書き込まれます: 応答が受信されず、バッファーのコールバック メソッドが呼び出されません。

(channel:execute を使用して単一のコマンドを実行すると機能します)

  -(void) createSessionWithAdress:(NSString*)address username:(NSString*)user   password:(NSString*)pass{
      session = [NMSSHSession connectToHost:address withUsername:user];
      if (session.isConnected) {
        [session authenticateByPassword:pass];
      if (session.isAuthorized) {
          NSError *err = nil;
          session.channel.delegate = self;
          //self.receiveView.text = [session.channel execute:@"ls" error:&err]; // works

          [session.channel startShell:&err];
          NSLog(@"Authentication succeeded");
       }
    }
}




- (void)channel:(NMSSHChannel *)channel didReadData:(NSString *)message{
    NSLog(@"Read data!");
    receiveView.text = [NSString stringWithFormat:@"%@   \n%@",receiveView.text,message];
}

- (void)channel:(NMSSHChannel *)channel didReadError:(NSString *)error{
    receiveView.text = [NSString stringWithFormat:@"%@    \n%@",receiveView.text,error];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    NSLog(@"RETURN PRESSED");
    NSError* err = nil;

    bool commandSucess = [session.channel write:sendView.text error:&err];
    [session.channel write:@"/n" error:&err];

    if (commandSucess) {
        NSLog(@"Command written successfully");
    }else{
        NSLog(@"Command not written successfully");
    } 
    return YES;
}
4

1 に答える 1