Files
require/App/scripts/bootinfo
T
zimoch 5766b9a8d6 extract ARCH from last directory component of VXWORKS
Fix output format of IP addr from %-13s to %-15s
2004-05-03 12:48:57 +00:00

147 lines
4.8 KiB
Python
Executable File

#! /usr/bin/env python
#
'''
$Source: /cvs/G/DRV/misc/App/scripts/bootinfo,v $
$Revision: 1.3 $ $Date: 2004/05/03 12:48:57 $
Obtain boot information about IOCs from the ssrm_public Oracle
database and make a pretty printout.
Usage:
-----
%s [--nocc] <pattern> [...]
where
<pattern> is used to match part of the system (i.e. crate name),
bootpc, ipaddr or ethaddr.
Unless "--nocc" is specified, <pattern> will be converted to uppercase
before being used.
Example:
%s x04sa
'''
#--------------------------------------------------------------------
import sys
import os
import urllib
import string
import getopt
import time
#---------------------------------------------------------------------------
def showUsage ():
# =========
base = os.path.basename (sys.argv[0])
print __doc__ % (base, base)
return
#---------------------------------------------------------------------------
# The program starts here!
if __name__ == "__main__":
try:
sys.stderr = sys.stdout
caseConvert = 1
#
# Analyse the options
#
(opts, items) = getopt.getopt (sys.argv[1:], "h?", \
("help", "nocc"))
for opt in opts:
if opt[0] == "-h": raise "Help"
if opt[0] == "-?": raise "Help"
if opt[0] == "--help": raise "Help"
if opt[0] == "--nocc": caseConvert = 0
#endfor
nFnd = 0
if len (items) == 0: raise "NoArgs"
#
# Loop over the list of patterns.
hdrNotDone = 1
for item in items:
if caseConvert: item = string.upper (item)
query = "SELECT SYSTEM, " + \
"BOOTDATE, " + \
"BOOTTIME, " + \
"BOOTPC, " + \
"SLSBASE, " + \
"EPICSVER AS EPICS, " + \
"VXWORKSVER AS VXWORKS, " + \
"IPADDR, " + \
"VXWORKS AS ARCH " + \
"FROM SSRM.IOC_LASTBOOTED " + \
"WHERE SYSTEM LIKE '%" + item + "%' OR " + \
"BOOTPC LIKE '%" + item + "%' OR " + \
"SLSBASE LIKE '%" + item + "%' OR " + \
"EPICSVER LIKE '%" + item + "%' OR " + \
"VXWORKSVER LIKE '%" + item + "%' OR " + \
"IPADDR LIKE '%" + item + "%' OR " + \
"ETHADDR LIKE '%" + item + "%' OR " + \
"IPADDR LIKE '%" + item + "%' OR " + \
"VXWORKS LIKE '%" + item + "%' " + \
"ORDER BY SYSTEM"
url = "http://pc3839.psi.ch/testplan/IOC_INFOS/ioc_select.php?SQLQUER=" + \
urllib.quote_plus (query)
try:
ufo = urllib.urlopen (url) # Query the database
lines = ufo.readlines () # Get the result
ufo.close ()
if hdrNotDone:
toks = string.split (lines[0])
print "\n%-16s %-11s %-8s %-8s %-6s %-8s %-8s %-15s %s" % \
(toks[0], toks[1], toks[2], toks[3], toks[4], toks[5], toks[6], toks[7], toks[8])
hdrNotDone = 0
else:
print
#endif
for line in lines[1:]:
nFnd = nFnd + 1
toks = string.split (line)
if len (toks) >= 9:
toks[8] = os.path.basename(os.path.dirname (toks[8]))
#endif
if toks[8][-8:] == "/vxWorks": toks[8] = toks[8][0:-8]
date = time.strptime ("%s %s" % (toks[1], toks[2]), "%d-%m-%Y %H:%M:%S")
dateStr = time.strftime ("%d-%b-%Y %H:%M:%S", date)
print "%-16s %s %-8s %-7s %-8s %-8s %-15s %s" % \
(toks[0], dateStr, toks[3], toks[4], toks[5], toks[6], toks[7], toks[8])
#endif
#endfor
except:
print "\aError getting data from database!"
raise
#endtry
#endfor
if nFnd == 0: print "No database entries found!"
except getopt.error:
print "Bad option. Specify \"-h\" for help."
sys.exit (1)
except "Help":
showUsage ()
sys.exit (0)
except "NoArgs":
print "\aYou must specify a search pattern!"
sys.exit (1)
#endtry
sys.exit (0)
#endif
#--------------------------------------------------#
# emacs setup - force text mode to prevent emacs #
# from helping with the indentation! #
# Local Variables: #
# mode:text #
# indent-tabs-mode:nil #
# End: #
#--------------------------------------------------#
#
#------------------------------------------------- End of $RCSfile: bootinfo,v $