The first thing that comes to mind is to do something like what Limbic~Region suggested - which is to have Perl scripts running on the two systems that communicate with each other somehow (web interface, files on shared storage, etc.).
Here's a general idea of what I used between two Windows systems, but should work for you. On one system, I used IO::Socket::INET::Daemon to create a "telnet" server that would run do something with local hardware and return information to the client. I used Task Scheduler to start the script on system start even if no user is logged on. Then I used Net::Telnet from another system to interact with the "telnet" server.
Regardless of the route that you choose to go, the basic idea is that you have to have some kind of service (such as web/telnet/ssh server or script/executable running) on the Windows system, which means that you will have to make some kind of change to the Windows system so that something is running so that your remote system can interact with it.