X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plcsh;h=54fc0b9e7edfbf3a64f8ee761f4e5f26b52d82ea;hb=refs%2Fheads%2Fplanetlab-4_0-branch;hp=ed3e2c4716c36fe8452aae3780efa5200153492c;hpb=cde42b5e2bb743678eeb2e650d591e0324d95474;p=plcapi.git diff --git a/plcsh b/plcsh index ed3e2c4..54fc0b9 100755 --- a/plcsh +++ b/plcsh @@ -5,12 +5,14 @@ # Mark Huang # Copyright (C) 2005 The Trustees of Princeton University # -# $Id: Shell.py,v 1.1 2007/01/08 18:10:30 mlhuang Exp $ +# $Id: plcsh,v 1.6 2007/02/08 21:49:41 mlhuang Exp $ # import os import sys +from socket import gethostname from optparse import OptionParser +from getpass import getpass from traceback import print_exc sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0]))) @@ -20,7 +22,9 @@ parser = OptionParser(add_help_option = False) parser.add_option("-f", "--config", help = "PLC configuration file") parser.add_option("-h", "--url", help = "API URL") parser.add_option("-c", "--cacert", help = "API SSL certificate") +parser.add_option("-k", "--insecure", help = "Do not check SSL certificate") parser.add_option("-m", "--method", help = "API authentication method") +parser.add_option("-s", "--session", help = "API session key") parser.add_option("-u", "--user", help = "API user name") parser.add_option("-p", "--password", help = "API password") parser.add_option("-r", "--role", help = "API role") @@ -31,7 +35,7 @@ parser.add_option("--help", action = "help", help = "show this help message and # If user is specified but password is not if options.user is not None and options.password is None: try: - options.password = getpass.getpass() + options.password = getpass() except (EOFError, KeyboardInterrupt): print sys.exit(0) @@ -43,7 +47,12 @@ try: config = options.config, url = options.url, xmlrpc = options.xmlrpc, cacert = options.cacert, method = options.method, role = options.role, - user = options.user, password = options.password) + user = options.user, password = options.password, + session = options.session) + # Register a few more globals for backward compatibility + auth = shell.auth + api = shell.api + config = shell.config except Exception, err: print "Error:", err print @@ -64,6 +73,11 @@ else: elif shell.auth['AuthMethod'] == "anonymous": prompt = "[anonymous]" print "Connected anonymously" + elif shell.auth['AuthMethod'] == "session": + # XXX No way to tell node and user sessions apart from the + # client point of view. + prompt = "[%s]" % gethostname() + print "%s connected using session authentication" % gethostname() else: prompt = "[%s]" % shell.auth['Username'] print "%s connected using %s authentication" % \