IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 教你用页面操作liunx命令 -> 正文阅读

[Java知识库]教你用页面操作liunx命令

简介

前言: liunx命令是我们每一个学编程的小伙伴都需要掌握的一个课程,对于不会liunx命令的小伙伴来说是一个很头疼的一件事,所以我们可以通过java连接centos服务器进行liunx命令的操作,做一些可视化的界面帮助不会liunx命令的小伙伴解决这些问题,或者我们也可以通过可视化页面减少我们的操作。

java连接服务器

Maven

<dependency>
    <groupId>ch.ethz.ganymed</groupId>
    <artifactId>ganymed-ssh2</artifactId>
    <version>262</version>
</dependency>

java代码

public class LiunxUtil {

    public static String execute(String ip,String username,String password, String cmd) {

        try {
            // 创建连接
            Connection conn = new Connection(ip, 22);
            // 启动连接
            conn.connect();
            // 验证用户密码
            conn.authenticateWithPassword(username, password);
            Session session = conn.openSession();
            //执行命令
            session.execCommand(cmd);
            session = conn.openSession();
            //执行命令
            session.execCommand(cmd);
            InputStream stdout = new StreamGobbler(session.getStdout());
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
            StringBuffer buffer = new StringBuffer();
            String line;

            while ((line = br.readLine()) != null) {
                buffer.append(line + "\n");
            }

            String result = buffer.toString();
            System.out.println(result);

            session.close();
            conn.close();
            //如果没有异常,返回结果为命令执行结果,如果有异常,返回null
            return result;

        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

}

执行代码

public static void main(String[] args) {

        String execute = LiunxUtil.execute(host,userName,password,"ls");
        System.out.println(execute);

    }

执行结果
在这里插入图片描述

centos服务器的文件上传和下载

工具包

public class FtpUtil {
    private static final Logger loggerMonitor = LoggerFactory.getLogger("monitor");

    /**
     * FTPClient对象
     **/
    private static ChannelSftp ftpClient = null;
    /**
     *
     */
    private static Session sshSession = null;

    /**
     * 连接服务器
     *
     * @param host
     * @param port
     * @param userName
     * @param password
     * @return
     * @throws Exception
     */
    public static ChannelSftp getConnect(String host, String port, String userName, String password)
            throws Exception {
        try {
            JSch jsch = new JSch();
            // 获取sshSession
            sshSession = jsch.getSession(userName, host, Integer.parseInt(port));
            // 添加s密码
            sshSession.setPassword(password);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            // 开启sshSession链接
            sshSession.connect();
            // 获取sftp通道
            ftpClient = (ChannelSftp) sshSession.openChannel("sftp");
            // 开启
            ftpClient.connect();
            loggerMonitor.debug("success ..........");
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("连接sftp服务器异常。。。。。。。。");
        }
        return ftpClient;
    }

    /**
     * 下载文件
     *
     * @param ftp_path    服务器文件路径
     * @param save_path   下载保存路径
     * @param oldFileName 服务器上文件名
     * @param newFileName 保存后新文件名
     * @throws Exception
     */
    public static void download(String ftp_path, String save_path, String oldFileName, String newFileName)
            throws Exception {
        FileOutputStream fos = null;
        try {
            ftpClient.cd(ftp_path);
            File file = new File(save_path);
            if (!file.exists()) {
                file.mkdirs();
            }
            String saveFile = save_path + newFileName;
            File file1 = new File(saveFile);
            fos = new FileOutputStream(file1);
            ftpClient.get(oldFileName, fos);
        } catch (Exception e) {
            loggerMonitor.error("下载文件异常............", e.getMessage());
            throw new Exception("download file error............");
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new Exception("close stream error..........");
                }
            }
        }
    }

    /**
     * 上传
     *
     * @param upload_path 上传文件路径
     * @param ftp_path    服务器保存路径
     * @param newFileName 新文件名
     * @throws Exception
     */
    public static void uploadFile(String upload_path, String ftp_path, String newFileName) throws Exception {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(new File(upload_path));
            ftpClient.cd(ftp_path);
            ftpClient.put(fis, newFileName);
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("Upload file error.");
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    throw new Exception("close stream error.");
                }
            }
        }
    }

    /**
     * 关闭
     *
     * @throws Exception
     */
    public static void close() throws Exception {
        loggerMonitor.debug("close............");
        try {
            ftpClient.disconnect();
            sshSession.disconnect();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            throw new Exception("close stream error.");
        }
    }

    /**
     * 遍历文件夹里的文件
     * @file 文件夹路径
     * @fileList 存储文件名的集合
     */

    public static ArrayList<String> isDirectory(File file, ArrayList<String> fileList) {
        if(file.exists()){
            if (file.isFile()) {
                int start = file.getAbsolutePath().lastIndexOf("\\")+1;
                int end = file.getAbsolutePath().length();
                fileList.add(file.getAbsolutePath().substring(start,end));
            }else{
                File[] list = file.listFiles();
                if (list.length == 0) {
                    System.out.println(file.getAbsolutePath() + " is null");
                } else {
                    for (int i = 0; i < list.length; i++) {
                        isDirectory(list[i],fileList);//递归调用
                    }
                }
            }
        }else{
            System.out.println("文件不存在!");
        }
        return fileList;
    }
}

文件下载

public static void main(String[] args) {

        try {
            getConnect(host, port, user, password);
            download("/home/admin/log","C:\\Users\\Talisman\\Desktop\\csdn博客\\",
                    "blog-pro.log","123.log");
            close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

文件上传

public static void main(String[] args) {

        try {
            getConnect(host, port, user, password);
			uploadFile("C:\\Users\\Talisman\\Desktop\\csdn博客\\1.png", "/home/admin/log", "1.png");
            close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

结语

如果你将上面的代码掌握之后,你就能通过页面来操作你服务器上的命令了。

PS: 我们可以通过页面的操作请求java代码执行shell脚本并返回数据给前端,这样就很方便我们完成一些自动化的脚本啦!!!

最后: 喜欢我们该文章的可以给我点赞收藏关注加评论哈哈哈!!!!!!

推荐阅读:

2.5万字详细讲解个人网站的开发过程和项目的部署

不会用liunx命令怎么办?教你安装宝塔解除该烦恼

教你使用java的爬虫爬取你想要的资源

Redis常用的命令整理和springboot的整合

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:40:45  更:2021-09-07 10:41:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:32:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码