Contents of /alx-src/branches/alxconf-060/init.d/alxsetstate
Parent Directory | Revision Log
Revision 3483 -
(show annotations)
(download)
Mon Apr 16 08:42:19 2012 UTC (12 years, 5 months ago) by niro
File size: 3357 byte(s)
Mon Apr 16 08:42:19 2012 UTC (12 years, 5 months 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 | * |