forked from epics_driver_modules/require
164 lines
5.4 KiB
Python
Executable File
164 lines
5.4 KiB
Python
Executable File
#! /usr/bin/env python
|
|
#
|
|
'''
|
|
$Source: /cvs/G/DRV/misc/App/scripts/bootinfo,v $
|
|
$Revision: 1.6 $ $Date: 2004/07/22 11:40:27 $
|
|
|
|
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: items = "%"
|
|
#
|
|
# Loop over the list of patterns.
|
|
hdrNotDone = 1
|
|
for item in items:
|
|
if caseConvert: item = string.upper (item)
|
|
|
|
## The following code has been hacked around because of DUO problems.
|
|
## DM, 22-Jul-2004
|
|
##
|
|
## query = "SELECT SYSTEM AS IOC, " + \
|
|
## "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 IOC"
|
|
query = "SELECT SYSTEM AS IOC, " + \
|
|
"BOOTDATE, " + \
|
|
"BOOTTIME, " + \
|
|
"BOOTPC, " + \
|
|
"SLSBASE, " + \
|
|
"EPICSVER AS EPICS, " + \
|
|
"VXWORKSVER AS VXWORKS, " + \
|
|
"IPADDR, " + \
|
|
"VXWORKS AS ARCH " + \
|
|
"FROM SSRM.IOC_LASTBOOTED"
|
|
|
|
url = "http://pc4860.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:]:
|
|
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)
|
|
recd = "%-16s %s %-8s %-7s %-8s %-8s %-15s %s" % \
|
|
(toks[0], dateStr, toks[3], toks[4], toks[5], toks[6], toks[7], toks[8])
|
|
if string.find (recd, item) >= 0:
|
|
print recd
|
|
nFnd = nFnd + 1
|
|
#endif
|
|
#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 $
|