#!/bin/bash #%rlevels: 3:s 4:s 5:s 0:k 6:k #%start: 99 #%stop: 01 #deps #%needs: #%before: #%after: # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/init.d/alxsetstate,v 1.10 2005-10-26 11:57:00 niro Exp $ source /etc/sysconfig/rc source $rc_functions # mysql settings source /etc/alxconfig-ng/config.rc source /usr/lib/alxconfig-ng/functions/mysqlfunctions source /usr/lib/alxconfig-ng/functions/serial_functions # check if mysql is available [ -x /usr/bin/mysql ] && MYSQL_ALX=true # other needed vars ALX_HW_DETECT=false # unset vars which may kill us unset ALX_SERIAL ALX_STATE ALX_IFACE # get current system state if [ -f /etc/alxconfig-ng/state/state ] then source /etc/alxconfig-ng/state/state else ALX_STATE=error fi if [ -f ${SETTINGSPATH}/confd-networking ] then ALX_IFACE="$(< ${SETTINGSPATH}/confd-networking)" fi [[ -z ${ALX_IFACE} ]] && export ALX_IFACE=eth0 # need to put this to an extra init script which will be # executed when the real network is up and not the preliminary. # nice name is alx_connected_state or sth like this set_current_network_state() { local CUR_IP CUR_MAC ID echo -e ${COLMAGENTA}"Register system to database"${COLDEFAULT} CUR_IP=$(/sbin/ifconfig ${ALX_IFACE} | sed -n '/addr:/s/ [^r]*..//gp') CUR_MAC=$(/sbin/ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11) CUR_MTIME=$(date +%s) # validate current serial if ! validate_serial "${ALX_SERIAL}" "${ALX_REG_DATE}" "${CUR_MAC}" then # abort on non valid serial ALX_STATE="invalid serial" echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state show_invalid_serial_msg exit 1 fi # first check if an entry exist with my serial # if it exist update this entry else insert a new one ID=$(mysqldo "select serial from state_connected where serial=${ALX_SERIAL};") if [ -n "${ID}" ] then # run an update # nice status $CURS_UP $SET_WCOL echo "[ U, State: ${ALX_STATE} ]" mysqldo "update state_connected set hostname='${HOSTNAME}', ip='${CUR_IP}', mac='${CUR_MAC}', state='${ALX_STATE}', mtime='${CUR_MTIME}' where serial=${ALX_SERIAL};" else # run an insert # nice status $CURS_UP $SET_WCOL echo "[ N, State: ${ALX_STATE} ]" mysqldo "insert into state_connected( serial, hostname, ip, mac, state, mtime ) values( '${ALX_SERIAL}', '${HOSTNAME}', '${CUR_IP}', '${CUR_MAC}', '${ALX_STATE}', '${CUR_MTIME}' );" fi } # need to put this to an extra init script which will # be executed first when the system is going down. # nice name is alx_connected_state or sth like this unset_alx_connected() { local SQL_OPTS local CUR_MAC CUR_MAC=$(/sbin/ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11) echo -e ${COLMAGENTA}"Unregister system from database"${COLDEFAULT} mysqldo "delete from state_connected where serial='${ALX_SERIAL}' and mac='${CUR_MAC}';" evaluate_retval } ########### starts here ################ # first of all get current system serial if [ -f /etc/alxconfig-ng/serial ] then source /etc/alxconfig-ng/serial else ALX_SERIAL=0 fi case $1 in start) # check if mysql server is reachable # if not abort this script reach_mysql_server || exit 1 set_current_network_state evaluate_retval ;; stop) # check if mysql server is reachable # if not abort this script reach_mysql_server || exit 1 unset_alx_connected evaluate_retval ;; *) echo "Usage: $0 {start|stop} ..." ;; esac