我有一个程序在FTP和SFTP使用之间交替使用,以便在远程服务器上执行某些操作。
对于FTP部分,我使用的是Apache Commons FTP客户端,而对于SFTP,我使用的是JSch库。
除了服务器的响应之外,Apache公司可以并且将会完全打印出客户端发给服务器的所有命令。我想做一些与JSch类似的事情,以便让我在两种情况下都能记录我的应用程序。
我已经尝试成功实现了JSch库的Logger接口,但事实证明它无法向我提供发布到服务器的命令的详细表示,以及它的响应。
我曾尝试寻找类似的解决方案,但它们都围绕着类似于我正在寻找的SSH会话,而不是SFTP会话。
我尝试创建一个PrintStream,然后将其设置为频道的OutputStream,但这并没有奏效。
我也试过实现我在这里找到的一些建议,这些建议围绕着一个捕获频道的InputStream和OutputStreams的线程,但到目前为止我还没有能够正常工作。
我的问题是,是否有人设法做过类似的事情 - 例如打印底层的FTP对话框 - 使用JSch库?
答案 0 :(得分:1)
JSch库不记录SFTP请求和响应。
消费流也不会帮助你,因为:
ChannelSftp
使用流本身来读取数据包。如果你介入,你可能会破坏它的实施。另请注意,SFTP协议比FTP更低级别。没有"很好" FTP STOR
或RETR
等高级命令。您可能会看到每次转移的数千个不同请求。可能不是,你在追求什么。