Взаимодействовать с sftp (cygwin) из приложения на Windows - PullRequest
1 голос
/ 19 августа 2011

В 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#?

1 Ответ

0 голосов
/ 19 августа 2011

Cygwin имеет пакетов для тонны общих утилит UNIX , включая ожидают и (вероятно) пустые.Теоретически вы все еще можете использовать их ... (не то чтобы это был самый безопасный, компактный или идеальный вариант ... но это вариант!)

...