В Unix у вас есть инструменты, такие как Expect
и Empty
для взаимодействия с терминальными приложениями, такими как sftp
, с использованием псевдо-терминалов. На моем компьютере с Windows установлен Cygwin, и мое приложение C#
должно запустить сеанс sftp для передачи некоторых файлов на удаленный компьютер.
Я начал с некоторого кода, подобного этому
var p = new Process();
p.StartInfo = new ProcessStartInfo
{
FileName = "sftp",
UseShellExecute = false,
CreateNoWindow = false,
RedirectStandardInput = true,
Arguments = username + "@" + server
};
p.Start();
p.StandardInput.WriteLine(password);
Проблема в том, что sftp
не будет читать пароль с stdin
, только с терминала. Вот где приходит Expect. Помимо установки Expect
в cygwin, есть ли способ интерактивно отправить пароль на sftp
из программы C#
?