【问题标题】:ShellStream output contains unknown characters [duplicate]ShellStream 输出包含未知字符[重复]
【发布时间】:2020-04-04 02:45:00
【问题描述】:

我正在使用 Ssh.Net 和 StreamReader 在其 ShellStream 上读取来自 ssh 控制台的输出。如果您熟悉控制台输出,那么您肯定知道典型的表格格式数据。如:

COLUMN1     COLUMN2     COLUMN3

value1      value2      value3

value4      value5      value6

value7      value8      value9

我还通过SshCommand 对象直接读取输出,并且我没有任何格式错误。但是,当我使用 StreamReader 时,我会得到诸如[m[1mX[m 之类的神秘字符。 X 是单个字符,通常被空格包围。这只发生在被多个空格包围的单个字符旁边。当字符被方括号包围时,我也会遇到这个问题,这会导致类似[9999[6n

无论如何我都会解析结果,所以我不介意字符,但我需要知道它们是否真的意味着什么,以及它们是否一致。如果两者都不是,如果你能告诉我如何解决这个问题,我会很好。

如果重要,我已连接到 MikroTik 路由器并运行命令 certificate print detail without-paging。此错误发生在标头中,我正在使用此代码输出获取结果并输出流:

Dim response As String = ""
Dim reader As StreamReader = New StreamReader(shellStream)
Dim writer As StreamWriter = New StreamWriter(shellStream)

writer.WriteLine(cmd)
writer.Flush()

Thread.Sleep(500)

Dim line As String = ""
For i As Integer = 0 To 150

    response += line
    line = reader.ReadLine
    response += vbCrLf

Next

Console.WriteLine(response)

【问题讨论】:

标签: vb.net ssh streamreader ssh.net


【解决方案1】:

这些是 ANSI 转义序列 - 即(用相应的数字替换 X):

[Xm - 文字图形模式(颜色、粗细等)

[XB - 光标向下 X

[Xn - 可能是新行

更多信息请查看hereherehere

如果有任何兴趣:就我而言,我可以替换每个 [Xm 序列,因为我没有使用任何给定的文本格式

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2021-12-21
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2015-03-16
    • 1970-01-01
    相关资源
    最近更新 更多