JSch SFTP 可以支持 lrecl 或 blksize 等站点命令吗
Posted
技术标签:
【中文标题】JSch SFTP 可以支持 lrecl 或 blksize 等站点命令吗【英文标题】:Can JSch SFTP support site commands like lrecl or blksize 【发布时间】:2016-08-25 14:32:18 【问题描述】:当尝试从非大型机环境 SFTP 到大型机 (zos) 环境时,我试图弄清楚 Jsch sftp 框架是否可以支持诸如 lrecl
、blksize
、mgtmclass
等站点命令.
从我目前所遇到的情况来看,SFTP 规范似乎并不直接支持 site 命令,但我不能 100% 确定该信息是否准确。
在更多地研究 JSch 时,似乎有一个 ChannelExec
类似乎能够远程执行命令,但这是否能满足我的需求我还无法确定。
一位专门研究大型机的同行告诉我,ls /+/
可以使用一些大型机魔法,但是自从 Java 以来,如何将其潜在地应用于 JSch 中可用的任何类都超出了他的能力范围。不是他的专业领域。
我们将不胜感激。
【问题讨论】:
【参考方案1】:我将部分回答我自己没想到的问题。经过大量搜索,我发现了一段正是我需要的代码。
因此,这使用了我的同行谈论的大型机魔法,使用ls
命令传递站点命令。
我只是摘录一小段内容来说明我在这里想要完成的工作:
String lrecl = "/+/lrecl=128"
JSch jsch = new JSch();
Session session = jsch.getSession(user, hostName, port);
session.setPassword(password);
session.connect(120000);
ChannelSftp channel = (ChannelSftp)session.openChannel("sftp");
channel.connect(100000);
channel.ls(lrecl);
这只是代码的一部分,但确实显示了如何传递站点命令。我还没有确认是否所有站点命令都可以通过这种方式发送。
希望这可以帮助或节省一些时间。
对这种方法有任何反馈或想法,请告诉我。
【讨论】:
我能够发送文件。sshService.getChannelSftp().ls("/+/mode=text"); sshService.getChannelSftp().ls("/+/lrecl=80"); sshService.getChannelSftp().ls("/+/recfm=FB"); sshService.getChannelSftp().put("src/path","dest/path", ChannelSftp.OVERWRITE)
你能告诉scala相当于添加这些命令吗?我尝试使用这些命令,但我得到 File not found, not a valid file 错误...请帮助以上是关于JSch SFTP 可以支持 lrecl 或 blksize 等站点命令吗的主要内容,如果未能解决你的问题,请参考以下文章