Installation

Requirements:

  1. An operating system with support for sockets. I mean a real OS like Linux.

  2. Python

  3. Also the client which recieves th command from server should be able to execute the command as if it was sent through a telnet session. In other words if you log in to that machine and issue the command from shell prompt it shuold be able to run the command. That is the format commands should be given in the run file for soth server.

Installation:

  1. Install the soths.py which is soth server file in your favourite exec path on the system you want as master node.

  2. Install sothc.py which is remote client on the systems which you like to use as slaves. If you want the client to start automatically whenever the system starts up put it is rc.local or something similar. Then as whichever user you want to run it as , log in and run the sothc.py. It will start listening to it's port 5000 and will take orders from soth server running on master node, which will poll the port 5000 of all slaves given to it in the runfile. The slaves should be reachable by either ip number or hostname. What kind of network interface is it, is immaterial to soth.

  3. On the master node , run the sothserver soths.py with the jobfile [see example] as it's only argument. See language for soth language and format of jobfile. Soth server will read the file, get all the systems, send a query signal "READY" and listen. If slaves respond "READY" then server will scan the jobfile and make a list of jobs. Send one job to each slave and keep polling till they finish. When they respond "READY" again then the next job from the queue will be sent to the first free slave. Considerations: Soth client will read from port 5000 and if the data recieved is not a predefined signal then it will try to execute the string. It does not ask for any authorisation. So be carefull when running it on the open networks and especially never run it as root. Probably the most useful way to use the soth is in heavy number crunching jobs. My idea of ideal setup would be a bunch of machines running on ether net or something faster, with a /server/data drive(or) directory nfs mounted on all slaves, which they use to save the processed data. See example jobfile.