c# - 解释 SSH 输出

标签 c# .net bash ssh xterm

我正在尝试使用 Renci SSHNet 库创建一个供我个人使用的 SSH 客户端,但我完全不确定我应该如何解释终端中执行的命令的输出。

例如,如果我键入“ls -l”、“cd/root”或“dir”等简单命令,输出字符串将按预期显示在我的 Windows 控制台窗口中。

但是当我试图说使用“nano”编辑文件或使用“top”查看 cpu/内存使用情况时,基本上任何应该显示静态文本的东西,我都会从 ssh 主机得到一堆 blob,比如这个。

←[?1049h←[1;24r←(B←[m←[4l←[?7h←[?12l←[?25h←[?1h←=←[?1h←=←[?1h←=←[39;49m←[39;49m←
(B←[m←[H←[2J←(B←[0;7m  GNU nano 2.2.6                File: test
←[23d^G←(B←[m Get Help  ←(B←[0;7m^O←(B←[m WriteOut  ←(B←[0;7m^R←(B←[m Read File
←(B←[0;7m^Y←(B←[m Prev Page ←(B←[0;7m^K←(B←[m Cut Text  ←(B←[0;7m^C←(B←[m Cur Po
←[24d←(B←[0;7m^X←(B←[m Exit←[14G←(B←[0;7m^J←(B←[m Justify   ←(B←[0;7m^W←(B←[m Wh
ere Is  ←(B←[0;7m^V←(B←[m Next Page ←(B←[0;7m^U←(B←[m UnCut Text←(B←[0;7m^T←(B←[
←[3d Spell

所以我想我的问题是我应该如何解释所有这些?我只需要有人为我指明正确的方向。

最佳答案

你需要写一个终端模拟器。欢迎来到奇怪的 Unix 终端。您可能想查看“man terminfo”、“man termcap”和“man ncurses”以获得一些介绍。

实际上,任何 Unix 机器上的终端窗口或控制台所做的,是模拟一个老式的串行终端,它本身是电传打字机模拟之上的一层功能。那么所有这些 ESC[?序列是对终端的命令,要求它做事。他们中的一些人会期望得到诸如窗口大小、大写锁定状态等信息的响应。terminfo 数据库记录了给定终端类型的所有转义序列是什么(你可能应该从名为 'xterm-color 的类型开始').

关于c# - 解释 SSH 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319505/

相关文章:

c# - 如何在 GTK TextView 中自动滚动到底部

c# - 混合起来,然后再次重新排序 .Net 2.0 中的数组

c# - 如何获取 Entity Framework 中的特定列

c# - ASP.NET Core 中的属性

linux - 如何创建递归嵌套的 zip 文件

c# - 使用 LINQ 语法旋转数组

c# - WPF MouseRightButtonUp 事件不会触发

.net - Azure key 保管库。怎么运行的?

windows - 为什么 GIT 在从 bash 命令提示符运行时不使用 core.editor 和 commit.template 配置值?

bash - 使用 bash 在一个大文件中获取一行