java连接linux服务器获取一下数据,1、服务器当前cpu使用率,2、服务器关键文件系统使用率
时间: 2024-02-01 17:14:41 浏览: 120
可以使用ssh连接到Linux服务器,通过命令行获取CPU使用率和文件系统使用率。Java可以使用jsch库实现ssh连接。
以下是一个示例代码:
```java
import com.jcraft.jsch.*;
public class LinuxInfo {
public static void main(String[] args) {
String host = "your_host";
String user = "your_username";
String password = "your_password";
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 获取CPU使用率
String cpuCommand = "top -bn1 | grep load | awk '{printf \"%.2f\", $(NF-2)}'";
ChannelExec cpuChannel = (ChannelExec) session.openChannel("exec");
cpuChannel.setCommand(cpuCommand);
cpuChannel.connect();
InputStream cpuStream = cpuChannel.getInputStream();
byte[] cpuBuffer = new byte[1024];
int cpuBytesRead = cpuStream.read(cpuBuffer);
String cpuResult = new String(cpuBuffer, 0, cpuBytesRead);
System.out.println("CPU使用率: " + cpuResult.trim());
// 获取关键文件系统使用率(以根目录为例)
String fsCommand = "df -h / | awk '{print $5}' | tail -n 1";
ChannelExec fsChannel = (ChannelExec) session.openChannel("exec");
fsChannel.setCommand(fsCommand);
fsChannel.connect();
InputStream fsStream = fsChannel.getInputStream();
byte[] fsBuffer = new byte[1024];
int fsBytesRead = fsStream.read(fsBuffer);
String fsResult = new String(fsBuffer, 0, fsBytesRead);
System.out.println("关键文件系统使用率: " + fsResult.trim());
cpuChannel.disconnect();
fsChannel.disconnect();
session.disconnect();
} catch (JSchException | IOException e) {
e.printStackTrace();
}
}
}
```
其中,`cpuCommand`和`fsCommand`分别是获取CPU使用率和文件系统使用率的命令。使用`ChannelExec`发送命令,并通过`InputStream`获取命令输出结果。
注意:代码中的用户名、密码和主机名需要替换为实际的值。另外,本示例没有处理命令执行失败等异常情况,实际使用时需要进行异常处理。
阅读全文