Last weekend, I got the basic form of peep running, which is using the Cmd.cmd class. I've pasted a sample "dummy" session below to show you what it'll look like. I put the code at the end. Brad helped me in choosing to use python dictionaries instead of lists... I was debating whether to send this to the list, since it's so damn simple, but heck. You may not like the use of the cmd class. If you put in something that's not in the interpretation list (do_<blah>) you just get a "Unknown syntax" error. If you hit return for a blank line, it repeats the last command, though I'm sure I can override that. This will allow you to limit input in peep to a handful (or more) of commands as well as include a built-in help handler. Simple and effective... D Sample of peep front end --------------------------------------- density:~/python> python peep_input.py Welcome to Peep! Type 'help' for help. <peep> help Documented commands (type help <topic>): ======================================== EOF nodelist nodeset Undocumented commands: ====================== help jobscan <peep> help nodeset Allows you to set the node name, number, and IP address for a node instance. Nod e number should be an integer of where the node falls in your process. You can r eview this with 'nodelist' (see 'help nodelist') <peep> nodeset Enter the number of the new node: 1 Enter new node type: type1 Enter the remote IP or name for this node: 121.00.00.00 Node number: 1 Node Type: type1 Remote IP: 121.00.00.00 <peep> nodeset Enter the number of the new node: 2 Enter new node type: type2 Enter the remote IP or name for this node: 121.00.00.01 Node number: 2 Node Type: type2 Remote IP: 121.00.00.01 <peep> nodeset Enter the number of the new node: 3 Enter new node type: type3 Enter the remote IP or name for this node: 12.1.11.0 Node number: 3 Node Type: type3 Remote IP: 12.1.11.0 <peep> nodelist Current Configured Nodes ------------------------ Node # Node Type IP address ========================================= 1 type1 121.00.00.00 2 type2 121.00.00.01 3 type3 12.1.11.0 <peep> EOF Exiting peep... density:~/python> -------------------------- import cmd import sys import string print "Welcome to Peep! Type 'help' for help." class Peep_Input(cmd.Cmd): def __init__(self): self.prompt = "<peep> " self.node_domain_num={} node_num=0 def help_nodeset(self): print "Allows you to set the node name, number, and IP address for a node instance. Node number should be an integer of where the node falls in your process. You can review this with 'nodelist' (see 'help nodelist')" def do_nodeset(self,node_num): node_num1= raw_input("Enter the number of the new node: ") node_name = raw_input("Enter new node type: ") domain_name = raw_input("Enter the remote IP or name for this node: ") node_num=string.atoi(node_num1) self.node_domain_num[node_num]=(node_num,node_name,domain_name) print "Node number: ", node_num, " Node Type: ", node_name," Remote IP: ", domain_name def help_EOF(self): print "Quits the program." def do_EOF(self, line): print "Exiting peep..." sys.exit() def help_nodelist(self): print "Gives you the list of current nodes and IP addresses." def do_nodelist(self,line): print "Current Configured Nodes" print "------------------------" print "Node # Node Type IP address" node_nums = self.node_domain_num.keys() if node_nums == []: return node_nums.sort() print '='*41 for i in node_nums: print " ",self.node_domain_num[i][0]," ",self.node_domain_num[i][1]," ",self.node_domain_num[i][2] def do_jobscan(self,line): print "Status of Current Jobs" print "----------------------" if __name__ == '__main__': peep= Peep_Input() peep.cmdloop() ------------- Deanne Taylor Biophysics Graduate Program lilyth at umich.edu University of Michigan http://www.umich.edu/~lilyth Ann Arbor