使用 Java JSch 从 SFTP 服务器确定最新文件
有没有办法使用Java JSCH确定Unix SFTP服务器上最新文件的名称? 我想将最新文件从服务器复制到本地计算机.我已经有一个工作代码.但是我无法识别最新的文件.该文件夹包含以下格式的许多文件: Some Report dd/MM/yyyy hh:ss 我尝试了发布,但它没有拾取最新文件.另外,代码似乎从未停止执行. 任何帮助将不胜感激. 解决方案 i基于查找文件大小,最后修改了SFTP最古老的文件,并进行以下修改: 将nextTime和currentOldestTime的比较从if (nextTime currentOldestTime).现在可以拾取最新文件. 其他解决方案 以下是使用JSCH将最佳文件从远程服务器复制到本地的工作程序: package com.poc.client; import java.util.Vector; import c
28 2024-04-22
编程技术问答社区
使用 JSch 的多线程下载文件
我正在尝试使用多个线程从远程服务器下载多个文件.但是,当我使用多个线程时,我会得到 java.lang.ioexception:管道关闭. 当我完全使用一个线程时,相同的代码正常工作. 是否不可能使用JSCH同时从同一远程服务器下载多个文件? sftptest.java public class SftpTest { private static List accessorList = new ArrayList(); private static List files = new ArrayList(); private static ExecutorService writerThreadPool = Executors.newFixedThreadPool(10); public static void main(String args[]) throws
28 2024-04-22
编程技术问答社区
JSch/SSHJ-点击按钮时连接到SSH服务器
我正在尝试通过按钮单击连接到SSH Unix服务器(在ActionPerformed()方法中编写的代码).我正在使用JSCH连接到SSH服务器.该代码是在Swingworker类中编写的,因为它是网络操作. private void testConnectionButtonActionPerformed(java.awt.event.ActionEvent evt) { SwingWorker sw = new SwingWorker(){ @Override protected Boolean doInBackground() throws Exception { JSch jsch = new JSch();
10 2024-04-05
编程技术问答社区
如何在ant buildfile中指定一个JAR的路径?
我正在执行大量的scp和sshexec以及来自ant构建脚本的其他远程命令.如果jsch.jar不在ANT lib目录中,则这些命令无效.为了使它起作用,我将罐子复制到ant lib目录中,但这不是一个好的解决方案,因为其他任何想要运行脚本的人都必须做同样的事情.要从团队中运行ANT目标,我们将不得不明确设置LIB文件的路径. 有没有一种方法可以指定蚂蚁构建XML本身中罐子的路径? 解决方案 感谢您的回答.我设法通过ClassLoader任务使IT工作.这就是我所做的.
14 2024-04-04
编程技术问答社区
用于Ant scp和sshexec任务的已知hosts
我的问题类似于这里问的问题: ant SCP任务失败 构建失败的com.jcraft.jsch.jschexception:拒绝主机:.... 我的问题是为什么在我的已知主机文件中找不到键? 无论我拥有哪种已知_host文件,主机密钥都会被拒绝.通过SSH连接非常好,并添加了相关条目,但是jsch也许无法读取OpenSSH生成的known_hosts文件? ANT文档提到,已知主机文件需要以SSH2格式而不是SSH1为SSH1.具有讽刺意味的是,来自OpenSSH的SSH2格式NOWN_HOST文件应该为 ~/.ssh/known_hosts2 ,但now​​nosthosts的默认值为~/.ssh/known_hosts. SSH2创建的已知主机文件位于~/.ssh2/knownhosts/中,因此可以安全地计算出预期格式.到目前为止,我一直无法获得Openssh来创建 known_hosts2 文件,而男人页面也不大.那么,文档实际上是什么意思是文件需要
8 2024-04-04
编程技术问答社区
通过java进行scp传输
通过Java编程语言执行SCP转移的最佳方法是什么?看来我可能可以通过JSSE,JSCH或有弹性城堡Java图书馆执行此操作.这些解决方案似乎都没有一个简单的答案. 解决方案 我最终使用 jsch - 这很简单,这似乎很简单,似乎扩大了扩展很好(我每隔几分钟抓到几千个文件). 其他解决方案 插头:SSHJ是唯一的理智选择!请参阅以下示例开始:其他解决方案 看一下这里 这是蚂蚁SCP任务的源代码. "执行"方法中的代码是螺母和螺栓的位置.这应该使您对所需的内容有一个清晰的了解.我相信它使用JSCH. 另外,您也可以直接从Java代码执行此蚂蚁任务.
6 2024-04-03
编程技术问答社区
用JSch连接SFTP时如何选择网络接口
我面临的问题是通过JSCH为远程SFTP服务器创建会话: 我用来通过Shell连接SFTP服务器的命令是: sftp -o BindAddress=SOME_IP_ADDRRESS myUserName@HOST_IP_ADDR 及其正常工作,但是当我与Java(JSCH)尝试时,我会得到一个超时的例外. Java代码是 /* KEY_FILE_NAME = is a file with rsa public key */ ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource(KEY_FILE_NAME).getFile()); JSch jsch = new JSch(); jsch.addIdentity(file.getAbsolutePath()); Properties hash = new Properties
12 2024-03-30
编程技术问答社区
在sudo登录后使用Java JSch程序执行多个bash命令
我试图通过使用JSCH连接到SSH的Java程序来执行多个Bash命令.但是sudo登录后,我无法执行任何bash命令.据我阅读的内容,sudo登录后,我们进入了一个子壳.我想使用一个频道.我对下一步该怎么做无知. ChannelExec chnlex=(ChannelExec) session.openChannel("exec"); InputStream in = chnlex.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(in)); chnlex.setCommand("sudo -u appbatch -H /opt/apptalk/local/bin/start_shell.sh -c
8 2024-03-28
编程技术问答社区
如何使用Java自动进行挑战-回应认证
我有带启用SSH的Linux手机.我需要通过挑战响应身份验证来连接它.因此,例如使用Putty: 手动如何手动查看此过程 使用IP和端口连接到电话. 控制台显示"登录为:" - >输入用户名. 控制台显示: 登录为:craft 挑战:547-04302 产品ID:7000315107 响应: 我需要复制挑战,使用挑战从其他服务器中获取响应,然后在控制台中输入响应. 我如何使用java和一些ssh的库来完成此操作(我尝试了JSCH,但是没有挑战反应的方法)?我只需要将挑战写入字符串,然后使用字符串响应输入响应. 感谢您的帮助. 解决方案 挑战反应身份验证也被称为键盘相互作用身份验证. ,它得到了JSCH库的支持. 请参阅官方基本上,您需要实现(与)并使用 Session.setUserInfo . 要使用对单个挑战的程序化响应,只需从
10 2024-03-21
编程技术问答社区
Java中的多级SSH登录
我目前正在使用JSCH作为连接到远程服务器的库.在其中一种情况下,我应该能够通过Server1登录到Server2.也就是说,我应该首先登录到server1,然后登录到另一个服务器(server2)并执行我的命令.此外,有时我应该能够从server2连接到server3. 因此,基本上,我正在寻找一种使用多级SSH连接的方法,我不知道在Java中如何处理,因为我不能在会话的每个Exec中执行多个命令. 任何洞察力都将不胜感激. 谢谢 reza 解决方案 因此,您已经可以毫无问题地到server1 server1,并且您熟悉发送命令在该服务器上运行. 这只是通过服务器层的递归问题,例如俄罗斯娃娃.让我们假设您要在server2上运行的命令是ls(尽管实际命令不影响此示例).然后,如果您已经登录了Server1,则将此命令运行为 $ ssh server2 ls 对吗? ,就在那里,我们都有解决方案的两个部分,因为您已经知道在登录主机时如何运行命令
10 2024-03-20
编程技术问答社区
SFTP Java-Pipe关闭 Jsch异常
我正在使用Java方法,将文件从一个位置复制到另一个远程位置.我的代码如下.我尝试使用 jsch 0.1.42&0.1.50&0.1.54 public static void processFiles(ArrayList FilesToBeCopied, String destFilePath) throws IOException { SftpClient client = new SftpClient("karthick"); String keyFilePath = "/ab/c/d/id_rsa"; String sftpUser = "karthickkb"; client.login(sftpUser, keyFilePath, null); client.changeWorkingDirectory(destFilePath); Configu
14 2024-03-20
编程技术问答社区
USERAUTH使用JGit安全访问git repo的失败,用于PullCommand()。
我正在尝试使用JGIT的API进行以下代码 进行GIT拉动 public class gitHubTest { JSch jsch = new JSch(); // Defining the private key file location explicitly String userHome = System.getProperty("user.home"); String privateKey = userHome + "/.ssh/id_rsa"; String knownHostsFile = userHome + "/.ssh/known_hosts"; Repository localRepo = new FileRepository("/LocalPath/.git"); public gitHubTest() throws Exception { jsch.setConfig("Strict
18 2024-03-19
编程技术问答社区
在Java中使用JSch exec从ArrayList中执行一个命令列表
使用JSCH" Exec"频道,我连接到远程服务器并执行命令.我做不到的是执行存储在ArrayList中的命令列表.我用于循环将每个元素传递到.setCommand(elem);,但是出于某种奇怪的原因,只有最后一个命令被执行. ArrayList lists = new ArrayList(); lists.add("hostname"); lists.add("df -l"); Channel channel=session.openChannel("exec"); for (String elem : lists){ ((ChannelExec)channel).setCommand(elem); } 完整代码 public class Exec{ public static void main(String[] arg){ try { JSch jsch=new JSch(); Str
10 2024-03-04
编程技术问答社区
Camel SFTP组件-SSH私钥URI与privateKeyFile一起使用,与privateKey不起作用
我有一条看起来像下一条的骆驼路线: from("direct:download") .pollEnrich() .simple("sftp://my.host:22/folder/?username=foo&fileName=${header.CamelFileName} &privateKeyFile=src/main/resources/privateSSHKey") .to("file://state/downloaded"); 文件src/main/resources/privatesshkey是RSA私钥.毫无问题地工作:JSCH(骆驼用于SFTP端点)设法连接并下载所需的文件. 开发时上一个设置还可以,因为我可以在本地使用密钥的文件. 但是,对于产品,我们还有其他系统,在这些系统中,我将能够获得一个包含密钥内容的字节数组.为此,我正在改变看起来这样的路线: from("direct:down
34 2024-02-28
编程技术问答社区
蚂蚁scp任务。JSchException: invalid privatekey
我使用SSH-Keygen创建了一个新的密钥对,并在服务器上添加了公共密钥.使用sftp -i private_key_file user@server我可以成功打开与服务器的连接并放置文件. 但是,当我尝试使用ANT SCP任务时,我会收到: com.jcraft.jsch.JSchException: invalid privatekey: [B@5e9d5728 ANT脚本的相关部分: 有人有主意吗? 解决方案 看起来像最近的OpenSSH版本(我的F29中安装了
14 2024-02-27
编程技术问答社区
Ant可选任务SSHExec和SCP的问题。Classpath问题?
我正在修改一个从命令行进行修改的ANT脚本(当前正在使用MyeClipse中).我正在这样做,以便任何人都可以查看项目并无需毛发.我遇到的问题是myeclipse包括幕后的依赖项.它通过查看工作区的蚂蚁配置并根据"首选项"对话框中选定的库来编译类路径来做到这一点.长话短说,我需要采取这些依赖项并使脚本足够聪明,以便在没有myeclipse的帮助下独自包含它们. 让我头痛的任务是SSHEXEC和SCP任务.它们是可选的蚂蚁任务,需要JSCH版本才能运行.我从Myeclipse的Ant Class Path中删除了JSCH,并将其添加到项目本身(LIB/DEV)中的LIB文件夹中. MyeClipse立即抱怨SSHEXEC类找不到依赖类,com.jcraft.jsch.UserInfo是JSCH-0.1.44.jar的一部分. 我看不到从构建脚本中的ant设置ant的班级路径的方法.我有以下代码,该代码在脚本中添加了path元素,但是除非与任务或其他元素明确关联,否则ANT不会使
16 2024-02-27
编程技术问答社区
ANT无法找到特定的库
我正在尝试使用 sshexec ant Task a href =" http://www.jcraft.com/jsch/" rel =" nofollow"> jsch Library . 当我尝试使用SSHEXEC任务时,我会得到以下内容: BUILD FAILED /home/www/test/build/build.xml:140: Problem: failed to create task or type sshexec Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec was not found. This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in -/usr/share/ant/l
10 2024-02-27
编程技术问答社区
使用Ant/JSch连接到SFTP服务器时,"收到的信息太长"。
我想将文件从本地Unix计算机上传到支持SFTP的远程服务器.我尝试使用将SCP任务与sftp属性设置为true的ANT脚本实现,但是它不起作用,因为它总是会出错: com.jcraft.jsch.jschexception:4:收到的消息太长:1416128878. 如果您可以使用应该解决问题的shell脚本来帮助我实现这一目标.我还必须在本地计算机上安装sftp或其他内容以使脚本有效吗? 这里的任何帮助将不胜感激. 欢呼, 阿什利 解决方案 您的蚂蚁脚本有效.这是不起作用的服务器. 服务器打印一些消息,因此违反了SFTP协议.如果您尝试过任何独立的SFTP客户端,您将看到您无法连接. 消息开始Thin(0x 54 68 69 6e = 1416128878). 另请参见 >
8 2024-02-26
编程技术问答社区
com.jcraft.jsch.JschException: 认证取消
我正在尝试编写蚂蚁脚本以通过端口隧道检索URL. 当我使用密码(名称xxxx'd以获得隐私)时,它可以很好地工作: ,但是当我使用钥匙文件时,它不起作用:
18 2024-02-26
编程技术问答社区
如何以无配置的方式将可选任务sshexec载入Ant中?
我正在使用SSHEXEC,该SSHEXEC取决于JSCH-0.1.48.Jar.我不能只将其放入ANT/LIB/LIB目录中,因为其他希望使用相同构建脚本的用户必须在其机器上进行配置,然后才能做到这一点. 我想做的是能够作为项目的一部分参考JSCH-0.1.48.JAR.目前,我坐在项目/libs目录中,我正在尝试以下操作:
12 2024-02-26
编程技术问答社区