1*c18ec02fSPetter Reinholdtsen#!/bin/sh 2*c18ec02fSPetter Reinholdtsen############################################################################# 3*c18ec02fSPetter Reinholdtsen# 4*c18ec02fSPetter Reinholdtsen# bmc-snmp-proxy: Set SNMP proxy to BMC (Baseboard Management Controller) 5*c18ec02fSPetter Reinholdtsen# 6*c18ec02fSPetter Reinholdtsen# version: 0.6 7*c18ec02fSPetter Reinholdtsen# 8*c18ec02fSPetter Reinholdtsen# Authors: Charles Rose <charles_rose@dell.com> 9*c18ec02fSPetter Reinholdtsen# Jordan Hargrave <jordan_hargrave@dell.com> 10*c18ec02fSPetter Reinholdtsen# 11*c18ec02fSPetter Reinholdtsen# Description: Script to set snmp proxy to the BMC for certain OID 12*c18ec02fSPetter Reinholdtsen# See here for details: 13*c18ec02fSPetter Reinholdtsen# https://fedoraproject.org/wiki/Features/AgentFreeManagement 14*c18ec02fSPetter Reinholdtsen# 15*c18ec02fSPetter Reinholdtsen# Assumptions: This script will work only when /etc/snmp/ is writable. 16*c18ec02fSPetter Reinholdtsen# 17*c18ec02fSPetter Reinholdtsen############################################################################# 18*c18ec02fSPetter Reinholdtsen# GLOBALS 19*c18ec02fSPetter Reinholdtsen############################################################################# 20*c18ec02fSPetter ReinholdtsenSYSCONF_DIR="/etc/sysconfig" 21*c18ec02fSPetter ReinholdtsenCONFIG="${SYSCONF_DIR}/bmc-snmp-proxy" 22*c18ec02fSPetter Reinholdtsen 23*c18ec02fSPetter ReinholdtsenSNMPD_LOCAL_CONF_DIR="/etc/snmp/bmc" 24*c18ec02fSPetter ReinholdtsenSNMPD_LOCAL_CONF="${SNMPD_LOCAL_CONF_DIR}/snmpd.local.conf" 25*c18ec02fSPetter ReinholdtsenTRAPD_LOCAL_CONF="${SNMPD_LOCAL_CONF_DIR}/snmptrapd.local.conf" 26*c18ec02fSPetter Reinholdtsen 27*c18ec02fSPetter ReinholdtsenTRAPD_CONF="/etc/snmp/snmptrapd.conf" 28*c18ec02fSPetter Reinholdtsen 29*c18ec02fSPetter ReinholdtsenLOCKFILE="/var/lock/subsys/bmc-snmp-proxy" 30*c18ec02fSPetter ReinholdtsenBMC_INFO="/var/run/bmc-info" 31*c18ec02fSPetter Reinholdtsen 32*c18ec02fSPetter ReinholdtsenIPMITOOL=`which ipmitool` 33*c18ec02fSPetter Reinholdtsen 34*c18ec02fSPetter Reinholdtsen#Default config 35*c18ec02fSPetter ReinholdtsenBMC_COMMUNITY="public" 36*c18ec02fSPetter ReinholdtsenBMC_OID=".1.3.6.1.4.1.674.10892.2" # Dell iDRAC 37*c18ec02fSPetter ReinholdtsenTRAP_FORWARD="no" 38*c18ec02fSPetter ReinholdtsenRELOAD_SERVICES="yes" 39*c18ec02fSPetter Reinholdtsen 40*c18ec02fSPetter Reinholdtsen############################################################################# 41*c18ec02fSPetter Reinholdtsen 42*c18ec02fSPetter Reinholdtsen#TODO: Use inotify and daemonize when $BMC_INFO changes 43*c18ec02fSPetter Reinholdtsen 44*c18ec02fSPetter Reinholdtsen# source config 45*c18ec02fSPetter Reinholdtsen[ -r ${CONFIG} ] && . ${CONFIG} 46*c18ec02fSPetter Reinholdtsen 47*c18ec02fSPetter Reinholdtsen. gettext.sh 48*c18ec02fSPetter Reinholdtsen 49*c18ec02fSPetter ReinholdtsenSCRIPT_NAME=$(basename $0) 50*c18ec02fSPetter ReinholdtsenRETVAL=0 51*c18ec02fSPetter Reinholdtsen 52*c18ec02fSPetter Reinholdtsen# Check if bmc-info created by exchange-bmc-os-info 53*c18ec02fSPetter Reinholdtsenbmc_info_exists() 54*c18ec02fSPetter Reinholdtsen{ 55*c18ec02fSPetter Reinholdtsen if [ -r "${BMC_INFO}" ]; then 56*c18ec02fSPetter Reinholdtsen . ${BMC_INFO} 57*c18ec02fSPetter Reinholdtsen else 58*c18ec02fSPetter Reinholdtsen RETVAL=2 59*c18ec02fSPetter Reinholdtsen fi 60*c18ec02fSPetter Reinholdtsen return $RETVAL 61*c18ec02fSPetter Reinholdtsen} 62*c18ec02fSPetter Reinholdtsen 63*c18ec02fSPetter Reinholdtsencheck_snmp() 64*c18ec02fSPetter Reinholdtsen{ 65*c18ec02fSPetter Reinholdtsen if [ ! -d /etc/snmp ] && [ ! -x /usr/sbin/snmpd ]; then 66*c18ec02fSPetter Reinholdtsen RETVAL=12 67*c18ec02fSPetter Reinholdtsen fi 68*c18ec02fSPetter Reinholdtsen return $RETVAL 69*c18ec02fSPetter Reinholdtsen} 70*c18ec02fSPetter Reinholdtsen 71*c18ec02fSPetter Reinholdtsen############################################################################# 72*c18ec02fSPetter Reinholdtsen# configure SNMP proxy 73*c18ec02fSPetter Reinholdtsen############################################################################# 74*c18ec02fSPetter Reinholdtsenwrite_snmp_conf() 75*c18ec02fSPetter Reinholdtsen{ 76*c18ec02fSPetter Reinholdtsen # SNMPv3 security: bmcview, bmc_ctx, bmc_sec, bmc_grp, bmc_cmty 77*c18ec02fSPetter Reinholdtsen printf "###############################################\n" 78*c18ec02fSPetter Reinholdtsen printf "# Automatically created by %s #\n" "${SCRIPT_NAME}" 79*c18ec02fSPetter Reinholdtsen printf "###############################################\n" 80*c18ec02fSPetter Reinholdtsen printf "view bmcview included %s 80\n" "${BMC_OID}" 81*c18ec02fSPetter Reinholdtsen printf "com2sec -Cn bmc_ctx bmc_sec default bmc_cmty\n" 82*c18ec02fSPetter Reinholdtsen printf "group bmc_grp v1 bmc_sec\n" 83*c18ec02fSPetter Reinholdtsen printf "access bmc_grp bmc_ctx any noauth exact bmcview none none\n" 84*c18ec02fSPetter Reinholdtsen printf "proxy -Cn bmc_ctx -v 1 %s\n" "${PROXY_TOKEN}" 85*c18ec02fSPetter Reinholdtsen printf "###############################################\n" 86*c18ec02fSPetter Reinholdtsen} 87*c18ec02fSPetter Reinholdtsen 88*c18ec02fSPetter Reinholdtsenvalid_ip() 89*c18ec02fSPetter Reinholdtsen{ 90*c18ec02fSPetter Reinholdtsen #Thanks to mkyong.com 91*c18ec02fSPetter Reinholdtsen octet="([01]?[[:digit:]][[:digit:]]?|2[0-4][[:digit:]]|25[0-5])" 92*c18ec02fSPetter Reinholdtsen 93*c18ec02fSPetter Reinholdtsen printf -- "%s" "${1}"| grep -Eq \ 94*c18ec02fSPetter Reinholdtsen "^${octet}\\.${octet}\\.${octet}\\.${octet}$" 95*c18ec02fSPetter Reinholdtsen return $? 96*c18ec02fSPetter Reinholdtsen} 97*c18ec02fSPetter Reinholdtsen 98*c18ec02fSPetter Reinholdtsencheck_vars() 99*c18ec02fSPetter Reinholdtsen{ 100*c18ec02fSPetter Reinholdtsen [ -z ${BMC_COMMUNITY} ] && BMC_COMMUNITY="public" 101*c18ec02fSPetter Reinholdtsen [ -z ${BMC_OID} ] && return 1 102*c18ec02fSPetter Reinholdtsen 103*c18ec02fSPetter Reinholdtsen if [ -n "${BMC_IPv4}" ] && valid_ip ${BMC_IPv4}; then 104*c18ec02fSPetter Reinholdtsen return 0 105*c18ec02fSPetter Reinholdtsen else 106*c18ec02fSPetter Reinholdtsen return 1 107*c18ec02fSPetter Reinholdtsen fi 108*c18ec02fSPetter Reinholdtsen} 109*c18ec02fSPetter Reinholdtsen 110*c18ec02fSPetter Reinholdtsenset_snmp_proxy() 111*c18ec02fSPetter Reinholdtsen{ 112*c18ec02fSPetter Reinholdtsen if check_vars; then 113*c18ec02fSPetter Reinholdtsen PROXY_TOKEN="-c ${BMC_COMMUNITY} ${BMC_IPv4} ${BMC_OID}" 114*c18ec02fSPetter Reinholdtsen 115*c18ec02fSPetter Reinholdtsen if [ ! -d ${SNMPD_LOCAL_CONF_DIR} ] && \ 116*c18ec02fSPetter Reinholdtsen mkdir ${SNMPD_LOCAL_CONF_DIR}; then 117*c18ec02fSPetter Reinholdtsen write_snmp_conf > ${SNMPD_LOCAL_CONF} 118*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=4 119*c18ec02fSPetter Reinholdtsen fi 120*c18ec02fSPetter Reinholdtsen else 121*c18ec02fSPetter Reinholdtsen RETVAL=3 122*c18ec02fSPetter Reinholdtsen fi 123*c18ec02fSPetter Reinholdtsen} 124*c18ec02fSPetter Reinholdtsen 125*c18ec02fSPetter Reinholdtsen 126*c18ec02fSPetter Reinholdtsenset_snmpd_conf_path() 127*c18ec02fSPetter Reinholdtsen{ 128*c18ec02fSPetter Reinholdtsen for SYSCONF in ${SYSCONF_DIR}/snmp*d; 129*c18ec02fSPetter Reinholdtsen do 130*c18ec02fSPetter Reinholdtsen if grep -q "${SNMPD_LOCAL_CONF_DIR}" "${SYSCONF}" > \ 131*c18ec02fSPetter Reinholdtsen /dev/null 2>&1; then 132*c18ec02fSPetter Reinholdtsen continue 133*c18ec02fSPetter Reinholdtsen else 134*c18ec02fSPetter Reinholdtsen printf "SNMPCONFPATH=%s\n" "${SNMPD_LOCAL_CONF_DIR}" \ 135*c18ec02fSPetter Reinholdtsen >> ${SYSCONF} || RETVAL=7 136*c18ec02fSPetter Reinholdtsen fi 137*c18ec02fSPetter Reinholdtsen done 138*c18ec02fSPetter Reinholdtsen return $RETVAL 139*c18ec02fSPetter Reinholdtsen} 140*c18ec02fSPetter Reinholdtsen 141*c18ec02fSPetter Reinholdtsendisable_snmp_proxy() 142*c18ec02fSPetter Reinholdtsen{ 143*c18ec02fSPetter Reinholdtsen if [ -f ${SNMPD_LOCAL_CONF} ]; then 144*c18ec02fSPetter Reinholdtsen rm -f ${SNMPD_LOCAL_CONF} 145*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=5 146*c18ec02fSPetter Reinholdtsen fi 147*c18ec02fSPetter Reinholdtsen} 148*c18ec02fSPetter Reinholdtsen############################################################################# 149*c18ec02fSPetter Reinholdtsen# Trap Forwarding 150*c18ec02fSPetter Reinholdtsen############################################################################# 151*c18ec02fSPetter Reinholdtsen 152*c18ec02fSPetter Reinholdtsenpick_alert_dest() 153*c18ec02fSPetter Reinholdtsen{ 154*c18ec02fSPetter Reinholdtsen test_ip="$1" 155*c18ec02fSPetter Reinholdtsen for ALERT_DEST in `seq 1 4` 156*c18ec02fSPetter Reinholdtsen do 157*c18ec02fSPetter Reinholdtsen temp_ip=$(${IPMITOOL} lan alert print ${CHANNEL} ${ALERT_DEST}\ 158*c18ec02fSPetter Reinholdtsen 2>/dev/null| sed -n "s#^Alert IP Address.*: ##p") 159*c18ec02fSPetter Reinholdtsen 160*c18ec02fSPetter Reinholdtsen [ "${temp_ip}" = "${test_ip}" ] && return 0 161*c18ec02fSPetter Reinholdtsen done 162*c18ec02fSPetter Reinholdtsen return 1 163*c18ec02fSPetter Reinholdtsen} 164*c18ec02fSPetter Reinholdtsen 165*c18ec02fSPetter Reinholdtsenset_alert_dest_ip() 166*c18ec02fSPetter Reinholdtsen{ 167*c18ec02fSPetter Reinholdtsen ${IPMITOOL} lan alert set ${CHANNEL} ${ALERT_DEST} ipaddr ${1} \ 168*c18ec02fSPetter Reinholdtsen retry 4 type pet >/dev/null 2>&1 169*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=8 170*c18ec02fSPetter Reinholdtsen} 171*c18ec02fSPetter Reinholdtsen 172*c18ec02fSPetter Reinholdtsenbmc_alert_dest() 173*c18ec02fSPetter Reinholdtsen{ 174*c18ec02fSPetter Reinholdtsen # Pick the first active LAN channel 175*c18ec02fSPetter Reinholdtsen for CHANNEL in `seq 1 14` 176*c18ec02fSPetter Reinholdtsen do 177*c18ec02fSPetter Reinholdtsen [ $(${IPMITOOL} -I open channel info ${CHANNEL} 2>/dev/null \ 178*c18ec02fSPetter Reinholdtsen | grep -q "802\.3") ] || break 179*c18ec02fSPetter Reinholdtsen done 180*c18ec02fSPetter Reinholdtsen 181*c18ec02fSPetter Reinholdtsen # If TRAPD_IP is already set as an alert dest, 182*c18ec02fSPetter Reinholdtsen if pick_alert_dest "${TRAPD_IP}"; then 183*c18ec02fSPetter Reinholdtsen # reset: reset it if we are called with reset 184*c18ec02fSPetter Reinholdtsen [ "${1}" = "reset" ] && \ 185*c18ec02fSPetter Reinholdtsen set_alert_dest_ip "0.0.0.0" 186*c18ec02fSPetter Reinholdtsen # else, find the next free alert dest, 187*c18ec02fSPetter Reinholdtsen elif pick_alert_dest "0.0.0.0"; then 188*c18ec02fSPetter Reinholdtsen [ "${1}" = "reset" ] && \ 189*c18ec02fSPetter Reinholdtsen return $RETVAL 190*c18ec02fSPetter Reinholdtsen # set: the TRAPD_IP 191*c18ec02fSPetter Reinholdtsen set_alert_dest_ip "${TRAPD_IP}" 192*c18ec02fSPetter Reinholdtsen else 193*c18ec02fSPetter Reinholdtsen # No free alert destinations 194*c18ec02fSPetter Reinholdtsen RETVAL=9 195*c18ec02fSPetter Reinholdtsen fi 196*c18ec02fSPetter Reinholdtsen return $RETVAL 197*c18ec02fSPetter Reinholdtsen} 198*c18ec02fSPetter Reinholdtsen 199*c18ec02fSPetter Reinholdtsenset_ipmi_alert() 200*c18ec02fSPetter Reinholdtsen{ 201*c18ec02fSPetter Reinholdtsen ${IPMITOOL} lan set ${CHANNEL} alert "${1}" >/dev/null 2>&1 202*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=10 203*c18ec02fSPetter Reinholdtsen} 204*c18ec02fSPetter Reinholdtsen 205*c18ec02fSPetter Reinholdtsenget_host_ip() 206*c18ec02fSPetter Reinholdtsen{ 207*c18ec02fSPetter Reinholdtsen # Get host's IP that the BMC can reach. 208*c18ec02fSPetter Reinholdtsen IFACE=$(/usr/sbin/ip -o -f inet address |awk '!/: lo/ {print $2}') 209*c18ec02fSPetter Reinholdtsen for dev in ${IFACE} 210*c18ec02fSPetter Reinholdtsen do 211*c18ec02fSPetter Reinholdtsen ping -c 1 -I ${dev} ${BMC_IPv4} > /dev/null 2>&1 212*c18ec02fSPetter Reinholdtsen done 213*c18ec02fSPetter Reinholdtsen} 214*c18ec02fSPetter Reinholdtsen 215*c18ec02fSPetter Reinholdtsenconfig_bmc_alert() 216*c18ec02fSPetter Reinholdtsen{ 217*c18ec02fSPetter Reinholdtsen # Get Host's IP that the BMC can send traps to 218*c18ec02fSPetter Reinholdtsen TRAPD_IP=$(get_host_ip) 219*c18ec02fSPetter Reinholdtsen 220*c18ec02fSPetter Reinholdtsen # Set Host's IP as the alert destination in the BMC 221*c18ec02fSPetter Reinholdtsen valid_ip ${TRAPD_IP} && bmc_alert_dest "${ACTION}" 222*c18ec02fSPetter Reinholdtsen 223*c18ec02fSPetter Reinholdtsen # Enable alerting on the LAN channel 224*c18ec02fSPetter Reinholdtsen [ $RETVAL -eq 0 ] && set_ipmi_alert "${ACTION}" 225*c18ec02fSPetter Reinholdtsen} 226*c18ec02fSPetter Reinholdtsen 227*c18ec02fSPetter Reinholdtsenwrite_trapd_conf() 228*c18ec02fSPetter Reinholdtsen{ 229*c18ec02fSPetter Reinholdtsen printf "###############################################\n" 230*c18ec02fSPetter Reinholdtsen printf "# Automatically created by %s #\n" "${SCRIPT_NAME}" 231*c18ec02fSPetter Reinholdtsen printf "forward %s %s\n" "${BMC_OID}*" "${FORWARD_HOST}" 232*c18ec02fSPetter Reinholdtsen printf "###############################################\n" 233*c18ec02fSPetter Reinholdtsen} 234*c18ec02fSPetter Reinholdtsen 235*c18ec02fSPetter Reinholdtsenconfig_trapd() 236*c18ec02fSPetter Reinholdtsen{ 237*c18ec02fSPetter Reinholdtsen # Proceed only if snmptrapd is available on the system 238*c18ec02fSPetter Reinholdtsen if [ -f ${TRAPD_CONF} ]; then 239*c18ec02fSPetter Reinholdtsen write_trapd_conf > ${TRAPD_LOCAL_CONF} 240*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=11 241*c18ec02fSPetter Reinholdtsen else 242*c18ec02fSPetter Reinholdtsen return 1 243*c18ec02fSPetter Reinholdtsen fi 244*c18ec02fSPetter Reinholdtsen} 245*c18ec02fSPetter Reinholdtsen 246*c18ec02fSPetter Reinholdtsentrap_sink_exists() 247*c18ec02fSPetter Reinholdtsen{ 248*c18ec02fSPetter Reinholdtsen # TODO: We only set the first match. We should be able to set 249*c18ec02fSPetter Reinholdtsen # multiple 250*c18ec02fSPetter Reinholdtsen FORWARD_HOST=$(awk '/^trap.*sink/{print $2}; /^informsink/{print $2}' \ 251*c18ec02fSPetter Reinholdtsen /etc/snmp/snmpd*conf | head -1) 252*c18ec02fSPetter Reinholdtsen if [ -z "${FORWARD_HOST}" ]; then 253*c18ec02fSPetter Reinholdtsen # there is no trapsink setup. 254*c18ec02fSPetter Reinholdtsen return 1 255*c18ec02fSPetter Reinholdtsen else 256*c18ec02fSPetter Reinholdtsen return 0 257*c18ec02fSPetter Reinholdtsen fi 258*c18ec02fSPetter Reinholdtsen} 259*c18ec02fSPetter Reinholdtsen 260*c18ec02fSPetter Reinholdtsen# Forward SNMP traps from the BMC to trapsink. 261*c18ec02fSPetter Reinholdtsentrap_forward() 262*c18ec02fSPetter Reinholdtsen{ 263*c18ec02fSPetter Reinholdtsen NO_TRAP=0 264*c18ec02fSPetter Reinholdtsen ACTION=${1} # set or reset 265*c18ec02fSPetter Reinholdtsen 266*c18ec02fSPetter Reinholdtsen if [ "${ACTION}" = "set" ]; then 267*c18ec02fSPetter Reinholdtsen # Get trapd config, 268*c18ec02fSPetter Reinholdtsen if trap_sink_exists; then 269*c18ec02fSPetter Reinholdtsen config_trapd && config_bmc_alert 270*c18ec02fSPetter Reinholdtsen else 271*c18ec02fSPetter Reinholdtsen # exit silently if there is no sink 272*c18ec02fSPetter Reinholdtsen NO_TRAP=1 273*c18ec02fSPetter Reinholdtsen fi 274*c18ec02fSPetter Reinholdtsen else 275*c18ec02fSPetter Reinholdtsen if [ -f ${TRAPD_LOCAL_CONF} ]; then 276*c18ec02fSPetter Reinholdtsen rm -f ${TRAPD_LOCAL_CONF} >/dev/null 2>&1 277*c18ec02fSPetter Reinholdtsen else 278*c18ec02fSPetter Reinholdtsen NO_TRAP=1 279*c18ec02fSPetter Reinholdtsen fi 280*c18ec02fSPetter Reinholdtsen fi 281*c18ec02fSPetter Reinholdtsen} 282*c18ec02fSPetter Reinholdtsen 283*c18ec02fSPetter Reinholdtsen############################################################################# 284*c18ec02fSPetter Reinholdtsenservice_reload() 285*c18ec02fSPetter Reinholdtsen{ 286*c18ec02fSPetter Reinholdtsen #TODO: do this in systemd 287*c18ec02fSPetter Reinholdtsen if [ ${RETVAL} -eq 0 ] && [ "${RELOAD_SERVICES}" = "yes" ]; then 288*c18ec02fSPetter Reinholdtsen service $1 reload 289*c18ec02fSPetter Reinholdtsen [ $? -ne 0 ] && RETVAL=6 290*c18ec02fSPetter Reinholdtsen fi 291*c18ec02fSPetter Reinholdtsen return 292*c18ec02fSPetter Reinholdtsen} 293*c18ec02fSPetter Reinholdtsen 294*c18ec02fSPetter Reinholdtsen############################################################################# 295*c18ec02fSPetter Reinholdtsenstart() 296*c18ec02fSPetter Reinholdtsen{ 297*c18ec02fSPetter Reinholdtsen if bmc_info_exists && check_snmp; then 298*c18ec02fSPetter Reinholdtsen touch ${LOCKFILE} 299*c18ec02fSPetter Reinholdtsen set_snmpd_conf_path && set_snmp_proxy 300*c18ec02fSPetter Reinholdtsen [ $RETVAL -eq 0 ] && service_reload snmpd 301*c18ec02fSPetter Reinholdtsen 302*c18ec02fSPetter Reinholdtsen if [ "${TRAP_FORWARD}" = "yes" ]; then 303*c18ec02fSPetter Reinholdtsen trap_forward "set" 304*c18ec02fSPetter Reinholdtsen [ $RETVAL -eq 0 ] && [ $NO_TRAP -eq 0 ] && \ 305*c18ec02fSPetter Reinholdtsen service_reload snmptrapd 306*c18ec02fSPetter Reinholdtsen fi 307*c18ec02fSPetter Reinholdtsen fi 308*c18ec02fSPetter Reinholdtsen} 309*c18ec02fSPetter Reinholdtsen 310*c18ec02fSPetter Reinholdtsen############################################################################# 311*c18ec02fSPetter Reinholdtsenstop() 312*c18ec02fSPetter Reinholdtsen{ 313*c18ec02fSPetter Reinholdtsen [ ! -f ${LOCKFILE} ] && return 314*c18ec02fSPetter Reinholdtsen if bmc_info_exists && check_snmp; then 315*c18ec02fSPetter Reinholdtsen disable_snmp_proxy 316*c18ec02fSPetter Reinholdtsen [ $RETVAL -eq 0 ] && service_reload snmpd 317*c18ec02fSPetter Reinholdtsen 318*c18ec02fSPetter Reinholdtsen if [ "${TRAP_FORWARD}" = "yes" ]; then 319*c18ec02fSPetter Reinholdtsen trap_forward "reset" 320*c18ec02fSPetter Reinholdtsen [ $RETVAL -eq 0 ] && [ $NO_TRAP -eq 0 ] && \ 321*c18ec02fSPetter Reinholdtsen service_reload snmptrapd 322*c18ec02fSPetter Reinholdtsen fi 323*c18ec02fSPetter Reinholdtsen rm -f ${LOCKFILE} 324*c18ec02fSPetter Reinholdtsen fi 325*c18ec02fSPetter Reinholdtsen} 326*c18ec02fSPetter Reinholdtsen 327*c18ec02fSPetter Reinholdtsen############################################################################# 328*c18ec02fSPetter Reinholdtsenstatus() 329*c18ec02fSPetter Reinholdtsen{ 330*c18ec02fSPetter Reinholdtsen eval_gettext "${SCRIPT_NAME}: snmp proxy to BMC is " 331*c18ec02fSPetter Reinholdtsen # Checking for lockfile is better. 332*c18ec02fSPetter Reinholdtsen #if grep -q "^proxy" "${SNMPD_LOCAL_CONF}" > /dev/null 2>&1 ; then 333*c18ec02fSPetter Reinholdtsen if [ -f ${LOCKFILE} ]; then 334*c18ec02fSPetter Reinholdtsen eval_gettext "set" 335*c18ec02fSPetter Reinholdtsen else 336*c18ec02fSPetter Reinholdtsen eval_gettext "not set" 337*c18ec02fSPetter Reinholdtsen fi 338*c18ec02fSPetter Reinholdtsen echo 339*c18ec02fSPetter Reinholdtsen RETVAL=0 340*c18ec02fSPetter Reinholdtsen} 341*c18ec02fSPetter Reinholdtsen 342*c18ec02fSPetter Reinholdtsen############################################################################# 343*c18ec02fSPetter Reinholdtsenusage() 344*c18ec02fSPetter Reinholdtsen{ 345*c18ec02fSPetter Reinholdtsen eval_gettext "Usage: $0 {start|stop|status}"; echo 1>&2 346*c18ec02fSPetter Reinholdtsen RETVAL=1 347*c18ec02fSPetter Reinholdtsen} 348*c18ec02fSPetter Reinholdtsen 349*c18ec02fSPetter Reinholdtsen############################################################################# 350*c18ec02fSPetter Reinholdtsen# MAIN 351*c18ec02fSPetter Reinholdtsen############################################################################# 352*c18ec02fSPetter Reinholdtsencase "$1" in 353*c18ec02fSPetter Reinholdtsen start) start ;; 354*c18ec02fSPetter Reinholdtsen stop) stop ;; 355*c18ec02fSPetter Reinholdtsen status) status ;; 356*c18ec02fSPetter Reinholdtsen *) usage ;; 357*c18ec02fSPetter Reinholdtsenesac 358*c18ec02fSPetter Reinholdtsen 359*c18ec02fSPetter Reinholdtsencase "$RETVAL" in 360*c18ec02fSPetter Reinholdtsen 0|1) ;; 361*c18ec02fSPetter Reinholdtsen 2) eval_gettext "${SCRIPT_NAME}: failed to read ${BMC_INFO} " 1>&2 ;; 362*c18ec02fSPetter Reinholdtsen 3) eval_gettext "${SCRIPT_NAME}: failed to get proxy config." 1>&2 ;; 363*c18ec02fSPetter Reinholdtsen 4) eval_gettext "${SCRIPT_NAME}: failed to set ${SNMPD_LOCAL_CONF}." 1>&2 ;; 364*c18ec02fSPetter Reinholdtsen 5) eval_gettext "${SCRIPT_NAME}: failed to disable snmp proxy." 1>&2 ;; 365*c18ec02fSPetter Reinholdtsen 6) eval_gettext "${SCRIPT_NAME}: failed to reload snmpd." 1>&2 ;; 366*c18ec02fSPetter Reinholdtsen 7) eval_gettext "${SCRIPT_NAME}: failed to update ${SYSCONF}." 1>&2 ;; 367*c18ec02fSPetter Reinholdtsen 8) eval_gettext "${SCRIPT_NAME}: failed to set IPMI alert dest." 1>&2 ;; 368*c18ec02fSPetter Reinholdtsen 9) eval_gettext "${SCRIPT_NAME}: no free IPMI alert dest." 1>&2 ;; 369*c18ec02fSPetter Reinholdtsen 10) eval_gettext "${SCRIPT_NAME}: failed to set IPMI PEF." 1>&2 ;; 370*c18ec02fSPetter Reinholdtsen 11) eval_gettext "${SCRIPT_NAME}: failed to write snmptrapd.conf." 1>&2 ;; 371*c18ec02fSPetter Reinholdtsen 12) eval_gettext "${SCRIPT_NAME}: snmpd not found." 1>&2 ;; 372*c18ec02fSPetter Reinholdtsen *) eval_gettext "${SCRIPT_NAME}: unknown error." 1>&2 ;; 373*c18ec02fSPetter Reinholdtsenesac 374*c18ec02fSPetter Reinholdtsen 375*c18ec02fSPetter Reinholdtsenif [ ${RETVAL} -gt 1 ]; then 376*c18ec02fSPetter Reinholdtsen eval_gettext " Return code: ${RETVAL}"; echo 377*c18ec02fSPetter Reinholdtsenfi 378*c18ec02fSPetter Reinholdtsenexit ${RETVAL} 379*c18ec02fSPetter Reinholdtsen############################################################################# 380*c18ec02fSPetter Reinholdtsen# end of file 381*c18ec02fSPetter Reinholdtsen############################################################################# 382