我想知道如何在Visual Basic express中使用C#打开putty。然后通过ssh会话执行命令。
答案 0 :(得分:3)
我最近不得不使用WinSCP做类似的事情,我采用的方式是重定向标准输入和输出启动过程。如果Putty使用标准输入/输出,您可能可以使用相同的方法。
WinSCP页面上的sample非常好,所以我建议从那开始,这是关于类似内容的代码项目文章:How to redirect Standard Input/Output of an application
答案 1 :(得分:0)
您可以将plink.exe用于SSH,将pscp.exe用于SCP。 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
下载两个文件,然后将它们复制到您的解决方案中。然后在“属性”下选择:如果更新则复制。
// 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();
答案 2 :(得分:-2)
您实际需要的是.NET的SSH组件,能够提供对远程主机的shell和命令通道访问。 Shell就是你用PuTTY看到的。您“键入”请求并获得一些响应,然后您需要解析这些响应以从命令提示符中分离响应。命令通道是指逐个发送命令并且只返回响应。你不需要解析任何东西(除了处理实际的响应)。简单组件不能在一个会话中发送多个命令。
您可以使用我们的SSH component for .NET,它提供shell和命令通道,并支持多种类型的身份验证(因此服务器使用的身份验证类型无关紧要 - 我们的组件支持它)。