gpt4 book ai didi

c# - 如何使用 SharpSSH 执行提示额外输入的 linux 命令?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:18 25 4
gpt4 key购买 nike

好的,这就是我要做的

我必须设置一个到 Linux 机器的 SSH session 并发出像“ls”或 cp 这样的命令。

这是片段

            SshStream  ssh = new SshStream ("myhost","root","pass");
ssh.Prompt ="#";
ssh.RemoveTerminalEmulationCharacters = true;
byte[] byt = System.Text.Encoding.ASCII.GetBytes("rm vivek");
Array.Resize (ref byt,byt.Length +3 );
byt[byt.Length-1]=(byte)'\r';
byt[byt.Length - 2] = (byte)'y';
byt[byt.Length - 3] = (byte)'\r';
ssh.Write(byt);

Console.WriteLine(ssh.ReadResponse());

问题是像 "ls" 这样的命令很简单,你输入它并给出输出,但是像 rm

这样的命令

需要像“y”这样的附加确认

正如您从上面的代码片段中看到的,代码本质上生成了一个字节序列,如

rm vivek [输入] y [输入]

但是不行,好像还在等待输入

[root@host ~]# rm vivek
rm: remove regular file `vivek'?

我在这里做错了什么?

希望问题清楚。

P.S 我再次尝试了 SSHExec 示例,结果相同。

最佳答案

为什么不直接执行 rm vivek -f 来避免确认?

否则,在阅读回复之前,只需期待问题并回答:

 ssh.Write(byt);
ssh.Expect("rm: remove .*");
ssh.WriteLine("y");
Console.WriteLine(ssh.ReadResponse());

关于c# - 如何使用 SharpSSH 执行提示额外输入的 linux 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com