From 35eaf82de09236c9816df427313adccaa5deb06e Mon Sep 17 00:00:00 2001 From: zimoch Date: Fri, 2 Apr 2004 15:40:57 +0000 Subject: [PATCH] scripts moved here from utilities directory --- App/scripts/bootinfo | 140 +++++++++++++++++++++++++++++++++++ App/scripts/call_ioc_ins | Bin 0 -> 17361 bytes App/scripts/call_select.py | 27 +++++++ App/scripts/iocBootNotify.sh | 63 ++++++++++++++++ 4 files changed, 230 insertions(+) create mode 100755 App/scripts/bootinfo create mode 100755 App/scripts/call_ioc_ins create mode 100755 App/scripts/call_select.py create mode 100755 App/scripts/iocBootNotify.sh diff --git a/App/scripts/bootinfo b/App/scripts/bootinfo new file mode 100755 index 0000000..ab15165 --- /dev/null +++ b/App/scripts/bootinfo @@ -0,0 +1,140 @@ +#! /usr/bin/env python +# +''' + $Source: /cvs/G/DRV/misc/App/scripts/bootinfo,v $ + $Revision: 1.1 $ $Date: 2004/04/02 15:40:57 $ + + Obtain boot information about IOCs from the ssrm_public Oracle + database and make a pretty printout. + + Usage: + ----- + %s [--nocc] [...] + where + is used to match part of the system (i.e. crate name), + bootpc, ipaddr or ethaddr. + Unless "--nocc" is specified, 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 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 + "%' " + \ + "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 %s" % \ + (toks[0], toks[1], toks[2], toks[3], toks[4], toks[5], toks[6], toks[7]) + hdrNotDone = 0 + else: + print + #endif + for line in lines[1:]: + nFnd = nFnd + 1 + toks = string.split (line) + if len (toks) >= 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 %s" % \ + (toks[0], dateStr, toks[3], toks[4], toks[5], toks[6], toks[7]) + #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 $ diff --git a/App/scripts/call_ioc_ins b/App/scripts/call_ioc_ins new file mode 100755 index 0000000000000000000000000000000000000000..3cdfbfdcd6f6cb693a15108a23cc4829c2e20b50 GIT binary patch literal 17361 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 literal 0 HcmV?d00001 diff --git a/App/scripts/call_select.py b/App/scripts/call_select.py new file mode 100755 index 0000000..df30fa3 --- /dev/null +++ b/App/scripts/call_select.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# +#File: call_select.py +#Author: R.krempaska +#Description: The program should be called from bootinfo. +# It calls a ioc_select.php page which does select query as ssrm_public. +# +import httplib, sys, os, urllib +from urllib import quote_plus + +sqlquery=sys.argv[1] +#print sqlquery +try: + conn=httplib.HTTP("pc3839.psi.ch") + req='/testplan/IOC_INFOS/ioc_select.php?SQLQUER='+quote_plus(sqlquery) + conn.putrequest('GET', req) + conn.endheaders() + errcode, errmsg, headers = conn.getreply() + f = conn.getfile() + data = f.read() + f.close() + print data +except: + out=open("/tmp/ioc_select.log", 'aw') + #need to write more - time of unsuccess, , author, etc + out.write(data) + out.close() diff --git a/App/scripts/iocBootNotify.sh b/App/scripts/iocBootNotify.sh new file mode 100755 index 0000000..d7912bf --- /dev/null +++ b/App/scripts/iocBootNotify.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# +# This script should only be called by the ioc at boot time. +# The startup script should have the following line: +# rsh bootHost(),"cd",SLSBASE,";sls/bin/iocBootNotice.sh",bootInfo("TendFs"),vxWorksVersion,"'",epicsRelease1,"'" +# or +# bootNotice SLSBASE,"sls/bin/iocBootNotice.sh" + +if [ $# -lt 9 ] +then + echo "This script should only be called by an IOC at boot time!" >&2 + exit 1 +fi + +#. /etc/profile + +SYSTEM=$1 +IPADDR=$2 +PROCNUM=$3 +DEVICE=$4 +BOOTFILE=$5 +SCRIPT=$6 +VXWORKSVER=$7 +EPICSVER=$8 +ETHADDR=$9 +if [ ! -L /ioc/$SYSTEM ] +then + echo "ERROR: $SYSTEM is not an existing system name." + echo "Rename 'target name' to your system name!" + exit 1 +fi +case $SYSTEM in + ( *-VME-* ) ;; + ( * ) echo "ERROR: $SYSTEM is not an acceptable system name." + echo "Rename your system and 'target name' to match *-VME-*." + exit 1 ;; +esac +link=$(readlink /ioc/$SYSTEM) +SLSBASE=${link%%/iocBoot*} +BOOTPC=$(hostname -s) +if [ -L $BOOTFILE ] +then + link=$(readlink $BOOTFILE) + VXWORKS=$SLSBASE/${link##*../} +else + VXWORKS=$BOOTFILE +fi +echo "I will put the following values to the database:" +echo "SYSTEM=$SYSTEM" +echo "IPADDR=$IPADDR" +echo "PROCNUM=$PROCNUM" +echo "DEVICE=$DEVICE" +echo "BOOTPC=$BOOTPC" +echo "SLSBASE=$SLSBASE" +echo "BOOTFILE=$BOOTFILE" +echo "SCRIPT=$SCRIPT" +echo "VXWORKS=$VXWORKS" +echo "EPICSVER=$EPICSVER" +echo "VXWORKSVER=$VXWORKSVER" +echo "ETHADDR=$ETHADDR" + +$SLSBASE/sls/bin/call_ioc_ins $SYSTEM $IPADDR $PROCNUM $DEVICE $BOOTPC $SLSBASE $BOOTFILE $SCRIPT $VXWORKS $EPICSVER $VXWORKSVER $ETHADDR +