2013-04-08 75 views
1

我试图用jsch作为后端实现在线终端UI。 我需要在UI中显示userinfo,即[username @ Machine〜] $信息。 由于输出流只是发送字节,所以很难区分用户信息和实际命令输出。有什么办法可以区分吗?从JSCH流中提取userInfo

回答

1

一般来说,没有。

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

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

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

你可以不使用其实是一个shell通道,但每个命令个别exec通道绕过这个问题 - 但是你必须解释命令,如cd自己和跟踪当前目录下,并添加cd命令在每个可执行通道中的实际命令之前。您可能想要并行打开sftp通道以跟踪目录(以及列表文件等)。