Magellan Linux

Contents of /alx-src/branches/alxconf-060/init.d/alxsetstate

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3483 - (show annotations) (download)
Mon Apr 16 08:42:19 2012 UTC (12 years ago) by niro
File size: 3357 byte(s)
-updated to actual codingstyle
1 #!/bin/bash
2 # $Id$
3
4 #%rlevels: 3:s 0:k
5 #%start: 99
6 #%stop: 01
7
8 #deps
9 #%needs:
10 #%before:
11 #%after:
12
13 source /etc/conf.d/rc
14 source $rc_functions
15
16 # mysql settings
17 source /etc/alxconfig-ng/config.rc
18 # helper functions
19 source ${ALX_FUNCTIONS}/mysqlfunctions
20 source ${ALX_FUNCTIONS}/serial_functions
21 source ${ALX_FUNCTIONS}/common
22
23 # unset vars which may kill us
24 unset ALX_SERIAL ALX_STATE ALX_IFACE
25
26 # get current system state
27 if [ -f /etc/alxconfig-ng/state/state ]
28 then
29 source /etc/alxconfig-ng/state/state
30 else
31 ALX_STATE=error
32 fi
33
34 if [ -f ${SETTINGSPATH}/confd-networking ]
35 then
36 ALX_IFACE="$(< ${SETTINGSPATH}/confd-networking)"
37 fi
38 [[ -z ${ALX_IFACE} ]] && export ALX_IFACE=eth0
39
40 # need to put this to an extra init script which will be
41 # executed when the real network is up and not the preliminary.
42 # nice name is alx_connected_state or sth like this
43 set_current_network_state()
44 {
45 local cur_ip cur_mac cur_mtime id
46
47 rc_mecho "Register system to database"
48
49 cur_ip=$(/sbin/ifconfig ${ALX_IFACE} | sed -n '/addr:/s/ [^r]*..//gp')
50 cur_mac=$(/sbin/ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11)
51 cur_mtime=$(date +%s)
52
53 # validate current serial
54 if ! validate_serial "${ALX_SERIAL}" "${ALX_REG_DATE}" "${cur_mac}"
55 then
56 # abort on non valid serial
57 ALX_STATE="invalid serial"
58 local CONFIG="/etc/alxconfig-ng/state/state"
59 clearconfig
60 addconfig "ALX_STATE=\"${ALX_STATE}\""
61 show_invalid_serial_msg
62 exit 1
63 fi
64
65 # first check if an entry exist with my serial
66 # if it exist update this entry else insert a new one
67 id=$(mysqldo "select serial from state_connected where serial=${ALX_SERIAL};")
68
69 if [[ -n ${id} ]]
70 then
71 # run an update
72
73 # nice status
74 $CURS_UP
75 $SET_WCOL
76 rc_echo "[ SN: ${ALX_SERIAL}, U, ${ALX_STATE} ]"
77
78 mysqldo "update state_connected set
79 hostname='${HOSTNAME}',
80 ip='${cur_ip}',
81 mac='${cur_mac}',
82 state='${ALX_STATE}',
83 mtime='${cur_mtime}'
84 where serial=${ALX_SERIAL};"
85 else
86 # run an insert
87
88 # nice status
89 $CURS_UP
90 $SET_WCOL
91 rc_echo "[ SN: ${ALX_SERIAL}, N, ${ALX_STATE} ]"
92
93 mysqldo "insert into state_connected(
94 serial,
95 hostname,
96 ip,
97 mac,
98 state,
99 mtime
100 )
101 values(
102 '${ALX_SERIAL}',
103 '${HOSTNAME}',
104 '${cur_ip}',
105 '${cur_mac}',
106 '${ALX_STATE}',
107 '${cur_mtime}'
108 );"
109 fi
110 }
111
112 # need to put this to an extra init script which will
113 # be executed first when the system is going down.
114 # nice name is alx_connected_state or sth like this
115 unset_alx_connected()
116 {
117 local cur_mac
118 cur_mac=$(/sbin/ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11)
119
120 rc_mecho "Unregister system from database"
121
122 # nice status
123 $CURS_UP
124 $SET_WCOL
125 rc_echo "[ SN: ${ALX_SERIAL} ]"
126
127 mysqldo "delete from state_connected where serial='${ALX_SERIAL}' and mac='${cur_mac}';"
128 evaluate_retval
129 }
130
131 ########### starts here ################
132
133 # first of all get current system serial
134 if [ -f /etc/alxconfig-ng/serial ]
135 then
136 source /etc/alxconfig-ng/serial
137 else
138 ALX_SERIAL=0
139 fi
140
141 case $1 in
142 start)
143 # check if mysql server is reachable
144 # if not abort this script
145 reach_mysql_server || exit 1
146
147 set_current_network_state
148 evaluate_retval
149 ;;
150
151 stop)
152 # check if mysql server is reachable
153 # if not abort this script
154 reach_mysql_server || exit 1
155
156 unset_alx_connected
157 evaluate_retval
158 ;;
159
160 *)
161 rc_echo "Usage: $0 {start|stop} ..."
162 ;;
163 esac

Properties

Name Value
svn:executable *