簡體   English   中英

如何使用 C# 打開膩子會話

[英]how to open a putty session using C#

我想知道如何在 Visual Basic express 中使用 C# 打開膩子。 然后通過 ssh 會話執行命令。

我最近不得不用 WinSCP 做一些類似的事情,我這樣做的方式是用重定向的標准輸入和輸出來啟動這個過程。 如果 Putty 使用標准輸入/輸出,您可能可以使用相同的方法。

WinSCP 頁面上的示例非常好,所以我建議從它開始,這里有一篇關於類似內容的代碼項目文章:如何重定向應用程序的標准輸入/輸出

您可以將 plink.exe 用於 SSH,將 pscp.exe 用於 SCP。 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

下載這 2 個文件,然后將它們復制到您的解決方案中。 然后在屬性下選擇:如果更新則復制。

 // SCP
 var process = new Process();
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = Directory.GetCurrentDirectory() + $@"\pscp.exe";
        processStartInfo.Arguments = $@"-P 22 -pw password filepath.zip root@host:/path ";
        processStartInfo.UseShellExecute = false;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.CreateNoWindow = true;
        process.StartInfo = processStartInfo;
        process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();
        Console.WriteLine(process.ExitCode);

        // SSH
        process = new Process();
        processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = Directory.GetCurrentDirectory() + $@"\plink.exe";  
        processStartInfo.Arguments = $@"-P 22 -pw password root@host command";
        processStartInfo.UseShellExecute = false;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.CreateNoWindow = true;
        process.StartInfo = processStartInfo;
        process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

您實際需要的是 .NET 的 SSH 組件,能夠提供對遠程主機的 shell 和命令通道訪問。 Shell 就是您在 PuTTY 中看到的東西。 您“鍵入”請求並獲得一些響應,您需要對其進行解析,然后將響應與命令提示符分開。 命令通道是指命令一一發送並且您僅收到回復的時間。 您不需要解析任何內容(除了處理實際響應)。 簡單的組件不能在一個會話中發送多個命令。

您可以使用我們的 .NET SSH 組件,它提供 shell 和命令通道,並支持多種類型的身份驗證(因此您的服務器使用哪種身份驗證類型並不重要 - 我們的組件支持它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM