当前位置 : 主页 > 编程语言 > java >

Java 操作linux工具类

来源:互联网 收集:自由互联 发布时间:2023-12-28
Java操作Linux工具类 引言 Linux是一种常用的操作系统,在日常开发和运维工作中,我们经常需要通过Java程序来操作Linux系统的一些工具和命令。本文将介绍如何使用Java操作Linux工具类,包

Java操作Linux工具类

引言

Linux是一种常用的操作系统,在日常开发和运维工作中,我们经常需要通过Java程序来操作Linux系统的一些工具和命令。本文将介绍如何使用Java操作Linux工具类,包括调用系统命令、执行Shell脚本、远程连接等。

调用系统命令

Java提供了Runtime类和ProcessBuilder类,可以方便地调用系统命令。

使用Runtime类执行系统命令的代码示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class CommandExecutor {
    public static void main(String[] args) {
        String command = "ls -l";
        try {
            Process process = Runtime.getRuntime().exec(command);
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用ProcessBuilder类执行系统命令的代码示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

public class CommandExecutor {
    public static void main(String[] args) {
        ProcessBuilder processBuilder = new ProcessBuilder("ls", "-l");
        try {
            Process process = processBuilder.start();
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

执行Shell脚本

除了调用系统命令,我们还可以使用Java执行Shell脚本。

使用Java执行Shell脚本的代码示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ShellExecutor {
    public static void main(String[] args) {
        String command = "sh script.sh";
        try {
            Process process = Runtime.getRuntime().exec(command);
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

远程连接

有时候我们需要通过Java程序与远程Linux服务器进行交互,可以借助SSH协议进行远程连接。

使用Java进行远程连接的代码示例:

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

public class SSHExecutor {
    public static void main(String[] args) {
        String host = "192.168.0.100";
        String username = "root";
        String password = "123456";
        int port = 22;

        try {
            JSch jSch = new JSch();
            Session session = jSch.getSession(username, host, port);
            session.setPassword(password);

            Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);

            session.connect();

            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand("ls -l");

            InputStream inputStream = channel.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();

            channel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

类图

使用Mermaid语法绘制的类图如下所示:

classDiagram
  class Runtime {
    +exec(String command) : Process
  }
  class Process {
    +getInputStream() : InputStream
    +getErrorStream() : InputStream
  }
  class InputStream {
    +readLine() : String
  }
  class BufferedReader {
    +BufferedReader(InputStreamReader in) : void
    +readLine() : String
    +close() : void
  }
  class ProcessBuilder {
    +ProcessBuilder(String... command) : void
    +start() : Process
  }
  class Channel {
    +getInputStream() : InputStream
    +getOutputStream() : OutputStream
  }
  class ChannelExec {
    +setCommand(String command) : void
  }
  class JSch {
    +getSession(String username, String host, int port) : Session
  }
上一篇:Java 163邮箱 Exchange
下一篇:没有了
网友评论