Eu tenho que fazer um programa que irá imprimir as configurações de rede usando “ipconfig” para Windows e “ifconfig” para Linux, mas eu preciso fazer isso com uma implementação única para ambos os sistemas operacionais.
Você pode obter o nome do sistema operacional através
System.getProperty("os.name")
Dê uma olhada nesta página para obter um código de amostra.
Se for por acaso o IP do host local em que você está interessado, existem maneiras de obter isso diretamente em Java:
Não há como determinar qual é o comando “show ip information” para um sistema operacional arbitrário. Você terá que codificar o que o comando é (se for um) para cada nome de sistema operacional manualmente.
Como complemento às outras respostas, mencionarei SystemUtils
do Commons Lang, que expõe várias constantes, como IS_OS_UNIX
, IS_OS_WINDOWS
, etc.
Com base na solução do aioobe :
final String osname = System.getProperty("os.name").toLowerCase(); String processName; if(osname.startsWith("win")) processName="ipconfig /some /parameter"; else processName="ifconfig -some -parameter"; Runtime.getRuntime().exec(processName);
Para referência, aqui está um exemplo concreto que define uma propriedade apenas para um determinado sistema operacional:
if (System.getProperty("os.name").startsWith("Mac OS X")) { System.setProperty("apple.awt.graphics.UseQuartz", "true"); }