如何用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发送命令了。祝你学习顺利!