适用于iOS的NMSSH - 从通道中侦听和解析数据

时间:2015-07-10 09:08:51

标签: ios ssh nmssh

我正在开发一个iOS应用程序,它将从用户那里获取一些输入并使用SSH和服务器确认将其发送到服务器。发送工作正常,但无法实现从服务器端的监听。

  1. 向服务器发送命令即可。我可以确认服务器端的检查。
  2. 如何处理来自服务器的确认(继续收听)数据。
  3. 我想保持会话直到用户决定。
  4. iOS应用商店合规性 - 应用商店是否有任何合规性限制以保持设备和服务器之间的连接(特别是在后台模式下)。
  5. NMSSHSession *session = [NMSSHSession connectToHost:@"127.0.0.1:22"
                                           withUsername:@"user"];
    
    if (session.isConnected) {
        [session authenticateByPassword:@"pass"];
    
        if (session.isAuthorized) {
            NSLog(@"Authentication succeeded");
        }
    }
    
    NSError *error = nil;
    NSString *response = [session.channel execute:@"ls -l /var/www/" error:&error];
    NSLog(@"List of my sites: %@", response);
    
    BOOL success = [session.channel uploadFile:@"~/index.html" to:@"/var/www/9muses.se/"];
    
    [session disconnect]; //of course I want to keep the connection on all the time. 
    

    SO Stream of data through NMSSH上的帖子使用NMSSH shell解析,导致[NMSSH Issue 20] 但是,但在我的情况下它并没有帮助。

    我已经看到很少有关于这个库实现的教程和帮助,没有找到一个正确的方向。

1 个答案:

答案 0 :(得分:2)

以下来自NMSSH图书馆小组的回复。我刚刚尝试了它并且它正在工作,我将更新与其他查询相关的答案。

NMSSH在GitHub(Issue No. 143)部分也有很多资源可以在这个库上探索。

当通道处于shell模式时,会调用NMSSHChannelDelegate的方法(请参阅startShell :)但方法执行:error:在命令模式下使用channel。 session:didDisconnectWithError:未调用,因为您没有断开会话连接。 请注意,会话将在serverConnect:结束时发布,您应该将会话存储在CustomViewController的属性中。

我的反馈如下所示。

我使用AsyncAPI NMSSH的另一个分支并异步工作来发送或接收数据,特别是发送多个命令现在是无缝的。

  1. 向服务器发送命令即可。我可以确认服务器端的检查。
  2. 如何处理来自服务器的确认(继续监听)数据。
    • 使用AsyncAPI进行整理
  3. 我想保持会话直到用户决定。
    • 每隔15秒向服务器发送心跳类型一字符伪命令,以保持连接处于活动状态,直到用户断开连接。
  4. iOS应用商店合规性 - 应用商店是否有任何合规性限制,以保持设备和服务器之间的连接(特别是在后台模式)。
    • 我的情况不再重要,因为在循环中发送一个字符保持连接处于活动状态(计时器黑客的几行完成了这项工作。