我创建了一个内部库,使用apache-commons和JSCH库创建通用FTP或SFTP
当我将文本文件从windows上传到unix时我可以切换到ASCII模式,如果我使用的是FTP,但这不适用于SFTP协议,所以我制作了一个自定义输入流阅读器来处理CRLF vs CR窗口/ unix终结线问题。
现在我担心是否有一种方法可以知道SFTP主机是Windows还是Unix,在这种情况下我用我的自定义Windows2UnixInputStreamReader封装了FileInputStreamReader。
你知道一个知道宿主的SO的方法吗?优选地,如果解决方案是通过FTP / SFTP连接
答案 0 :(得分:2)
有许多方法可以完成您的任务,但是我不确定您的图书馆是否支持它们:
答案 1 :(得分:0)
没有100%的解决方案,因为FTP协议不依赖于平台。但是,您可以使用启发式方法。 FTP允许获取目录列表,因此您可以尝试获取众所周知的根目录下的文件列表,并尝试根据结果得出结论。
然而,此方法不是100%,因为FTP服务器的根目录不一定是文件系统的根目录,因此您无法在此根目录下找到任何众所周知的文件或目录。
发现目标主机的操作系统可能更好的方法是使用nmap之类的工具。