HP3000-L Archives

April 2024, Week 1

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
"Keven Miller (3kG)" <[log in to unmask]>
Reply To:
Keven Miller (3kG)
Date:
Fri, 5 Apr 2024 07:13:29 -0600
Content-Type:
multipart/mixed
Parts/Attachments:
text/plain (1510 bytes) , Start_Agent_Cmd.txt (8 kB)
My findings using this included numbered listing:

START_AGENT_CMD is referenced at lines 87, 91, 97
all inside the daemon block 82.

daemon is referenced in 175, inside the start_cpa block 169.
start_cpa is referenced line 199 in start, 208 in condrestart.
start referenced at 273 in restart.

start, condrestart, and restart are entry points
as per Usage command line 283.


start, condrestart check if server is already running;
then calls start_cpa.

start_cpa, check for executables and other files are valid;
then calls daemon.

daemon:
 86   if CURRENTUSER (set line 51) = USERNAME (set line 40 "qmaestro2")
           Run START_AGENT_CMD
        else
 89   if user is root (CURRENTUSERID set line 52 = ROOTISERID set line50)
        or CURRENTUSER = OWNER (set line 53, creator of this script) then
 90   if USERNAME = "" (NEVER: set line 40 as "qmaestro2")
           Run START_AGENT_CMD
        else
 97     su (as user USERNAME "qmaestro2")
          Run START_AGENT_CMD

So either
1. Must be user qmaestro2 86
2. Must be user root      89
3. Must be creator of script 89
    AND can change user (su) to qmaestro2. 97

Proposed SOLUTION:
How about change line 86

 86)    if [ "$CURRENTUSER" = "$USERNAME" ]; then

to

 86)    if [ "$CURRENTUSER" = "$USERNAME" ] || [ "$CURRENTUSER" -ne "" ]; 
then

You may have issues of the user writting to $OUTFILE
and may need to do something similar in lines 95-96.


Keven Miller


* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *



       1) #!/bin/sh        2) #        3) # tebctl Start up the Common Platform Agent        4) #        5) # chkconfig: 2345 99 01        6) # description: Common Platform Agent        7) #        8) # processname: agent        9)       10) ### BEGIN INIT INFO       11) # Provides: tebctl-tws_cpa_agent_qmaestro2       12) # Required-Start:       13) # Required-Stop:       14) # Should-Start:       15) # Should-Stop:       16) # Default-Start: 2 3 4 5       17) # Default-Stop: 0 1 6       18) # Short-Description: Common Platform Agent tebctl-tws_cpa_agent_qmaestro2       19) # Description: IBM Tivoli Endpoint Management Infrastructure agent tebctl-tws_cpa_agent_qmaestro2       20) ### END INIT INFO       21)       22) # Copyright (c) 2009 IBM       23) # All rights reserved.       24)       25) PATH=/sbin:/usr/sbin:/usr/bin:$PATH       26) export PATH       27) OSName=`uname`       28)       29) case $OSName in       30) SunOS)       31) PATH=/usr/xpg4/bin:$PATH       32) export PATH       33) ;;       34) esac       35)       36) TEBHOME=/maestro/TWS/IBM_I/TWS/ITA/cpa       37) TEBCFGHOME=/maestro/TWS/IBM_I/TWSDATA/ITA/cpa       38) export TEBCFGHOME       39) SERVICENAME=tebctl-tws_cpa_agent_qmaestro2       40) USERNAME=qmaestro2       41)       42) EXEDIR=$TEBHOME/ita       43) CFGDIR=$TEBCFGHOME/ita       44) PROCNAME=agent       45) AGENTSH=$EXEDIR/agent.sh       46) CPASU=$EXEDIR/cpasu       47) STATUSFILE=$EXEDIR/status.info       48) CFGFILE=$CFGDIR/ita.ini       49) OUTFILE=$CFGDIR/native.out       50) ROOTUSERID=0       51) CURRENTUSER=`id -un`       52) CURRENTUSERID=`id -u`       53) OWNER=`ls -l $0 | awk '{print $3}'`       54)       55) if [ "$OSTYPE" = "os400" ]; then       56) #OS400 user names are case insensitive, for comparison convert both to lowercase       57) CURRENTUSER=`echo $CURRENTUSER | tr [:upper:] [:lower:]`       58) USERNAME=`echo $USERNAME | tr [:upper:] [:lower:]`       59) OWNER=`echo $OWNER | tr [:upper:] [:lower:]`       60) SU_CMD=$CPASU       61) START_AGENT_CMD="sh $AGENTSH"       62) else       63) SU_CMD="su -"       64) START_AGENT_CMD=$AGENTSH       65) fi       66)       67) TERMINATETIMEOUT=60       68) RETVAL=0       69)       70)       71) # These functions follow the RedHat Linux convention       72) success()       73) {       74) printf "OK"       75) }       76)       77) failure()       78) {       79) printf "FAILED"       80) }       81)       82) daemon()       83) {       84) #umask 027       85)       86) if [ "$CURRENTUSER" = "$USERNAME" ]; then       87) $START_AGENT_CMD > $OUTFILE 2>&1       88) else       89) if [ "$CURRENTUSERID" = "$ROOTUSERID" ] || [ "$CURRENTUSER" = "$OWNER" ]; then       90) if [ "$USERNAME" = "" ]; then       91) $START_AGENT_CMD > $OUTFILE 2>&1       92) else       93) # assign OUTFILE to the USERNAME otherwise he will not be able to write on it when       94) # he starts the agent       95) echo >> $OUTFILE 2>/dev/null       96) chown $USERNAME $OUTFILE 2>/dev/null       97) $SU_CMD $USERNAME "$START_AGENT_CMD" > $OUTFILE 2>&1       98) fi       99) else      100) # not root or USERNAME.      101) if [ "$OWNER" = "$USERNAME" ]; then      102) echo "Only root or $OWNER can start the agent!"      103) else      104) echo "Only root, $OWNER or $USERNAME can start the agent!"      105) fi      106) failure      107) return 1      108) fi      109) fi      110)      111) sleep 1      112) get_pid      113)      114) if [ $pid -ne 0 ]; then      115) success      116) return 0      117) else      118) failure      119) return 1      120) fi      121) }      122)      123) status()      124) {      125) get_pid      126) if [ $pid -ne 0 ]; then      127) echo "$SERVICENAME agent running"      128) exit 0      129) else      130) echo "$SERVICENAME agent down"      131) exit 1      132) fi      133) }      134)      135) util_inc ()      136) {      137) cntvar=$1      138) val="`eval echo \\$${cntvar}`<file://$$%7bcntvar%7d%60>"      139) eval ${cntvar}=`expr ${val} + 1`      140) }      141)      142)      143) get_pid()      144) {      145) pid=0      146) if [ -f $STATUSFILE ]; then      147) pid=`cat "$STATUSFILE"`      148) if [ "$pid" = "" ]; then      149) pid=0      150) elif [ $pid -ne 0 ]; then      151) #wait 1 second to let process start      152) sleep 1      153) OSname=`uname`      154) if [ "$OSname" = "OS400" ]; then      155) PROCESS=`ps -p $pid | grep $pid | grep -i agent`      156) if [ $? -ne 0 ]; then      157) pid=0      158) fi      159) else      160) PROCESS=`ps -p $pid | grep $pid | awk '{ print $4 }'`      161) if [ "$PROCESS" != "$PROCNAME" ]; then      162) pid=0      163) fi      164) fi      165) fi      166) fi      167) }      168)      169) start_cpa()      170) {      171) if [ -f $CFGFILE -a -x $AGENTSH -a -x $EXEDIR/$PROCNAME ]; then      172) # Run agent and check the return status...      173) cd $EXEDIR      174) printf "Starting $SERVICENAME agent: "      175) daemon      176) RETVAL=$?      177) printf "\n"      178) else      179) echo "$SERVICENAME agent not installed properly"      180) exit 2      181) fi      182) }      183)      184) case "$1" in      185) start_msg)      186) echo "Starting $SERVICENAME daemon"      187) ;;      188)      189) stop_msg)      190) echo "Stopping $SERVICENAME daemon"      191) ;;      192)      193) condrestart)      194) get_pid      195) if [ $pid -ne 0 ] ; then      196) echo "$SERVICENAME is running"      197) exit 0      198) fi      199) start_cpa      200) ;;      201)      202) start)      203) get_pid      204) if [ $pid -ne 0 ] ; then      205) echo "$SERVICENAME already started"      206) exit 0      207) fi      208) start_cpa      209) ;;      210)      211) stop)      212) if [ "$CURRENTUSER" = "$USERNAME" ] || [ "$CURRENTUSERID" = "$ROOTUSERID" ] || [ "$CURRENTUSER" = "$OWNER" ]; then      213) get_pid      214)      215) if [ $pid -ne 0 ]; then      216) printf "Stopping $SERVICENAME Agent (${pid}):"      217) RETVAL=1      218)      219) kill -TERM ${pid}      220)      221) if [ $? -eq 0 ] ; then      222) cnt=0      223) while [ ${cnt} -lt ${TERMINATETIMEOUT} ] ; do      224) printf "."      225) sleep 1      226) ps -p ${pid} > /dev/null 2>&1      227) if [ $? -ne 0 ] ; then      228) break      229) fi      230) util_inc cnt      231) done      232) else      233) rm -f "${STATUSFILE}"      234) fi      235)      236) ps -p ${pid} > /dev/null 2>&1      237) if [ $? -eq 0 ] ; then      238) printf "Timeout\n"      239) printf "Cannot stop $SERVICENAME Agent - killing it..."      240) kill -9 ${pid}      241) sleep 2      242) ps -p ${pid} > /dev/null 2>&1      243) if [ $? -eq 0 ] ; then      244) printf "Cannot kill $SERVICENAME Agent - giving up.\n"      245) RETVAL=0      246) fi      247) fi      248) rm -f "${STATUSFILE}"      249)      250) if [ $RETVAL -eq 1 ] ; then      251) success      252) RETVAL=0      253) else      254) failure      255) RETVAL=1      256) fi      257) printf "\n"      258) fi      259) else      260) # not root or USERNAME.      261) if [ "$OWNER" = "$USERNAME" ]; then      262) echo "Only root or $OWNER can stop the agent!"      263) else      264) echo "Only root, $OWNER or $USERNAME can stop the agent!"      265) fi      266) failure      267) RETVAL=1      268) fi      269) ;;      270)      271) restart)      272) $0 stop      273) $0 start      274) RETVAL=$?      275) ;;      276)      277) status)      278) status      279) RETVAL=$?      280) ;;      281)      282) *)      283) echo "Usage: $0 {start|stop|condrestart|restart|status}"      284) RETVAL=2      285) ;;      286) esac      287) exit $RETVAL * To join/leave the list, search archives, change list settings, * * etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2