Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SharpSSH来执行提示额外输入的linux命令?_C#_Ssh_Console_Sharpssh - Fatal编程技术网

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

C# 如何使用SharpSSH来执行提示额外输入的linux命令?,c#,ssh,console,sharpssh,C#,Ssh,Console,Sharpssh,好的,这就是我要做的 我必须设置一个到linux机器的SSH会话,并发出像“ls”或cp这样的命令 这是片段 SshStream ssh = new SshStream ("myhost","root","pass"); ssh.Prompt ="#"; ssh.RemoveTerminalEmulationCharacters = true; byte[] byt = System.Text.En

好的,这就是我要做的

我必须设置一个到linux机器的SSH会话,并发出像“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[enter]y[enter]

但它不起作用,就好像它仍然在等待输入

[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());

好主意+1但它只解决了“rm”的问题,如果我在配置路由器时必须与IOS对话,而命令并不总是有这些选项。。。这是我的根本问题请不要误会我,我只是在解释我的问题你必须把它看作一个对话。你发送一些东西,你期待一些东西,你发送一些其他的东西,等等。