swift - 在 Swift 中使用 NMSSH 通过 sftp 检索数据

标签 swift ftp sftp nmssh

我正在尝试从我的服务器获取一个 JSON 文件到我的 iPhone。我将 NMSSH 用于我的 FTP 连接并且连接有效。

但我无法从我的服务器检索任何数据。无论我使用什么路径 ~///someFolder/someFolder 都没有关系。每次,我都会收到错误:

NMSSH_Test[] NMSSH: Could not open file at path /testDirectory (Error 0: )

这里是我的代码:

class Data {
    init() {
        let session = NMSSHSession.init(host: "someIp", andUsername: "user")
        session.connect()
        if session.isConnected{
            session.authenticate(byPassword: "password")
            if session.isAuthorized {
                let sftpsession = NMSFTP(session : session)
                sftpsession.contents(atPath: "/testDirectory")
//                if (sftpsession.contentsOfDirectory(atPath: "~/") != nil) {
//                    print("Found Data!")
//                }
            }
        }
    }
}

最佳答案

试试下面的代码:

let session = NMSSHSession(host: serverHost, port: portNo, andUsername: serverUsername)
session.connect()
if session.isConnected{
         let privateKeypath:String = Bundle.main.path(forResource: "mykey", ofType: "")!
         let privateKey: String = try! String(contentsOfFile: privateKeypath, encoding: String.Encoding.utf8)
                
         session.authenticateBy(inMemoryPublicKey: "", privateKey: privateKey, andPassword: passwordStr)
                
         if session.isAuthorized == true {
                let sftpsession = NMSFTP(session: session)
                sftpsession.connect()
                if sftpsession.isConnected {
                     print("download session is connected")
                }
                else {
                     print("Error: download session not connected")
                return
                }
                guard let directoryContents = downloadSession.contentsOfDirectory(atPath: "Your Directory Path goes here!")
                else {
                     print("Unable to read contents of file in SSH site")
                return
                }
                print("Data at specified path captured: " + directoryContents)
                 
                guard let contentList = downloadSession.contents(atPath:  "Enter your path here!")
                else {
                     print("Unable to read contents of file in SSH site")
                return
                }
                print("Printing Contents of file at path")
                print(contentList)             
                }
            }
       }

关于swift - 在 Swift 中使用 NMSSH 通过 sftp 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59847447/

相关文章:

swift - 如何使用 SwiftUI 制作单选列表

swift - SpriteKit convertPointToView/转换点

swift - Swift 3 中的动画曲线

c# - FTP 下载工作多年后突然收到 "150 Opening Data channel for file download from server"

c# - 抛出 WebException 的代码在 .NET 3.5 中有效,但在 4.0 中无效

ssh - 响应 y(es) 到 psftp 主机 key 提示

linux - 获取shell脚本输入密码

logging - Linux (CentOS) 默认 FTP (SFTP) 日志文件?

swift - 闭包参数中的元组成员提取

linux - ftp *.[cC][sS][vV] 在 Windows 上无法正常工作