перенос файлов из Windows в Linux?

#c# #wpf #linux #plink

#c# #wpf #linux #plink

Вопрос:

Я пытаюсь подключиться к компьютеру с Linux через pLink и PuTTY для передачи некоторого файла .txt. Сейчас я просто пытаюсь наладить соединение. У меня есть небольшое окно с 2 текстовыми полями (имя пользователя, linux1) и поле пароля (pwbox1), а также кнопка, при нажатии на которую она должна подключить вас к компьютеру с Linux!

Вот мой код:

  private void button1_Click(object sender, RoutedEventArgs e)
    {
        string user = username.Text;
        string passw = pwbox1.Password;
        string linuxHst = linux1.Text;

        ProcessStartInfo psi = new ProcessStartInfo(@"C:Program Files (x86)PuTTYplink.exe", user   "@"   linuxHst   " -pw "   passw);

        psi.RedirectStandardInput = true;
        psi.RedirectStandardOutput = true;
        psi.WindowStyle = ProcessWindowStyle.Normal;
        psi.UseShellExecute = false;
        psi.CreateNoWindow = false;
        Process process = Process.Start(psi);
        process.WaitForExit(5000);
    }
  

Проблема в том, что когда я пытаюсь это сделать с консольным приложением, оно работает без текстовых полей! но мне это нужно для работы с WPF.
Может кто-нибудь, пожалуйста, скажите мне, что я делаю не так? я что-то упускаю?

Комментарии:

1. Что именно работает не так, как вы ожидаете, и что вы наблюдаете вместо этого? «Но мне это нужно для работы с WPF» на самом деле не является описанием проблемы…

2. это не показывает, что я подключен к машине Linux! окно cmd пустое! он должен показывать что-то вроде «использование mowglin ..», не так ли?

3. Почему окно cmd должно показывать что-либо, если вы это делаете psi.RedirectStandardOutput = true; ? Если вы не хотите перенаправлять вывод консоли и видеть его в окне cmd, не перенаправляйте его 😉 (Возможно, аналогичный аргумент может быть применим к psi.RedirectStandardInput = true; — не уверен, нужно ли вам / хотите выполнять ввод с клавиатуры в этом окне cmd)

4. но точно такой же код работает с консольным приложением! и это показывает, что я подключен.

5. Ну, если это работает в консольном приложении, то код, который вы выполняете там в своем консольном приложении, не совсем такой, как показано выше… — там у вас может быть несколько строк кода, которые заставляют его работать (возможно, что-то вроде Console.WriteLine(process.StandardOutput.ReadToEnd()); )