As the question's title says, I want to get the system information (like OS name, version, etc.) of a remote system using Java. But before anyone answers this question, I just want to ask whether this is possible, if yes, then how?
One more catch is that this should work for both Unix-based and Windows-based systems. I tried searching the Internet, but drew a blank (almost).
EDIT: The Java app will be a desktop app, and it will have to credentials to be able to log onto the remote system, but there will be no HTTP/RMI that'll be used.
well as mentioned above, you can try them. By the way after getting connected you can use following codes:(if you wish)
You either need help from the remote system (i.e. an application running there that announces the data - which web browsers do, but only to the servers they visit) or access to low-level network APIs that allow a technique called OS fingerprinting. However, Java's network APIs are not low-level enough for that.
Try to use low level networking API such SNMP and UPnP. SNMP need an agent activated/installed in the remote system and you will have this information on the MIB. And the UPnP can do that, (i don't know how exactly, but i'm sure that is can be done).
For Windows you should be able to access WMI on the remote machine (with some ugly JNI glue), for UNIX systems I don't know of a way (unless you somehow have shell access, then you can probably try logging in via SSH and do a
uname -a
or similar). It's going to be a lot of work in either case and Java is hardly the right tool for that.You either need help from the remote system (i.e. an application running there that announces the data - which web browsers do, but only to the servers they visit) or access to low-level network APIs that allow a technique called OS fingerprinting. However, Java's network APIs are not low-level enough for that.
This is a common problem in monitoring a large site comprised of scores or hundreds of machines. There are open source solutions like Zenoss and Nagios. SNMP is a widely supported standard in this space too (and there are ways to connect them into a Java-based "dashboard").