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

使用“exec”通道进行JSch SCP文件传输

储俊英
2023-03-14

我对SCP协议和JSch非常陌生。我必须通过SCP从远程设备传输文件到Android。服务器端开发人员拒绝透露任何关于他们设备的信息,除了文件位置和可以用SCP访问它的根帐户。

以下是我尝试的步骤。

>

确认使用JSch和ChannelExec对象,我可以发送ls命令并读取其输出。[完整]

确认使用JSch和ChannelSFTP对象,我可以从设备传输文件。[失败]

(3)失败的原因似乎是设备(服务器)没有为SFTP配置。制造者一直在说,像下面这样的命令在ssh上工作:

scp root@192.168.5.1/usr/WS026.jpeg [targetPath]

他们说上面的命令将第一个参数复制到客户端的目标路径。所以,替代使用SFTP,我如何在JSch通道执行实现?

共有1个答案

祁均
2023-03-14

如果设备仅支持SCP,不要尝试使用SFTP,请使用SCP。

有一个使用JSch实现SCP下载的官方示例:
http://www.jcraft.com/jsch/examples/ScpFrom.java.html

不要被示例代码中调用的scp搞糊涂。这就是SCP协议的工作原理。本地(OpenSSH)scp在远程服务器上执行scp(使用特定的非公开参数,在本例中是-f),然后两个实例相互对话。该示例实现了本地scp。远程scp使用的参数不是本地scp使用的参数。

另请参见JSch库中SCP协议实现的说明。

 类似资料:
  • 问题内容: 我对SCP协议和JSch很陌生。我必须通过SCP将文件从远程设备传输到Android。服务器端开发人员拒绝透露有关设备的任何信息,除了文件位置和可用于通过SCP访问设备的根帐户。 这是我尝试的步骤。 确认使用JSch,我的Android客户端可以与服务器建立连接。[完成] 确认使用JSch和对象,我可以发送命令并读取其输出。[完成] 确认使用JSch和对象可以从设备传输文件。[失败]

  • 问题内容: 此代码将执行一个外部exe应用程序。 如果我想执行外部Java文件怎么办?可能吗?例如以下命令: 该代码在java和cmd提示符下不起作用。如何解决呢? 问题答案: 首先,您的命令行看起来不正确。执行命令与批处理文件不同,它不会执行一系列命令,而只会执行一个命令。 从外观上看,您正在尝试更改要执行的命令的工作目录。一个更简单的解决方案是使用,它将允许您指定给定命令的起始目录… 例如…

  • 14.2.1 概念 在第一个例子中,协程是独立执行的,他们之间没有通信。他们必须通信才会变得更有用:彼此之间发送和接收信息并且协调/同步他们的工作。协程可以使用共享变量来通信,但是很不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难。 而 Go 有一种特殊的类型,通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种

  • 本文向大家介绍通过Ajax方式上传文件使用FormData进行Ajax请求,包括了通过Ajax方式上传文件使用FormData进行Ajax请求的使用技巧和注意事项,需要的朋友参考一下 通过传统的form表单提交的方式上传文件: Html代码  不过传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用Ajax的方式进行请求的: Js代码  如上,通过$(

  • 问题内容: 这是我使用拖放功能动态生成的HTML。 这是我的JavaScript代码: 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您使用 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通

  • 问题内容: 这是我使用拖放功能动态生成的html。 这是我的js代码… 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您提交常规表格一样 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通过P