相关疑难解决方法(0)

是否可以使用 SSH.NET 从单个登录会话中执行多个 SSH 命令?

我正在将 C# 与 SSH.NET 一起使用,并且已经能够使客户端 SSH 连接正常工作以通过 SSH 执行命令。我可以毫无问题地连接到管理程序 VM 上的 Linux 安装,回读StdOutStdErr等。

但是,每个命令就像一个全新的会话 - 它总是从 开始/home/user,即使您使用最后一个命令从另一个目录结束也是如此。您可以使用分号将多个命令串在一起:

pwd; cd ..; pwd
Run Code Online (Sandbox Code Playgroud)
/home/user
/home
Run Code Online (Sandbox Code Playgroud)

但是如果我执行:

pwd
Run Code Online (Sandbox Code Playgroud)
/home/user
Run Code Online (Sandbox Code Playgroud)

我回到了那个用户的主目录。

我没有断开和关闭命令之间的会话。以下是连续几个命令的一些示例代码,使用路径更改来说明问题:

public void MultiCommandTest()
{
    string output1, output2;

    var host = Config.SshHostName;
    var port = Config.SshHostPort;
    var user = Config.SshUsername;
    var pass = Config.SshPassword;
    var auth = new PasswordAuthenticationMethod(user, pass);
    var info = new ConnectionInfo(host,port,user,auth);

    using (var ssh = new SshClient(info))
    {
        ssh.Connect();
        var cmd1 …
Run Code Online (Sandbox Code Playgroud)

.net c# ssh session ssh.net

5
推荐指数
1
解决办法
7741
查看次数

SSH.NET实时命令输出监控

script.sh远程Linux机器上有一个运行时间很长的脚本.我需要启动它并实时监控它的活动.它活动期间的脚本可以输出到stdoutstderr.我正在寻找一种捕获两种流的方法.

我使用Renci SSH.NET上传script.sh并启动它,所以很高兴看到这个库有一个解决方案.在我看来,完美的解决方案是新方法:

var realTimeScreen= ...;

var commandExecutionStatus = sshClient.RunCommandAsync(
    command: './script.sh',
    stdoutEventHandler: stdoutString => realTimeScreen.UpdateStdout(stdString)
    stderrEventHandler: stderrString => realTimeScreen.UpdateStderr(stderrString));
...
commandExecutionStatus.ContinueWith(monitoringTask =>
{
    if (monitoringTask.Completed)
    {
        realTimeScreen.Finish();
    }
});
Run Code Online (Sandbox Code Playgroud)

wpf ssh monitoring async-await ssh.net

3
推荐指数
2
解决办法
2万
查看次数

在C#中使用PuTTY运行Unix命令

我正在尝试使用C#在PuTTY中运行Unix命令.我有以下代码.但是代码不起作用.我无法打开PuTTY.

static void Main(string[] args)
{
    Process cmd = new Process();
    cmd.StartInfo.FileName = @"C:\Windows\System32\cmd";
    cmd.StartInfo.UseShellExecute = false;
    cmd.StartInfo.RedirectStandardInput = false;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.Start();
    cmd.StartInfo.Arguments = "C:\Users\win7\Desktop\putty.exe -ssh mahi@192.168.37.129 22 -pw mahi";
}
Run Code Online (Sandbox Code Playgroud)

c# putty

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

ssh ×2

ssh.net ×2

.net ×1

async-await ×1

monitoring ×1

putty ×1

session ×1

wpf ×1