Java JSch SCP文件传输使用;执行官;频道
我对SCP协议和JSch非常陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露关于他们设备的任何信息,除了文件位置和可以使用SCP访问它的根帐户 以下是我尝试的步骤Java JSch SCP文件传输使用;执行官;频道,java,android,scp,jsch,Java,Android,Scp,Jsch,我对SCP协议和JSch非常陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露关于他们设备的任何信息,除了文件位置和可以使用SCP访问它的根帐户 以下是我尝试的步骤 确认使用JSch,我的Android客户端可以与服务器建立连接。[完整] 确认使用JSch和ChannelExec对象,我可以发送ls命令并读取其输出。[完整] 确认使用JSch和ChannelSFTP对象,我可以从设备传输文件。[失败] (3)失败的原因似乎是设备(服务器)未配置为SFTP。mak
ChannelExec
对象,我可以发送ls
命令并读取其输出。[完整]ChannelSFTP
对象,我可以从设备传输文件。[失败]scproot@192.168.5.1/usr/WS026.jpeg[targetPath]
他们说上面的命令将把第一个参数复制到客户端的目标路径。因此,除了使用SFTP,我如何在JSch通道“exec”中实现这一点?如果设备仅支持SCP,请不要尝试使用SFTP,而是使用SCP 有一个使用JSch实现SCP下载的官方示例:
不要被示例代码中调用的
scp
弄糊涂。这就是SCP协议的工作原理。本地(OpenSSH)scp
在远程服务器上执行scp
(使用特定的非公共参数,在本例中为-f
),然后两个实例相互对话。该示例实现了本地scp
。用于远程scp
的参数不是用于本地scp
的参数
另请参见。我浏览了该教程,并实际尝试了它,但它甚至没有循环。如何将commad设置为上述命令的等效值?它是什么意思“它甚至没有循环”?你提供了什么信息?您在
文件中使用了什么?该示例完全等同于您问题中的命令(即,scp
命令在内部执行的操作)。确定。让我直说吧。我使用的命令是“scp”root@192.168.5.1:/usr/WS001.jpeg”。它在第一个checkAck函数中得到-1,最终完成了任务。I'v将lfile设置为“getCacheDir+”WS001.jpeg“。我做错了什么?但这不是这个例子所做的。”。该示例采用了自己的第一个局部参数,其形式为user@host:rfile
,解析该文件,并调用远程scp-f rfile
。按照示例所示去做!将服务器的IP地址传递到远程scp
有什么意义?您已经连接到该IP!我在回答中添加了一些额外的信息。你给我的链接很有效。我在第一次访问scp时发现了这个链接,但我认为它没用,因为它似乎不起作用。经过两天的努力,我发现设备出现了故障。在大多数情况下,它一直无法创建本应创建的文件。我还发现了一个更简单的库,名为sshj。在接受您的回答时,我将添加一个关于它的附加答案。