当前位置: 首页 > 知识库问答 >
问题:

JSch SFTP详细日志记录

宗政文彬
2023-03-14

我有一个程序,在FTP和SFTP之间交替使用,以便在远程服务器上执行一些操作。

对于FTP部分,我使用Apache Commons FTP客户端,而对于SFTP,我使用JSch库。

ApacheCommons可以也将完全详细地打印出客户机向服务器发出的所有命令,以及服务器的响应。

为了使我的应用程序在这两种情况下的日志记录方式保持一致,我想对JSch做一些类似的事情。

我已经尝试成功地实现了JSch库的Logger接口,但结果证明它不能为我提供向服务器发出的命令的详细表示以及它的响应。

我尝试过寻找类似的解决方案,但它们都围绕着做一些类似于我所寻找的SSH会话而不是SFTP会话的事情。

我曾尝试创建一个PrintStream,然后将其设置为通道的OutputStream,但没有成功。

我还尝试实现了我在这里发现的一些建议,这些建议围绕着拥有一个线程来捕获通道的InputStream和OutputStreams,但到目前为止,我还没有能够让一些东西正常工作。

我的问题是,有没有人在使用JSch库时成功地做了这样的事情——例如打印出底层FTP对话框?

共有1个答案

公良向阳
2023-03-14

JSch库不记录SFTP请求和响应。

使用流也不会对您有所帮助,因为:

  • ChannelSftp使用流本身来读取数据包。如果你干预,你可能会破坏它的实现
  • SFTP(与FTP相反)是一种二进制协议。因此,即使您设法读取流,也会得到二进制数据,需要对其进行解码。本质上,实现SFTP协议的日志记录(与FTP相比)相当困难,因为您基本上需要显式地记录每种类型的请求/响应消息的每个字段

还要注意,SFTP协议比FTP协议更低级。没有像FTPSTORRETR这样的高级命令。对于每次传输,您可能会看到数千个不同的请求。也许不是,你在追求什么。

 类似资料:
  • 问题内容: 如果我从命令行启用并且脚本中包含以下内容,则想添加调试打印语句测试。 问题答案: 您需要将Argparse教程的智慧与Python的Logging HOWTO 结合起来。这是一个例子 运行帮助: 在详细模式下运行: 静默运行:

  • 我从syslog得到了关于mysql的日志,但是它们太简短了,因为它们没有告诉我(或者至少我认为)是什么导致mysql以状态1终止。有人能帮我拿更详细的日志吗? 最好,袁 5月25日18:32:21巴纳德内核:[1587749.902491]type=1400审核(1337985141.215:263):apparmor=“STATUS”operation=“profile_replace”nam

  • 我刚拿到一台新的索尼Xperia XA,在这台设备上发现了一个奇怪的问题。它没有显示任何详细的调试日志。我尝试了Android Studio中的每个设置,使用adb logcat检查Android Studio是否只是过滤它们。我甚至使用了不同的电缆。我没主意了,请帮帮我。

  • null 例如,对于单个多行日志,如下所示: 这是一个详细的语句,它将非常详细地说明发生了什么,发生在哪里,以及应用程序在响应异常事件时正在做什么。 我能找到的最接近的是JBoss日志API和在ActiveMQ Artemis源代码中找到的一些代码示例。可以在单个文件中定义消息格式声明,如下所示: 有人对这个问题有什么建议吗--不管是另一个API、代码模式还是一个漂亮的技巧?

  • 本文向大家介绍Tomcat 日志切割(logrotate)详细介绍,包括了Tomcat 日志切割(logrotate)详细介绍的使用技巧和注意事项,需要的朋友参考一下 Tomcat 日志切割 logrotate是个强大的系统软件,它对日志文件有着一套完整的操作模式,譬如:转储、邮件和压缩等,并且默认logrotate加到cron(/etc/cron.daily/logrotate)作为每日任务执行

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?