1

我正在尝试以 jsch 作为后端来实现在线终端 UI。我需要在 UI 中显示用户信息,即 [username@Machine ~]$ 信息。由于输出流只是简单地发送字节,因此很难区分 userinfo 和真正的命令输出。有什么方法可以区分吗?

4

1 回答 1

1

一般来说,没有。

如果你有一个 shell 通道,你看到的只是用户远程 shell 的输出,包括提示和实际的命令输出。您可以尝试解析它。在简单的情况下这会起作用,但一般来说这是不可能的,因为每个命令都可以输出类似提示的字符串。

您应该知道用户名(它应该与您用于登录的用户名相同),服务器名称有点棘手。

一个值得探索的想法可能是设置一个由字符序列分隔的特殊提示,这不太可能出现在“正常”命令输出中——PROMPT在你的 shell 中设置变量。

shell您可以通过不使用实际的通道,而是为每个命令使用单独的通道来规避该问题exec- 但是您必须像cd自己一样解释命令并跟踪当前目录,并cd在每个 exec 中的实际命令之前添加一个命令渠道。您可能希望同时打开一个 sftp 通道以跟踪目录(和列表文件等)。

于 2013-05-11T23:32:45.980 回答