def __call__(self, parser, namespace, values, option_string = None):
# If we recognize one of the arguments on the command line as indicating a
# different mechanism for handling tracebacks, we attach one of those handlers
# and remove the argument from sys.argv.
#
if self.dest == "paste":
sys.excepthook = paste_traceback
mylog.debug("Enabling traceback pasting")
elif self.dest == "paste-detailed":
sys.excepthook = paste_traceback_detailed
mylog.debug("Enabling detailed traceback pasting")
elif self.dest == "detailed":
import cgitb
cgitb.enable(format="text")
mylog.debug("Enabling detailed traceback reporting")
elif self.dest == "rpdb":
sys.excepthook = rpdb.rpdb_excepthook
mylog.debug("Enabling remote debugging")
python类enable()的实例源码
def main():
global args
args = parse_arguments()
last_sync = ""
if not args.all:
now = datetime.now()
last_sync = (now - timedelta(hours=3)).strftime("%Y-%m-%d %H:%M:%S")
last_sync = urllib.quote_plus(last_sync)
connection = httplib.HTTPConnection(WSHOST, 80)
uri = WSURI % last_sync
connection.request("GET", uri)
response = connection.getresponse()
if response.status != httplib.OK:
logging.error("The webservice didn't return OK :(")
return 1
json = response.read()
data = anyjson.deserialize(json)
departures = fetch_departures(data)
cgitb.enable()
table = PrettyTable(['Scheduled',
'Expected', 'Destination',
'Flight', 'Airline', 'Gate',
'Aircraft', 'Reg', 'Status'])
table.align = 'l'
for departure in sorted(departures):
table.add_row(departure)
print table
return 0
def test_syshook_no_logdir_default_format(self):
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
# By default we emit HTML markup.
self.assertIn('<p>', out)
self.assertIn('</p>', out)
def test_syshook_no_logdir_text_format(self):
# Issue 12890: we were emitting the <p> tag in text mode.
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(format="text", logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
self.assertNotIn('<p>', out)
self.assertNotIn('</p>', out)
def create_obj() :
os.system("iptables -F")
os.system("setenforce 0")
flav=form.getvalue('obj')
if flav == 'flavour1' :
size='1'
elif flav == 'flavour2' :
size='2'
else :
size='5'
user=os.environ.get("HTTP_COOKIE")
os.system("lvcreate --size "+size+"G --name "+user+" staas_vg")
os.system("mkfs.ext4 /dev/staas_vg/"+user)
os.system("mkdir -p /staas/"+user)
os.system("mount /dev/staas_vg/"+user+" /staas/"+user)
f1=open("/etc/exports","a+")
f1.write("/staas/"+user+" *(rw,no_root_squash)\n")
f1.close()
os.system("service nfs restart")
f2=open("/var/www/cgi-bin/scripts/mountobj_"+user+".py","a+")
f2.write("#!/usr/bin/python\nimport os\n\import cgi\nimport cgitb\ncgitb.enable()\nprint 'Content-type: application/download'\nprint ''\n\n")
f2.write("print '#!/usr/bin/python\nimport os'\n")
f2.write("user = '%s'\n" % (user))
f2.write("print \"os.system('iptables -F')\"\nprint \"os.system('setenforce 0')\"\nprint \"os.system('mkdir /media/\"+user+\"')\"\n")
f2.write("print \"os.system('mount 192.168.0.100:/staas/\"+user+\" /media/\"+user+\"')\"\n")
f2.close()
os.system("chmod 555 /var/www/cgi-bin/scripts/mountobj_"+user+".py")
db=MySQLdb.connect("192.168.0.100","clouduser","maestro","cloud")
cursor=db.cursor()
cursor.execute("update cloudsignup set statusobj=\"1\" where email='%s'" % (user))
print "Status: 303 See other"
print "Location: http://192.168.0.100/cgi-bin/objmount.py"
print ""
def snap() :
user=os.environ.get("HTTP_COOKIE")
if user:
flag=0
for item in os.listdir("/var/www/cgi-bin/scripts") :
if item == "mountobjsnap_"+user+".py" :
flag=1
break
name=form.getvalue('snap')
os.system("lvcreate --size +1G --name "+name+"/dev/staas_vg/"+user)
os.system("mkfs.ext4 /dev/staas_vg/"+user)
os.system("mkdir -p /staas/"+user+"_"+name)
os.system("mount /dev/staas_vg/"+name+" /staas/"+user+"_"+name)
f1=open("/etc/exports","a+")
f1.write("/staas/"+user+"_"+name+" *(rw,no_root_squash)\n")
f1.close()
os.system("service nfs restart")
if flag==0:
f2=open("/var/www/cgi-bin/scripts/mountobjsnap_"+user+".py","a+")
f2.write("#!/usr/bin/python\nimport os\n\import cgi\nimport cgitb\ncgitb.enable()\nprint 'Content-type: application/download'\nprint ''\n\n")
f2.write("print '#!/usr/bin/python\nimport os'\n")
f2.write("user = '%s'\n" % (user))
f2.write("name = '%s'\n" % (name))
f2.write("print \"os.system('iptables -F')\"\nprint \"os.system('setenforce 0')\"\nprint \"os.system('mkdir /media/\"+user+\"/\"+name+\"')\"\n")
f2.write("print \"os.system('mount 192.168.0.100:/staas/\"+user+\"/\"+name+\" /media/\"+user+\"/\"+name+\"')\"\n")
f2.close()
os.system("chmod 555 /var/www/cgi-bin/scripts/mountobjsnap_"+user+".py")
print "Status: 303 See other"
print "Location: http://192.168.0.100/cgi-bin/objsnapmount.py"
print ""
def test_syshook_no_logdir_default_format(self):
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
# By default we emit HTML markup.
self.assertIn('<p>', out)
self.assertIn('</p>', out)
def test_syshook_no_logdir_text_format(self):
# Issue 12890: we were emitting the <p> tag in text mode.
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(format="text", logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
self.assertNotIn('<p>', out)
self.assertNotIn('</p>', out)
def test_syshook_no_logdir_default_format(self):
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
# By default we emit HTML markup.
self.assertIn('<p>', out)
self.assertIn('</p>', out)
def test_syshook_no_logdir_text_format(self):
# Issue 12890: we were emitting the <p> tag in text mode.
with temp_dir() as tracedir:
rc, out, err = assert_python_failure(
'-c',
('import cgitb; cgitb.enable(format="text", logdir=%s); '
'raise ValueError("Hello World")') % repr(tracedir))
out = out.decode(sys.getfilesystemencoding())
self.assertIn("ValueError", out)
self.assertIn("Hello World", out)
self.assertNotIn('<p>', out)
self.assertNotIn('</p>', out)
def main():
cgitb.enable()
print("Content-Type: text/html;charset=utf-8\r\n\r\n")
with open(excusefile, encoding="utf-8") as infile:
terms = infile.readlines()
print(header)
random.shuffle(terms)
print(generateTable(terms[:total]))
print(footer)
def create_bl() :
os.system("iptables -F")
os.system("setenforce 0")
flav=form.getvalue('block')
if flav == 'flavour1' :
size="3"
elif flav == 'flavour2' :
size="5"
else :
size="8"
count=1
user=os.environ.get('HTTP_COOKIE')
# os.system("lvcreate --size "+size+"G --name "+user+" staas_blockvg")
# for item in os.listdir("/dev/staas_blockvg"):
# count=count+1
tid=str(count)
os.system("sudo tgtadm --lld iscsi --mode target --op new --tid 1 --targetname "+user)
os.system("sudo tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL")
os.system("sudo tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sda6")
os.system("sudo tgt-admin --dump 2>"+user+".txt")
f4=open("/etc/tgt/targets.conf","a+")
(a,b)=commands.getstatusoutput("cat "+user+".txt")
f4.write(b)
f4.close()
os.system("service tgtd restart")
os.system("rm -f "+user+".txt")
f2=open("scripts/bl_connect_"+user+".py","a+")
f2.write("#!/usr/bin/python\nimport os\nimport cgi\nimport cgitb\ncgitb.enable()\nprint 'Content-type: application/download'\nprint ''\n\n")
f2.write("print '#!/usr/bin/python'\nprint 'import os'\nprint 'import cgi'\nprint 'import cgitb'\nprint 'cgitb.enable()'\n")
f2.write("user= '%s'\n" % (user))
f2.write("print \"os.system('iptables -F')\"\nprint \"os.system('setenforce 0')\"\nprint \"os.system('service iscsi restart')\"\n")
f2.write("print \"os.system('iscsiadm --mode discoverydb --types sendtargets --portal 192.168.0.29 --discover')\"\n")
f2.write("print \"os.system('iscsiadm --mode node --targetname \"+user+\" --portal 192.168.0.100:3260 --login')\"")
f2.close()
os.system("chmod 555 /var/www/cgi-bin/scripts/bl_connect_"+user+".py")
f3=open("/var/www/cgi-bin/scripts/bl_logout_"+user+".py","a+")
f3.write("#!/usr/bin/python\nimport os\nimport cgi\nimport cgitb\ncgitb.enable()\nprint 'Content-type: application/download'\nprint ''\n\n")
f3.write("print '#!/usr/bin/python'\nprint 'import os'\nprint 'import cgi'\nprint 'import cgitb'\nprint 'cgitb.enable()'\nprint ''\n\n")
f3.write("user = '%s'" % (user))
f3.write("print \"os.system('iptables -F')\"\nprint \"os.system('setenforce 0')\"\n\n")
f3.write("print \"os.system('iscsiadm --mode node --targetname \"+user+\" --portal 192.168.0.100:3260 --logout')\"")
f3.close()
os.system("chmod 555 /var/www/cgi-bin/scripts/bl_logout_"+user+".py")
db=MySQLdb.connect("192.168.0.100","clouduser","maestro","cloud")
cursor=db.cursor()
cursor.execute("update cloudsignup set statusbl='1' where email= '%s'" % (user))
print "Status: 303 See other"
print "Location: http://192.168.0.100/cgi-bin/blclient.py"
print ""
def main():
"""Program entry function."""
# XXX: Stupid Apache on shrapnel has TZ set to US/Eastern, no idea why!
os.environ['TZ'] = 'Eire'
print("Content-type: text/html")
print()
atexit.register(shutdown)
# Sets up an exception handler for uncaught exceptions and saves
# traceback information locally.
#
cgitb.enable(logdir='%s/tracebacks' % os.getcwd())
global form
form = cgi.FieldStorage()
opt.mode = form.getfirst('mode')
if opt.mode not in cmds:
opt.mode = 'card'
opt.action = form.getfirst('action')
# XXX remove usr.override
# usr.override = opt.override = form.getfirst('override') == '1'
opt.override = form.getfirst('override') == '1'
# Start HTML now only for modes that print output *before* html_form is
# called (which calls start_html itself). We delay the printing of the
# header for all other modes as mode switching may occur (e.g.
# cardid <-> add/renew).
#
if opt.mode in cmds_noform or (opt.mode in cmds_custom and opt.action):
html_start()
global udb
udb = RBUserDB()
udb.setopt(opt)
# Open database and call function for specific command only if action
# is required or the command needs no user input (i.e. no blank form
# stage).
#
if opt.mode in cmds_noform or opt.action:
try:
udb.connect()
except ldap.LDAPError as err:
error(err, 'Could not connect to user database')
# not reached
try:
eval(opt.mode + '()')
except (ldap.LDAPError, RBError) as err:
error(err)
# not reached
html_form()
sys.exit(0)