import cmd, sys, os, string, tempfile # I have to insert this to get access to xmlrpclib, you may not sys.path.insert(0, r'e:\Zope23\lib\python') import xmlrpclibBasicAuth default_prompt = '> ' class ZShellCLI(cmd.Cmd): def __init__(self, *args): ''' setup ''' self.prompt = default_prompt self.path = '' self.connect = None def do_open(self, line): ''' means typing password in clear text need to look at Cmd module to see if we can type this in sep. maybe config file to load this in? ''' # syntax: open http://127.0.0.1 user pwd (url, user, pwd) = string.split(line, ' ') self.base_prompt = string.split(url, '/')[-1] self.prompt = self.base_prompt + '> ' self.connect = xmlrpclibBasicAuth.Server(url, user, pwd) print "Connected to %s" % url def do_close(self, line): self.connect = None print "Disconnected from %s" % self.base_prompt self.prompt = default_prompt def do_exit(self, line): sys.exit() # bye def do_quit(self, line): sys.exit() # bye def show_browser(self, data): ''' creates a make file and shoves it in ''' filename = tempfile.mktemp() file = open(filename, 'w') data = string.join(string.split(data, '\n')[1:], '\n') file.write(data) file.close() os.system('explorer %s' % filename) def set_path(self, path): ''' change path, set a nice prompt ''' self.path = path self.prompt = "%s%s> " % (self.base_prompt, self.path) def run_cmd(self, command): ''' runs a command, changes path ''' if self.connect is not None: info = { 'command': command, 'result_type': 'text', 'path': self.path } output = self.connect.zshell('', info) self.set_path(output['path']) return output['data'] else: return "Not Connected" def default(self, line): print self.run_cmd(command=line) def emptyline(self): pass def preloop(self): ''' hello ''' print print "ZShellCLI: A CLI to ZShell" if __name__ == '__main__': shell = ZShellCLI() try: # go! shell.cmdloop() except KeyboardInterrupt: sys.exit()