首页 > 解决方案 > macOS - 使用“进程”远程登录到 IP 地址并传递命令

问题描述

我正在开发一个 macOS 应用程序,我需要在其中连接telnet到设备并向其发送命令。

(顺便说一句,我正在连接到 Roku)

这是据我所知

func telnet(to host: String, port: String) {
    let process = Process()
    let pipe = Pipe()

    process.executableURL = URL(fileURLWithPath: "/usr/local/bin/telnet")
    process.arguments = [host, port]
    process.standardOutput = pipe

    do {
        try process.run()
    } catch {
        return
    }

    let resultData = pipe.fileHandleForReading.readDataToEndOfFile()
    let result = String (data: resultData, encoding: .utf8) ?? ""
    print(result)
}

telnet(to: "10.0.1.11", port: "8080")

问题是进程立即关闭。我需要保持进程打开并以某种方式向设备发送命令,然后关闭连接。

所以这些是我的问题:

  1. 我怎样才能让进程继续运行?
  2. 如何通过 telnet 连接向设备发送命令?

标签: swiftmacoscocoatelnet

解决方案


您最好的选择是避免Process直接从您的应用程序使用和建立网络连接。/usr/local/bin/telnet(这也将使您摆脱对macOS 的全新安装中不存在的依赖。)

SwiftSocket pod看起来是一种很好的方法。文档中的“客户端套接字示例”似乎涵盖了您的大部分问题。


推荐阅读