如何用Java给Linux发送命令

流程图

flowchart TD
    A(准备工作) --> B(建立SSH连接)
    B --> C(发送命令)
    C --> D(获取返回结果)

任务步骤表格

步骤 描述
1 准备工作
2 建立SSH连接
3 发送命令
4 获取返回结果

任务过程

journey
    title Java发送命令给Linux
    section 准备工作
        - 确保Linux主机已安装SSH服务
        - 在Java项目中引入JSch库
    section 建立SSH连接
        - 创建一个SSH连接
        - 配置连接的主机名、用户名和密码
        - 打开连接
    section 发送命令
        - 创建一个会话
        - 在会话中执行要发送的命令
    section 获取返回结果
        - 获取命令执行的结果
        - 关闭会话和连接

代码实现

准备工作

确保Linux主机已安装SSH服务,并在Java项目中引入JSch库。

建立SSH连接

import com.jcraft.jsch.*;

public class SendCommand {
    public static void main(String[] args) {
        JSch jsch = new JSch();
        Session session = jsch.getSession("username", "hostname", 22);
        session.setPassword("password");
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
    }
}
  • JSch是JSch库中的主要类,用于建立SSH连接。
  • Session是一个会话,用于连接到SSH服务器。
  • session.setConfig("StrictHostKeyChecking", "no")用于禁用主机密钥检查。

发送命令

Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("ls -l");
channel.connect();
  • Channel是一个通道,用于在会话中执行命令。
  • channel.openChannel("exec")用于创建一个执行命令的通道。
  • ((ChannelExec) channel).setCommand("ls -l")用于设置要执行的命令。

获取返回结果

InputStream in = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while((line = reader.readLine()) != null) {
    System.out.println(line);
}
channel.disconnect();
session.disconnect();
  • InputStream用于接收命令执行的结果。
  • BufferedReader用于读取结果。
  • reader.readLine()用于逐行读取结果并打印。

通过以上步骤,你就可以成功地用Java给Linux发送命令了。祝你学习顺利!