process.start("ssh", {"nvidia@" + ip, "-p", "22", "-t", "bash", "-c", "'" + command + "'"});
时间: 2024-12-31 08:34:50 浏览: 9
### 如何使用 `Process.Start` 启动 SSH 连接并执行远程命令
为了实现通过 C# 的 `Process.Start` 方法启动 SSH 并在远程服务器上运行特定命令,可以按照如下方式构建代码:
```csharp
using System;
using System.Diagnostics;
class Program {
static void Main() {
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "ssh"; // 设置要启动的应用程序名称
psi.Arguments = $"nvidia@ip -p 22 \"bash -lc \\\"command\\\"\""; // 构建SSH连接字符串和待执行的命令
psi.RedirectStandardOutput = true; // 重定向标准输出以便读取返回的结果
psi.UseShellExecute = false; // 不使用操作系统shell启动
psi.CreateNoWindow = true; // 隐藏窗口
using (Process process = Process.Start(psi)) { // 创建并启动进程
string result = process.StandardOutput.ReadToEnd(); // 获取命令执行结果
Console.WriteLine(result); // 输出结果显示给用户
}
}
}
```
这段代码创建了一个新的 `ProcessStartInfo` 对象来配置如何启动外部程序(这里是 `ssh`),并通过设置参数指定了目标主机、用户名、端口号以及要在远程机器上执行的具体命令。注意这里的 `-l` 参数用于指定登录 shell 来确保环境变量被正确加载[^2]。
对于某些情况下可能出现的问题,比如由于 FTP 被动模式引起的服务 B 卡顿情况[^4],这并不是直接关联到此场景下的问题;但如果涉及到类似的网络服务操作时,则需要注意检查相应的协议配置和服务状态。
阅读全文