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

Last change on this file since 10805 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.