如何使用SharpSSH执行提示输入附加输入的linux命令?
问题描述:
好吧继承人我正在尝试做什么如何使用SharpSSH执行提示输入附加输入的linux命令?
我必须设置一个SSH会话到一台linux机器并发出一个像“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命令
需要addtional acknowledement像“y”
正如你可以从上面的代码片段看到的,代码本质上产生了一个字节序列,如
RM维韦克[进入] Y [进入]
但它不工作,它是作为如果在
[[email protected] ~]# 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进行通信,而命令并不总是有这些选项......那就是我的根本问题..请不要误解我的意思,我只是在解释我的问题 – 2012-03-25 04:00:13
您必须将其视为一个对话框。你发送了一些东西,你期望的东西,你发送别的东西,等等。 – Diego 2012-03-25 04:03:19
会试一试! – 2012-03-25 04:03:43