我想寫一個簡單的應用程序來執行系統命令來使用MacOS的「Ping」功能。我試圖執行命令「ping -c 1 -S ethernetIP www.google.com」如何在沒有[]括號的情況下顯示函數的輸出?
我希望系統通過以太網適配器專門ping google.com一次,並提供ping結果。
當我扎EthernetIP()和outPing()函數來的按鈕並單擊它我得到以下輸出:
[ 「17.104.78.250」]
平:綁定:無法分配請求的地址 [「」]
我看到EthernetIP()函數正在生成括號[]中的系統以太網接口IP地址。這似乎導致ping功能發生故障,因爲輸入pingOut()函數似乎是:
「ping -c 1 -S [」17.104.78.250「] www.google.com」
我想它喂外殼ping命令該行:
「平-c 1 -S 17.104.78.250 www.google.com」
我怎麼能有這樣的來自以太網IP查詢的字符串在引用時不包括括號和引號outPing()?
import Foundation
func runCmd(cmd : String, args : String...) -> ([String]) {
var output : [String] = []
let task = Process()
task.launchPath = cmd
task.arguments = args
let outpipe = Pipe()
task.standardOutput = outpipe
task.launch()
let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String(data: outdata, encoding: .utf8) {
string = string.trimmingCharacters(in: .newlines)
output = string.components(separatedBy: "\n")
}
task.waitUntilExit()
return (output)
}
func EthernetIP() {
let eIP = runCmd(cmd: "/bin/bash", args: "-c", "ipconfig getifaddr en0")
print(eIP)
}
func outPing() {
let pingip = runCmd(cmd: "/sbin/ping", args: "-c 1", "-S", "\(eIP)", "www.google.com")
print(pingip)
}
感謝Vadian!這就是它!這個社區太棒了! – jefenater