プログラムを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に使用できる唯一のコマンドだと思われます。私はこのコードは、私のテストターゲットコンピュータのsystem.logがそれを表示するため、接続を確立するために働くことを知っています。ありがとう。
終了を待たずにすぐにステータスを見つける方法はありますか? –
申し訳ありませんが、スウィフトはまったく使用していませんので、ここで確かな答えを出すことはできません。 'isRunning'を数秒間ポーリングして接続が失敗したかどうかを調べることができますが、何らかのスレッド管理をしない限り、待ち時間はアップストリーム呼び出しをブロックします。 –