Exception seen for controller in web2py

52 views
Skip to first unread message

Ramesh Aj

unread,
Apr 2, 2014, 4:14:11 PM4/2/14
to web...@googlegroups.com
I have controller in web2py as below

# coding: utf8
# try something like
#!/usr/local/python2.7
def index():
    import pexpect
    import sys
    import time
    import cgi, cgitb
    import getpass
    import urllib3
    import elementtree.ElementTree as ET
    
    ssh_cmd = 'ssh -t'
    username = 'admin'
    ip_addr = '192.***.***.***'
    login = 'logging root'
    password = 'password'
    command = ssh_cmd+" "+username+"@"+ip_addr+" "+login
    try:
        child = pexpect.spawn(command)
        child.expect('(?i)password')
        child.sendline('admin')
        child.expect('(?i)Password:')
        child.sendline('abghtnnppst')
        child.expect('-bash# ')
        child.sendline('cd /root/siby')
        child.expect('-bash# ')
        child.sendline('perl analyzer_main.pl -s -i all')
        child.expect('-bash# ')
    except Exception, e:
            print e
    print child.before
    lines = child.before
    results = ET.Element("results")

    for line in lines.split("\n"):
        if 'MAC' in line:
            station = ET.SubElement(results,"machine")
            stnmac = ET.SubElement(machine,"mac")
            stnip = ET.SubElement(machine,"ip")
            apidname = ET.SubElement(machine,"name")
            totalxput = ET.SubElement(machine,"input")
            retry = ET.SubElement(machine, "retry")
            
        if 'MAC' in line:
            mac = line.split(":", 1)
            mac.text = str(mac[1].strip())
        if 'IP' in line:
            ip = line.split(":")
            ip.text = str(ip[1].strip())
        if 'NAME' in line:
            name = line.split(":")
            name.text = str(name[1].strip())
        if 'input' in line:
            input = line.split(":")
            input.text = str(input[1].strip())
        if 'Retry' in line:
            ret = line.split(":")
            retry.text = str(ret[1].strip())
            tree = ET.ElementTree(results)
    tree.write('station.xml')
    sys.stdout.flush()
    if child.isalive():
        child.sendline('exit') # Try to ask ftp child to exit.
        child.close()
    if child.isalive():
        print('Child did not exit gracefully.')
    else:
        print('Child exited gracefully.')
    xmlstr = ET.tostring(tree,encoding=None)
    return dict(xmlstr)


In View I have the following code

{{extend 'layout.html'}}
<h1>This is the remotectrl/index.html template</h1>
<body>
    {{=XML(xmlstr)}}
</body>
{{=BEAUTIFY(response._vars)}}

I want to print the XML data in webpage index.html
But it is giving me exception 

8.
9.
10.
11.
12.
13.
14.


Traceback (most recent call last):
  File "/root/python2.7/Python-2.7.6/web2py/gluon/restricted.py", line 220, in restricted
    exec ccode in environment
  File "/root/python2.7/Python-2.7.6/web2py/applications/get_station/controllers/remotectrl.py", line 88, in <module>
  File "/root/python2.7/Python-2.7.6/web2py/gluon/globals.py", line 385, in <lambda>
    self._caller = lambda f: f()
  File "/root/python2.7/Python-2.7.6/web2py/applications/get_station/controllers/remotectrl.py", line 85, in index
    xmlstr = ET.tostring(tree,encoding=None)
  File "build/bdist.linux-i686/egg/elementtree/ElementTree.py", line 1056, in tostring
    ElementTree(element).write(file, encoding)
  File "build/bdist.linux-i686/egg/elementtree/ElementTree.py", line 584, in __init__
    assert element is None or iselement(element)
AssertionError

Error snapshot help

<type 'exceptions.AssertionError'>() 

Not sure what is the issue here, why is it not printing XML data in to index.html ?

Thanks for help

Derek

unread,
Apr 4, 2014, 7:14:36 PM4/4/14
to web...@googlegroups.com
your issue is with this line...

    xmlstr = ET.tostring(tree,encoding=None)

might want to try it out in your python repl before modifying your controller.
Reply all
Reply to author
Forward
0 new messages