We want to write an "agent" which will run on Linux and Windows. This agent will listen on a port for connections, and when a connection is received it will process messages from that connection and then carry out various actions.
Some of the actions the "agent" will preform:
Installing a remote viewing client
Executing bash commands
Retrieving file system information
Other system administration related tasks
So imagine this:
Server --- TCP --- Agent
This agent could be written in anything, but it should be easily portable to other systems so Java is probably best, although C++ and other languages could also work.
Does this sound complicated? It's not. Just listen for connections on a port, process the messages, preform various actions, send the results back.
This is going to be used as a tool for system administrators to remotely work on servers and desktops.