jdk1.8 通过IP获取其他Linux服务器的CPU、内存、硬盘等详细信息(如要新增依赖,给出Maven坐标),不通过JMX方式
时间: 2023-12-23 13:05:15 浏览: 76
如果不使用JMX方式,可以通过SSH协议连接到目标Linux服务器,执行命令来获取CPU、内存、硬盘等详细信息。具体实现步骤如下:
1. 添加依赖
在 Maven 项目中,需要添加以下依赖:
```
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
```
2. 编写Java代码
接下来,可以通过Java程序连接到目标Linux服务器,执行命令来获取CPU、内存、硬盘等详细信息。以下是一个示例代码:
```java
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class SSHDemo {
public static void main(String[] args) throws Exception {
String host = "192.168.0.1";
String user = "root";
String password = "password";
// 创建SSH连接
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 执行命令
String command = "top -b -n 1";
String result = execCommand(session, command);
System.out.println(result);
// 关闭连接
session.disconnect();
}
private static String execCommand(Session session, String command) throws IOException {
StringBuilder sb = new StringBuilder();
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
channel.setInputStream(null);
channel.setErrStream(System.err);
try (InputStream in = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
channel.connect();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} finally {
channel.disconnect();
}
return sb.toString();
}
}
```
在上述代码中,需要将 `host`、`user` 和 `password` 分别替换成目标Linux服务器的IP地址、用户名和密码。另外,需要根据实际情况调整执行的命令。
注意:在执行命令时,需要使用 `top -b -n 1` 命令来获取CPU、内存等信息;使用 `df -h` 命令来获取磁盘空间信息。如果需要获取其他信息,需要根据实际情况调整执行的命令。
需要注意的是,这种方式需要在目标Linux服务器上安装SSH服务,并且需要提供SSH登录的用户名和密码。如果需要提高安全性,可以使用公钥认证方式来代替用户名和密码的认证。
阅读全文