1
我想让我的程序使用SSH连接到另一台计算机。这将是通用的(用户将提供主机名,IP和密码),所以不能使用密钥。这是我到目前为止的代码:查找SSH连接是否成功
func terminalSSH(host:String, password:String, IP:String) {
let pipe = Pipe()
let args = ["-p", password, "ssh", "\(host)@\(IP)"]
let task = Process()
task.launchPath = "/usr/local/bin/sshpass"
task.arguments = args
task.standardOutput = pipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
print(output)
}
我的问题是,我看不到使用sshpass连接是否成功。我希望在连接成功或失败时通知用户。另外,它看起来像sshpass是我可以用于SSH的唯一命令,因为Terminal强制用户输入密码。我知道这段代码能够建立连接,因为我的测试目标计算机上的system.log显示它。谢谢。
是否有任何其他方式可以立即找到状态而无需等待终止? –
对不起,我根本不使用Swift,所以我不能在这里给出一个可靠的答案。您可以轮询'isRunning'几秒钟以查看连接是否失败,但除非您执行一些线程管理,否则任何等待都会阻止上游呼叫。 –