簡體   English   中英

macOS-使用“ Process”將其遠程登錄到IP地址並傳遞命令

[英]macOS - Use `Process` to telnet to an IP address and pass commands

我正在開發一個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連接將命令發送到設備?

最好的選擇是避免使用Process並直接從您的應用程序建立網絡連接。 (這還將使您擺脫對/usr/local/bin/telnet依賴,該依賴關系在macOS的全新安裝中不存在。)

SwiftSocket容器看起來是一種很好的方法。 文檔中的“客戶端套接字示例”似乎涵蓋了您的大多數問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM