I have to make a program which will print the network settings using "ipconfig" for Windows and "ifconfig" for Linux, but I need to do that with a unique implementation for both OS.
You can get the name of the operating system through
System.getProperty("os.name")
Have a look at this page for some sample code.
If it's by any chance the IP of the local host you're interested in, there are ways to get this directly in Java:
There is no way to determine what the "show ip information"-command is for an arbitrary operating system. You will have to hard-code what the command is (if the is one) for each operating system name manually.
As a complement to the other answers, I'll mention SystemUtils
from Commons Lang which exposes various constant such as IS_OS_UNIX
, IS_OS_WINDOWS
, etc.
Building on aioobe's solution:
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);
For reference, here's a concrete example that sets a property only for a particular OS:
if (System.getProperty("os.name").startsWith("Mac OS X")) {
System.setProperty("apple.awt.graphics.UseQuartz", "true");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With