我正在尝试使用jsch作为后端实现在线终端UI。 我需要在UI中显示userinfo即[username @ Machine~] $信息。 由于输出流只是发送字节,因此很难将userinfo与实际命令输出区分开来。有没有办法区分相同的?
答案 0 :(得分:1)
一般来说,没有。
如果你有一个shell通道,你看到的只是用户远程shell的输出,包括提示和实际的命令输出。你可以尝试解析它。在简单的情况下,这将起作用,但通常不可能,因为每个命令都可以输出类似提示的字符串。
您应该知道用户名(它应该与您用于登录的用户名相同),服务器名称有点棘手。
值得探索的一个想法可能是设置一个由“正常”命令输出中不太可能出现的字符序列分隔的特殊提示 - 在shell中设置PROMPT
变量。
您可以通过不使用实际的shell
频道来绕过该问题,但是每个命令都使用单独的exec
频道 - 但是您必须自己解释cd
之类的命令。跟踪当前目录,并在每个exec通道中的实际命令之前添加cd
命令。您可能希望并行打开sftp通道以跟踪目录(以及列表文件等)。