I am writing automation code in python to test the behavior of a network application.  As such, my code needs to be able to start a process/script (say, tcpdump or a python script) on a server in the network, disconnect, run other processes and then later return and shutdown/evaluate the process started earlier.  My network is a mix of windows and linux machines and all of the machines have sshd and python running (via Cygwin for the windows machines).  
I've considered a couple of ideas, namely:
- Starting a process and moving it to the background via a trailing ampersand (&)
- Using screen in some fashion
- Using python threads
What else should I be considering?  In your experience what have you found to be the best way to accomplish a task like this?
Most commercial products install an "Agent" on the remote machines.
In the linux world, you have numerous such agents.  rexec and rlogin and rsh all jump to mind.
These are all clients that communication with daemons running on the remote hosts.
If you don't want to use these agents, you can read about them and reinvent these wheels in pure Python.  Essentially, the client (rexec for example) communicates with the server (rexecd) to send work requests.
How to start a process on a remote server, disconnect, then later collect output?