source: hybrid/branches/releng-10/nanobsd/files/usr/local/www/wlweb/index.cgi

Last change on this file was 10805, checked in by rick, 13 years ago

Anders heten de allebei index.cgi in de syslog en dat is wat ongelukkig.

Related-To: nodefactory:ticket:161

  • Property svn:executable set to *
File size: 3.0 KB
Line 
1#!/usr/bin/env python
2#
3# Wireless Leiden webinterface for (embedded) nodes, printing some basic debug
4# information, for people who does not like SSH logins
5#
6# Rick van der Zwet <info@rickvanderzwet.nl>
7# Richard van Mansom <richardvm@wirelessleiden.nl>, stripped the webserver
8
9class MultiTracebackHook:
10 """A hook to replace sys.excepthook that shows tracebacks in syslog & HTML (using cgitb)"""
11 def __init__(self, ident=None, enable=False):
12 self.ident = ident
13 if enable:
14 self.enable()
15
16 def __call__(self, etype, evalue, etb):
17 self.handle((etype, evalue, etb))
18
19 def handle(self, info=None):
20 import cgitb
21 import os
22 import sys
23 import syslog
24 import traceback
25 info = info or sys.exc_info()
26 tb = traceback.format_exception(*info)
27 if self.ident:
28 syslog.openlog(self.ident)
29 prefix = '[%i]' % os.getpid()
30 for line in tb:
31 syslog.syslog(line)
32 cgitb.handler(info)
33
34 def enable(self):
35 import sys
36 sys.excepthook = self
37
38MultiTracebackHook(ident='wlweb', enable=True)
39
40from subprocess import *
41import socket
42
43def tailFile(file, lines=10):
44 return("<em>Tail (%i): %s</em><br /><pre>%s</pre>" % (lines,file,Popen(["/usr/bin/tail", '-%s' % lines, file], stdout=PIPE, shell=False).communicate()[0]))
45
46def catFile(file):
47 return("<em>File: %s</em><br /><pre>%s</pre>" % (file,Popen(["/bin/cat", file], stdout=PIPE, shell=False).communicate()[0]))
48
49def allRoutes():
50 return("<em>netstat -nr</em><br /><pre>%s</pre>" % Popen(["/usr/bin/netstat", "-n", "-r"], stdout=PIPE, shell=False).communicate()[0])
51
52def processList():
53 return("<em>ps -ax</em><br /><pre>%s</pre>" % Popen(["/bin/ps", "-a", "-x"], stdout=PIPE, shell=False).communicate()[0])
54
55def interfaceList():
56 return("<em>ifconfig -a</em><br /><pre>%s</pre>" % Popen(["/sbin/ifconfig", "-a"], stdout=PIPE, shell=False).communicate()[0])
57
58def arpList():
59 return("<em>arp -n -a</em><br /><pre>%s</pre>" % Popen(["/usr/sbin/arp", "-n", "-a"], stdout=PIPE, shell=False).communicate()[0])
60
61
62if __name__ == '__main__':
63 print "Content-Type: text/html\n\n"
64 print "<img src='/static/wl-logo.png' />"
65 print "Welcome to <a href='http://www.wirelessleiden.nl'>Stichting Wireless Leiden</a> host/node <em>%s</em>" % socket.gethostname()
66
67 items = ['motd', 'messages', 'debug.log', 'dmesg.boot', 'ps', 'ifconfig', 'arp', 'routes']
68 print "<a name='top'><ul>"
69 for item in items:
70 print "<li><a href='#{0}'>{0}</a></li>".format(item)
71 print '</ul>'
72
73 def item_label():
74 return "<a href='#top'>Back to Top</a><a name='%s'></a><p />" % items.pop(0)
75
76 print item_label()
77 print catFile('/etc/motd')
78 print item_label()
79 print tailFile('/var/log/messages')
80 print item_label()
81 print tailFile('/var/log/debug.log')
82 print item_label()
83 print catFile('/var/run/dmesg.boot')
84 print item_label()
85 print processList() + "<p />"
86 print item_label()
87 print interfaceList() + "<p />"
88 print item_label()
89 print arpList() + "<p />"
90 print item_label()
91 print allRoutes() + "<p />"
92 print "<em>$Id$</em>"
Note: See TracBrowser for help on using the repository browser.