Como obtener la versión de Linux desde Java
Hay muchas maneras de obtener la version/distro de linux en java. Aquí puedes encontrar ejemplos que se ajusten a tus necesidades.
Desde los System properties
package com.exec; import java.util.Properties; public class ExecRealease extends Thread { public static void main(String[] args) { Properties props = System.getProperties(); System.out.println(props.getProperty("os.name")); System.out.println(props.getProperty("os.version")); } }
Usar Runtime.getRuntime().exec(...) para obtenerlo desde un system command.
Este ejemplo imprime con el comando "cat" todos los archivos de versión que estan bajo el directorio /etc/ terminados en -release
package com.exec; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ExecRealease extends Thread { public static void main(String[] args) { String[] cmd = {"/bin/sh", "-c", "cat /etc/*-release" }; try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader bri = new BufferedReader(new InputStreamReader( p.getInputStream())); String line = ""; while ((line = bri.readLine()) != null) { System.out.println(line); } bri.close(); } catch (IOException e) { e.printStackTrace(); } } }
*cambia cat /etc/*-release for uname -a if you just need the distribution
Usar Java para imprimir todos los archivos de versión
Se incluye el archivo version que esta bajo el directorio /proc/ no existe en todas las versiones linux.
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FilenameFilter; import java.util.Arrays; public class ExecRealease extends Thread { public static void main(String[] args) { //lists all the files ending with -release in the etc folder File dir = new File("/etc/"); File fileList[] = new File[0]; if(dir.exists()){ fileList = dir.listFiles(new FilenameFilter() { public boolean accept(File dir, String filename) { return filename.endsWith("-release"); } }); } //looks for the version file (not all linux distros) File fileVersion = new File("/proc/version"); if(fileVersion.exists()){ fileList = Arrays.copyOf(fileList,fileList.length+1); fileList[fileList.length-1] = fileVersion; } //prints all the version-related files for (File f : fileList) { try { BufferedReader myReader = new BufferedReader(new FileReader(f)); String strLine = null; while ((strLine = myReader.readLine()) != null) { System.out.println(strLine); } myReader.close(); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } } }