Como um programa java pode decidir qual comando executar, dependendo do sistema operacional?

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:

  • Obtendo o endereço IP e o nome do host da máquina local
  • Obter o nome da estação de trabalho / ip

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"); }