The following is example of a java code which is getting some basic Operating System properties of a linux server.It gets host name, operating system name, kernel version and CPU architecture values, then writes them on a mysql database. I hope this helps anyone interested in systems management coding in java.
import java.sql.*;
import java.io.*;
public class GetLinuxProperties {
public static String getHostname() {
int ch;
String MemStr = "";
try {
String[] LinuxCommand = {"/bin/sh","-c","hostname"};
Process LinuxProcess = Runtime.getRuntime().exec(LinuxCommand);
InputStreamReader CSR = new InputStreamReader(LinuxProcess.getInputStream());
while ((ch = CSR.read()) != -1) {
MemStr = MemStr+(char)ch;
}
} catch (IOException anIOException) {
System.out.println(anIOException);
}
return MemStr;
}
public static String getOSname() {
int ch;
String MemStr = "";
try {
String[] LinuxCommand = {"/bin/sh","-c","cat /etc/redhat-release"};
Process LinuxProcess = Runtime.getRuntime().exec(LinuxCommand);
InputStreamReader CSR = new InputStreamReader(LinuxProcess.getInputStream());
while ((ch = CSR.read()) != -1) {
MemStr = MemStr+(char)ch;
}
} catch (IOException anIOException) {
System.out.println(anIOException);
}
return MemStr;
}
public static String getkVersion() {
int ch;
String MemStr = "";
try {
String[] LinuxCommand = {"/bin/sh","-c","uname -r"};
Process LinuxProcess = Runtime.getRuntime().exec(LinuxCommand);
InputStreamReader CSR = new InputStreamReader(LinuxProcess.getInputStream());
while ((ch = CSR.read()) != -1) {
MemStr = MemStr+(char)ch;
}
} catch (IOException anIOException) {
System.out.println(anIOException);
}
return MemStr;
}
public static String getcpuA() {
int ch;
String MemStr = "";
try {
String[] LinuxCommand = {"/bin/sh","-c","uname -p"};
Process LinuxProcess = Runtime.getRuntime().exec(LinuxCommand);
InputStreamReader CSR = new InputStreamReader(LinuxProcess.getInputStream());
while ((ch = CSR.read()) != -1) {
MemStr = MemStr+(char)ch;
}
} catch (IOException anIOException) {
System.out.println(anIOException);
}
return MemStr;
}
public static String getmTime() {
int ch;
String MemStr = "";
try {
String[] LinuxCommand = {"/bin/sh","-c","date '+%d-%m-%Y %H:%M:%S'"};
Process LinuxProcess = Runtime.getRuntime().exec(LinuxCommand);
InputStreamReader CSR = new InputStreamReader(LinuxProcess.getInputStream());
while ((ch = CSR.read()) != -1) {
MemStr = MemStr+(char)ch;
}
} catch (IOException anIOException) {
System.out.println(anIOException);
}
return MemStr;
}
public static void main(String[] args) {
String hName;
String osName;
String kVersion;
String cpuA;
String mTime;
Connection conn = null;
String url = "jdbc:mysql://server_ip:3306/";
String dbName = "db_name";
String driver = "com.mysql.jdbc.Driver";
String userName = "username";
String password = "password";
hName = getHostname();
osName = getOSname();
kVersion = getkVersion();
cpuA = getcpuA();
mTime = getmTime();
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
Statement stCount = conn.createStatement();
String selServers = "select count(*) as rowcount FROM servers where server_name = \'" + hName + "\'";
ResultSet rsCount = stCount.executeQuery(selServers);
rsCount.next();
int numRows = rsCount.getInt("rowcount") ;
rsCount.close();
System.out.println("servers table has " + numRows + " row(s).");
int count;
if (numRows == 0 ) {
String insServers = "insert into servers (server_name, operating_system, kernel_version, cpu_architecture, modification_date) values (\"" + hName + "\",\"" + osName + "\",\"" + kVersion + "\",\"" + cpuA + "\",STR_TO_DATE(\'" + mTime + "\',\'%d-%m-%Y %H:%i:%S\'))";
Statement stIns = conn.createStatement();
count = stIns.executeUpdate(insServers);
stIns.close ();
System.out.println (count + " rows were inserted");
} else {
String updServers = "update servers set server_name = \'" + hName + "\', operating_system = \'" + osName + "\', kernel_version = \'" + kVersion + "\', cpu_architecture = \'" + cpuA + "\', modification_date = STR_TO_DATE(\'" + mTime + "\',\'%d-%m-%Y %H:%i:%S\') " + " where server_name = \'" + hName + "\'";
Statement stUpd = conn.createStatement();
count = stUpd.executeUpdate(updServers);
stUpd.close();
System.out.println (count + " rows were updated");
}
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Comments
Post a Comment