前言

最近发现我自己运行在阿里云服务器上面的一个小服务,无法正常访问了。通过浏览器访问或者postman就是一直处于发送请求的状态,但是不会报超时也不会停止。所以,我就想把日志文件nohup.out拿下来查看一下,因为在服务器上面查看很不方便。但是,我由于对于Linux的了解还是不够,居然不知道怎么把文件下载到本地。我以前只用过scp向服务器上传文件,但是下载文件我是真的没有搞过。后来发现反过来用scp就行了,但是当局者迷,旁观者清,当时不知怎么的,就没反应过来!

需求

但是我是一定要看看这个日志的,所以我必须把它下载下来。我第一个想到的方案是在服务器上面安装ftp服务,这样我就可以远程管理服务器上的文件了。但是,我也没有玩过这个,所以需要很多的时间成本来做这件事。(因此我准备抽一个时间来学习一下这方面的知识。)
所以,最后我就利用自己的编程知识,自己写了一个服务端和客户端,然后使用scp把服务端传上去。在服务器启动服务端,再在本地启动客户端,将日志文件拿下来了。不得不说是一个很麻烦的方式,但是却是当时的最优解了,哈哈!

因为这样写的程序可能会有风险,但是我一直参与这个过程中。程序只会运行一次,然后就停止了,这样的话,也不会有什么风险了。反正,我这个小服务器也没啥价值,不过这种方式只是适合自己玩一玩!

代码

服务端

package file;import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;public class FileServer {public static void main(String[] args) {try (ServerSocket server = new ServerSocket(10009)) {try (Socket client = server.accept()) {client.shutdownInput();   // 关闭输入流OutputStream out = new BufferedOutputStream(client.getOutputStream());Path path = Paths.get("/home/Alfred/", "nohup.out");  // 获取文件byte[] data = Files.readAllBytes(path);              // 写入out.write(data);}} catch (IOException e) {e.printStackTrace();}System.out.println("Execute Successfully!");}}

客户端

package file;import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;public class FileClient {public static void main(String[] args) {try (Socket client = new Socket("host", 10009)) {client.shutdownOutput();  // 关闭输出流InputStream in = new BufferedInputStream(client.getInputStream());// 先读入内存,再一次性写入硬盘,减少硬盘IO次数ByteArrayOutputStream output = new ByteArrayOutputStream();int len = 0;byte[] data = new byte[1024];while ((len = in.read(data)) != -1) {output.write(data, 0, len);}// 使用工具类直接写入文件Path path = Paths.get("C:/Users/Alfred/Desktop/temp", "nohup.out");Files.write(path, output.toByteArray());} catch (IOException e) {e.printStackTrace();}}
}

执行

上传服务端代码到服务器

代码已经上传

编译执行
注意:编译执行服务端代码后,立刻执行客户端代码,因为这里没有设置超时时间,可能会遇到问题。

本地执行结果

结语

不过虽然我取得了日志,但是我并没有解决为什么无法访问的问题,因为那个服务是一个100多行的Java代码——一个简易HTTP图片服务器,使用Socket模拟Http服务器,只要访问就随机返回一张图片。我里面只是简单打印了一点信息,所以我最后只能关闭服务,再启动了。不过这里也算是运用专业知识解决了一点问题(下载文件,哈哈!),不过这种方式真的不好用。下一篇博客,我会继续这个话题,不过是学习使用专业软件完成这个事情的了。

(1)从服务器下载文件相关推荐

  1. python批量下载文件只有1kb_Python 实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件 by:授客 QQ:1033553122 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3. ...

  2. Python 实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/file_for_downl ...

  3. python批量下载网页文件夹_Python实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件 by:授客 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3.2 pscp 64位 下载地 ...

  4. CentOS6中连接ftp服务器下载文件时出现了java.net.SocketException: Connection reset

    问题描述:连接CentOS6中的ftp服务器下载文件时出现了java.net.SocketException: Connection reset 解决办法: 1.查看防火墙状态,发现防火墙已开启 se ...

  5. 如何登陆FTP服务器下载文件

    如何登陆FTP服务器下载文件 在网上我们经常可以看到很多如何搭建FTP服务器的经验,但是却缺少详细的如何登陆FTP服务器的经验,当然对于电脑熟练者来说这可能很简单,但是我想也有相当一部分人不知道如何从 ...

  6. ubuntu从本地上传文件到云服务器、从云服务器下载文件到本地的命令(亲测有效)

    1.ubuntu从本地上传文件到云服务器: sudo scp 本地文件路经 username@目标ip:目标路径 在本地打开终端,输入命令,如: scp ./localfile.txt usernam ...

  7. Java Web实现 使用浏览器从服务器下载文件

    Java Web实现 使用浏览器从服务器下载文件. 代码实现: package com.juneyaoair.util;import lombok.SneakyThrows;import javax. ...

  8. 使用JSP从服务器下载文件的示例

    在此示例中,我们将下载jsp文件.但是您可以下载任何文件.要从服务器下载文件,应指定名为APPLICATION / OCTET-STREAM的内容类型. index.jsp 该文件提供了下载jsp文件 ...

  9. 从FTP服务器下载文件部署更新linux服务器上的服务

    作为软件测试人员,经常要发布开发的集成包.本来嘛,更新个服务,没什么大不了.但是集成包打出来,要更新的服务有9个(分别部署在三台服务器上),并且以后还会增加.如果手动更新,每次更新时间都得20分钟以上 ...

  10. 使用scp上传文件到服务器或从服务器下载文件(支持跨越跳板机)

    转载 原文链接 原贴写的很好,我转载懒得排版了 scp是什么? 使用man scp可以看到scp的解释『scp - secure copy (remote file copy program)』,sc ...

最新文章

  1. linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件
  2. graythresh matlab,Matlab-图形算法和图像处理指南
  3. python做直方图-python OpenCV学习笔记实现二维直方图
  4. element-ui中对话框dialog不显示,仅背景变灰
  5. PADS 9.5安装教程附安装包资源
  6. Genymotion设置代理至BurpSuite和Charles
  7. FortiGate 的相关知识
  8. python的编程模式有哪两种_python程序的两种运行方式是什么
  9. 【C语言】输入5个整数并按输入顺序逆序输出
  10. 资源放送丨《数据模型重构案例分享》PPT视频
  11. 深入比特币原理(五)——高级交易与脚本
  12. SQL:查询、替换字符串中的回车、换行、回车换行
  13. Android大图片裁剪解决方案
  14. 解决Spring Boot 拦截器注入service为空的问题
  15. Java架构师和大数据架构师的区别是什么?哪个更有发展前景?
  16. 广义线性模型解读必看文章
  17. USACO 19 FEB Mowing Mischief P 题解
  18. TypeError:Cannot read property 'bind' of underfined(React)
  19. 如何搜索别人百度云网盘分享的资源
  20. QT 自定义加载等待(Loading)提示框

热门文章

  1. java在Excel中添加png图片作为页眉(已解决)
  2. MyBatis的update返回值改为受影响的行数
  3. python之路 JavaScript基础
  4. Redis数据持久化机制AOF原理分析二
  5. mac安装MySQL-very easy
  6. 520 钻石争霸赛 2023
  7. 计算机结构体系ppt,计算机体系结构-浙江大学课件.ppt
  8. IT职业在线教育平台极客学院获2200万美元B轮融资
  9. 西门子SIMATIC S7-200 SMART木工机械的应用
  10. 易优CMS 聚合关键词seo插件(上权重神器)