【问题标题】:plink.exe : Getting non valid character in outputplink.exe:在输出中获取无效字符
【发布时间】:2014-06-17 16:52:19
【问题描述】:

我正在使用 plink.exe 在远程服务器上执行命令。我能够与远程服务器连接,但是当我对服务器执行命令时,它会返回无效字符输出,例如:

[?7l[H[2J[?25l[1;1H[37m[40m[2;1H[3;1H[4;1H[5;1H[6;1H[7;1H[8;1H[ 9;1H[10;1H[11;1H
[12;1H[13;1H[14;1H[15;1H[16;1H[17;1H[18;1H[19;1H[20;1H[21;1H[22;1H[23;1H[24 ;1H
[?12l[?25h[1;1HMicrosoft Windows [版本 6.1.7601][2;1HCopyright (c) 2009 年微软公司。所有权利 保留。[4;1HC:\Users\Admin>dir /r[5;1H 驱动器 C 中的卷为 UneqSol[6;1H 卷序列号为 02F3-A323[8;1H ​​目录 C:\Users\Admin[10;1H06/17/2014 08:18 PM
.[11;1H06/17/2014 08:18 PM ..[12;1H03/08/2014 上午 11:39 .android[13;1H03/08/2014 上午 11:34 .AndroidStudioPreview[14;1H06/04/2014 09:39 PM 65 .gplink_config[15;1H03/08/2014 上午 11:26
.gradle[16;1H07/10/2013 07:44 PM
.idlerc[17;1H08/18/2013 03:10 PM 1,189 .opgalaxy7.vr[18;1H03/11/2013 晚上 10:59
.swt[19;1H02/22/2014 08:47 PM
.VirtualBox[20;1H07/06/2013 05:52 PM
联系人[21;1H06/08/2014 02:58 PM
桌面[22;1H11/23/2013 01:37 PM
目录[23;1H06/17/2014 09:39 PM
文件[24;1H06/17/2014 07:01 PM 下载[24;1H

我连接服务器的代码是:

 m_Process = new Process();
 m_Process.EnableRaisingEvents = true;
 m_Process.StartInfo.FileName = "plink.exe";
 m_Process.StartInfo.Arguments = "-ssh admin@localhost -pw test";
 m_Process.StartInfo.RedirectStandardOutput = true;
 m_Process.StartInfo.RedirectStandardInput = true;
 m_Process.StartInfo.RedirectStandardError = true;
 m_Process.StartInfo.UseShellExecute = false;
 m_Process.StartInfo.CreateNoWindow = true;
 m_Process.OutputDataReceived += m_Process_OutputDataReceived;

 m_Process.Exited += delegate(object sender, EventArgs ev)
 {
     m_CloseCallback(true);
 };

 m_Process.Start();
 m_Process.BeginOutputReadLine();
 m_Process.BeginErrorReadLine();

 StreamWriter strw = m_Process.StandardInput;
 strw.WriteLine("dir /r"); // send commands 

 // Wait for application to start and become idle
 m_Process.WaitForExit();

如果收到数据,我将获得高于输出,

 private static void m_Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
 {
    string value = e.Data;
 }

如果有人能找出问题所在,那就太好了。

谢谢

【问题讨论】:

  • 你确定这些不仅仅是用来控制文本颜色等的转义字符吗?
  • 我不确定这些,但如果是,那么我如何才能删除这些?
  • 您可能需要查看 plink 文档,尤其是代理转发等方面的文档。
  • 没有得到任何与此相关的东西。有很多与在 c# 中使用 plink.exe 相关的帖子,并且都在使用这些方法,我想知道没有人面临或强调这个问题。可能是我的机器配置有问题,但现在可以确定了。

标签: c# ssh putty plink


【解决方案1】:

尝试设置输出的编码

m_Process.StartInfo.StandardOutputEncoding = Encoding.ASCII;
m_Process.StartInfo.StandardErrorEncoding = Encoding.ASCII;

这是未经测试的。您可能需要不同的编码:http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx

【讨论】:

  • 相同的输出,没有任何改变。还使用了其他一些编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多