前言:
眼前小伙伴们对“js读取远程文件内容”大概比较关心,小伙伴们都需要学习一些“js读取远程文件内容”的相关资讯。那么小编在网上搜集了一些关于“js读取远程文件内容””的相关文章,希望大家能喜欢,我们一起来了解一下吧!概述
JSch特别方便开发人员使用JAVA操作远程Linux主机,如重启、执行脚本、执行命令、并能够获取结果。JSch是一个SSH2的纯Java实现。JSch允许您连接到sshd服务器并使用端口转发、X11转发、文件传输等,您可以将其功能集成到自己的Java程序中。JSch使用BSD开源协议,该协议是一个给予使用者很大自由的协议,基本上等同于为所欲为:可以自由的使用、修改源代码、也可以将修改后的代码作为开源或者专有软件再发布。
pom文件
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version></dependency>使用方法
只需实例化一个Session,就可以为所欲为的操作Linux。
实例化Session代码
public static Session getSession(HostParams hostParams) throws JSchException { JSch jSch = new JSch(); if (Files.exists(Paths.get(hostParams.getIdentity()))) { jSch.addIdentity(hostParams.getIdentity(), hostParams.getPassphrase()); } Session session = jSch.getSession(hostParams.getUsr(), hostParams.getPwd(), hostParams.getSshPort()); session.setPassword(hostParams.getPwd()); Properties properties = new Properties(); properties.put("StrictHostKeyChecking", "no"); session.setConfig(properties); return session;}
操作远程Linux主机并获取返回结果
public static List<String> rmtExec(Session session, String cmd) throws JSchException { List<String> resLines = new ArrayList<>(); ChannelExec channel = null; try { channel = (ChannelExec) session.openChannel("exec"); channel.setCommand(cmd); InputStream inputStream = channel.getInputStream(); channel.connect(50_000); try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String inputLine; while ((inputLine = bufferedReader.readLine()) != null) { System.out.println(inputLine); resLines.add(inputLine); } } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception ex) { ex.printStackTrace(); } } } } catch (IOException ex) { ex.printStackTrace(); } finally { if (channel != null) { try { channel.disconnect(); } catch (Exception ex) { ex.printStackTrace(); } } } return resLines; }案例演示
远程操作Linux主机,执行如下命令,获取结果:
ls /opt
我们先看下远程Linux主机/opt下有什么内容:
通过JSch操作的结果:
总结
墙裂推荐JSch,你终会用到,trust me!!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js读取远程文件内容