在访问linux时,首先需要使用工具类jar包:ganymed-ssh2

登录远程服务器:

public boolean login(){//创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法//new Connection(ip, port)创建对象Connection conn = new Connection(ip);        try {//连接远程服务器conn.connect();//使用用户名和密码登录return conn.authenticateWithPassword(usr, psword);} catch (IOException e) {   System.err.printf("用户%s密码%s登录服务器%s失败!", usr, psword, ip);e.printStackTrace();}return false;
}
/*** 上传本地文件到服务器目录下* @param conn Connection对象* @param fileName 本地文件* @param remotePath 服务器目录*/
public void putFile(Connection conn, String fileName, String remotePath){SCPClient sc = new SCPClient(conn);try {//将本地文件放到远程服务器指定目录下,默认的文件模式为 0600,即 rw,//如要更改模式,可调用方法 put(fileName, remotePath, mode),模式须是4位数字且以0开头sc.put(fileName, remotePath);} catch (IOException e) {e.printStackTrace();}
}
/*** 下载服务器文件到本地目录* @param fileName 服务器文件* @param localPath 本地目录*/
public void copyFile(Connection conn, String fileName,String localPath){SCPClient sc = new SCPClient(conn);try {sc.get(fileName, localPath);} catch (IOException e) {e.printStackTrace();}
}
/*** 在远程LINUX服务器上,在指定目录下,获取文件各个属性* @param[in] conn Conncetion对象* @param[in] remotePath 远程主机的指定目录*/
public void getFileProperties(Conncetion conn, String remotePath){try {SFTPv3Client sft = new SFTPv3Client(conn);Vector<?> v = sft.ls(remotePath);for(int i=0;i<v.size();i++){SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();s = (SFTPv3DirectoryEntry) v.get(i);//文件名String filename = s.filename;//文件的大小Long fileSize = s.attributes.size;}sft.close();} catch (Exception e1) {e1.printStackTrace();}
}
/*** 在远程LINUX服务器上,在指定目录下,删除指定文件* @param[in] fileName 文件名* @param[in] remotePath 远程主机的指定目录* @return*/
public void delFile(String remotePath, String fileName){try {SFTPv3Client sft = new SFTPv3Client(conn);//获取远程目录下文件列表Vector<?> v = sft.ls(remotePath);for(int i=0;i<v.size();i++){SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();s = (SFTPv3DirectoryEntry) v.get(i);//判断列表中文件是否与指定文件名相同if(s.filename.equals(fileName)){//rm()方法中,须是文件绝对路径+文件名称sft.rm(remotePath + s.filename);}sft.close();} catch (Exception e1) {e1.printStackTrace();}
}
/*** 执行脚本* @param conn Connection对象* @param cmds 要在linux上执行的指令*/
public int exec(Connection conn, String cmds){InputStream stdOut = null;InputStream stdErr = null;int ret = -1;try {//在connection中打开一个新的会话Session session = conn.openSession();//在远程服务器上执行linux指令session.execCommand(cmds);//指令执行结束后的输出stdOut = new StreamGobbler(session.getStdout());//指令执行结束后的错误stdErr = new StreamGobbler(session.getStderr());//等待指令执行结束session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);//取得指令执行结束后的状态ret = session.getExitStatus(); conn.close();}catch(Exception e){e.printStackTrace();}return ret;
}

自己写的代码
controller:

package com.sun.redis.controller;import java.io.IOException;
import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import com.sun.redis.util.FileUtil;
import com.sun.redis.util.LinuxLogin;@RestController
@RequestMapping("/fileDownCtl")
public class FileDownController {@Autowiredprivate FileUtil fileUtil;@Autowiredprivate LinuxLogin linuxLogin;@RequestMapping(value="/getFile",method=RequestMethod.GET)public void getFile(HttpServletResponse response){String path = "D:/Games/WarCraft/BeeWind软件站说明.txt";fileUtil.getListFileList(path, response);}@RequestMapping(value="/getLinuxFile",method=RequestMethod.GET)public void getLinuxFile(HttpServletResponse response) throws IOException{String fileName = "linux.txt";String path = "/home/hadoop/text/";linuxLogin.login();response.reset();response.setContentType("bin");response.setContentType("octets/stream");response.addHeader("Content-Type", "text/html; charset=utf-8");response.addHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("UTF-8"),"ISO8859-1"));linuxLogin.copyFile(linuxLogin.conn, path+fileName,response.getOutputStream());}}

工具类:

package com.sun.redis.util;import java.io.IOException;
import java.util.Vector;import javax.servlet.ServletOutputStream;import org.springframework.stereotype.Component;import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SFTPv3Client;
import ch.ethz.ssh2.SFTPv3DirectoryEntry;@Component
public class LinuxLogin {public static Connection conn = null;public  boolean login(){//创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法//new Connection(ip, port)创建对象conn = new Connection("192.168.159.128");        try {//连接远程服务器conn.connect();//使用用户名和密码登录return conn.authenticateWithPassword("hadoop", "hadoop");} catch (IOException e) {   System.err.printf("用户%s密码%s登录服务器%s失败!", "hadoop", "hadoop", "192.168.159.128");e.printStackTrace();}return false;}/*** 复制到JAVA所在服务器* @param conn* @param fileName* @param localPath*/public void copyFile(Connection conn, String fileName,String localPath){SCPClient sc = new SCPClient(conn);try {sc.get(fileName, localPath);} catch (IOException e) {e.printStackTrace();}}/*** 流式输出,用于浏览器下载* @param conn* @param fileName* @param outputStream*/public void copyFile(Connection conn, String fileName,ServletOutputStream outputStream){SCPClient sc = new SCPClient(conn);try {sc.get(fileName, outputStream);} catch (IOException e) {e.printStackTrace();}}/*** 在远程LINUX服务器上,在指定目录下,获取文件各个属性* @param[in] conn Conncetion对象* @param[in] remotePath 远程主机的指定目录*/public void getFileProperties(Connection conn, String remotePath){try {SFTPv3Client sft = new SFTPv3Client(conn);Vector<?> v = sft.ls(remotePath);for(int i=0;i<v.size();i++){SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();s = (SFTPv3DirectoryEntry) v.get(i);//文件名String filename = s.filename;//文件的大小Long fileSize = s.attributes.size;}sft.close();} catch (Exception e1) {e1.printStackTrace();}}public static void main(String args[]){LinuxLogin log = new LinuxLogin();System.out.println(log.login());}
}

仅供测试参考
转自:https://blog.csdn.net/QQ156881887/article/details/80209864
https://blog.csdn.net/wangmuming/article/details/20537289

JAVA远程读取服务器文件相关推荐

  1. 远程网络读取服务器文件是否存在,远程读取服务器文件是否存在

    远程读取服务器文件是否存在 内容精选 换一换 使用vi编辑器打开"/etc/default/grub",按如下要求修改参数:GRUB_CMDLINE_LINUX参数为console ...

  2. 读取别的服务器的文件,java读取服务器文件

    java读取服务器文件 [2021-02-01 10:47:24]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...

  3. 读服务器文件,读取服务器文件

    读取服务器文件 内容精选 换一换 客户端IP指的是访问者(用户设备)的IP地址.在Web应用开发中,通常需要获取客户端真实的IP地址.例如,投票系统为了防止刷票,需要通过获取客户端真实IP地址,限制每 ...

  4. java 获取远程服务器信息,java 远程获取服务器信息

    java 远程获取服务器信息 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  5. php 远程读取excel,PHP远程读取excel文件,如何读取?

    PHP远程读取excel文件,如何读取?PHP远程读取excel文件,怎么读取?? PHPExcel能远程读取excel文件吗?即读取其他服务器上的文件! 或者有没有其他好的方法能实现? 求方法... ...

  6. java获取ftp服务器文件,java获取ftp服务器文件

    java获取ftp服务器文件 [2021-02-05 07:26:23]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  7. java中读取properties文件内容五种方式

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  8. Java高效读取大文件(转)

    Java高效读取大文件 1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung(http://www.baeldung.com/) 上"Java--回归基础&quo ...

  9. mac 远程ftp服务器文件共享,mac 远程ftp服务器文件

    mac 远程ftp服务器文件 内容精选 换一换 云堡垒机配置了FTP/SFTP远程备份,报请检查服务器密码或网络连接情况错误,不能启动远程备份.选择备份具体某一天日志,提示备份正在执行,但远程服务器未 ...

  10. 查看服务器文件夹,远程查看服务器文件夹内的文件夹

    远程查看服务器文件夹内的文件夹 内容精选 换一换 请使用Mind Studio的安装用户进行升级操作,在升级前请先登录到后台服务器,切换到root用户在/usr/bin目录下执行./add_sudo. ...

最新文章

  1. c#中enum的用法小结
  2. linux man手册_读书笔记:Linux命令行与shell脚本编程大全 第一章~第五章
  3. html 窗口大小改变,html – 调整窗口大小时缩放整个身体
  4. SSM项目搭建之配置文件
  5. JAVA项目中classpath路径详解
  6. mysql连接服务密码_Hydra爆破常见服务密码
  7. 利用微服务构建现代应用(一)
  8. spring 启动完成后事件监听器处理
  9. 关于coredump文件生成与查看
  10. web css圆弧波浪线,web前端入门到实战:css实现波浪线及立方体
  11. Ajax Control Toolkit 控件介绍
  12. 亲测可用小米刷旧版开发版固件,刷入华硕、潘多拉固件
  13. 海康威视DS-7808HW-SNH固件升级包支持萤石云
  14. swf转html5批量转换,gif转swf转换工具,gif转swf格式转换器|批量转换
  15. Python爬虫实现无限刷不背单词app的酷币!很有意思!
  16. Ubuntu系统录屏webm格式mp4格式方法
  17. Maxcompute sql 练习题
  18. 顶尖C++程序员5分钟编程:逆战凉了,绝地求生黄了,唯有他站住脚!
  19. [GKCTF2020]CheckIN详解
  20. 第二周 Turtle库的使用

热门文章

  1. 安全提示:勒索病毒漏洞与CPU漏洞务必小心
  2. matlab如何求空间一点到直线距离,空间点到直线距离怎么求
  3. 阿里笔试——重庆阿里笔试题总结
  4. Java 使用dom4j进行XML解析
  5. SPSS-论文常用格式-三线表
  6. 静态路由的配置(以华为eNSP为例)
  7. uniapp开发小程序-获取支付宝小程序用户手机号功能
  8. ndows 内存诊断工具,win10内存诊断工具 win10自带内存诊断工具的使用
  9. android音乐播放器课程设计报告,音乐播放器课程设计报告
  10. 【Android容器组件—AdapterView】