Я использую plink из С# для подключения к серверам Linux и запуска некоторых программ. И консольная программа С#, и plink.exe находятся на одном компьютере с Windows.
Проблема в том, что когда я впервые подключаюсь к серверу Linux, plink спрашивает меня, хочу ли я принять и сохранить ключ SSH с сервера Linux. Я всегда хочу ответить «да» на это, потому что все серверы находятся в моей локальной сети и нет проблем с безопасностью.
Я использую тип процесса С#, передаю правильный аргумент в plink, перенаправляю вывод и запускаю. Теперь проблема заключается в том, что когда запрашивает plink, process.StandardOutput.ReadToEnd(); зависает, и у меня нет возможности выяснить, предложил ли мне plink принять ключ или я действительно вошел на сервер Linux.
string output = string.Empty;
string error = string.Empty;
string arguments = @" -ssh -pw password [email protected] ./Install_xxx.bin";
using (Process process = new Process())
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "plink";
psi.Arguments = arguments;
psi.ErrorDialog = false;
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
process.StartInfo = psi;
process.Start();
output = process.StandardOutput.ReadToEnd();
error = process.StandardError.ReadToEnd();
}
Спасибо