Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/modules/pxeconfig/mcore-pxeconfig.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2868 - (show annotations) (download)
Fri Aug 14 05:49:36 2020 UTC (3 years, 8 months ago) by niro
File size: 3678 byte(s)
-add support for bootsubdir variable
1 #!/bin/bash
2
3 MCORE_LIBDIR="@@MCORE_LIBDIR@@"
4 source @@SYSCONFDIR@@/mcore/mcore.conf
5 source @@SYSCONFDIR@@/mcore/control.conf
6 source ${MCORE_LIBDIR}/include/common.global.class
7 source ${MCORE_LIBDIR}/include/daemon.global.class
8 source ${MCORE_LIBDIR}/include/mysqlfunctions.global.class
9
10 TFTP_DIRECTORY="@@TFTP_DIRECTORY@@"
11
12 create_pxe_config()
13 {
14 local locations
15 local loc
16 local client_locations_location
17 local client_locations_bootserver
18 local client_locations_bootsubdir
19 local client_locations_controlserver
20 local client_locations_pxe_default_entry
21 local client_locations_pxe_prompt
22 local client_locations_pxe_timeout
23 local client_locations_set_default
24
25 # cleanup
26 find ${TFTP_DIRECTORY} -name lpxelinux-default-\* | xargs --no-run-if-empty rm
27 [[ -L ${TFTP_DIRECTORY}/default ]] && rm ${TFTP_DIRECTORY}/default
28
29 locations=$(mysqldo "select location from client_locations where enabled='1';")
30 for loc in ${locations}
31 do
32 evaluate_table_xml client_locations "where location='${loc}'"
33
34 # fallback to honor old database versions in transition phase of the upgrade
35 if [[ -z ${client_locations_bootserver} ]] || [[ ${client_locations_bootserver} = NULL ]]
36 then
37 client_locations_bootserver="${client_locations_controlserver}"
38 fi
39
40 # fallback subdir
41 if [[ ${client_locations_bootsubdir} = NULL ]]
42 then
43 client_locations_bootsubdir=""
44 fi
45 # fallback subdir
46 if [[ -n ${client_locations_bootsubdir} ]] && [[ ${client_locations_bootsubdir:0:1} != / ]]
47 then
48 client_locations_bootsubdir="/${client_locations_bootsubdir}"
49 fi
50
51 sed \
52 -e "s:@@DEFAULTENTRY@@:${client_locations_pxe_default_entry}:g" \
53 -e "s:@@TIMEOUT@@:${client_locations_pxe_timeout}:g" \
54 -e "s:@@PROMPT@@:${client_locations_pxe_prompt}:g" \
55 -e "s:@@BOOTSERVER@@:${client_locations_bootserver}:g" \
56 -e "s:@@BOOTSUBDIR@@:${client_locations_bootsubdir}:g" \
57 -e "s:@@CONTROLSERVER@@:${client_locations_controlserver}:g" \
58 -e "s:@@LOCATION@@:${client_locations_location}:g" \
59 \
60 "${TFTP_DIRECTORY}"/lpxelinux-skeleton \
61 > "${TFTP_DIRECTORY}"/lpxelinux-default-"${client_locations_location}"
62
63 if [[ ${client_locations_set_default} = 1 ]]
64 then
65 ln -snf lpxelinux-default-"${client_locations_location}" "${TFTP_DIRECTORY}"/default
66 fi
67 done
68 }
69
70 update_pxe_clients()
71 {
72 local i
73 local ids
74 local serial
75 local config
76
77 # remove all client symlinks and files
78 # 01- is the prefix identifier of the pxe/tftpd server for mac adresses
79 find ${TFTP_DIRECTORY} -name 01-\* -type l -o -name 01-\* -type f | xargs --no-run-if-empty rm
80
81 ids=$(mysqldo "select serial from client_serials where enabled='1' and location <> '';")
82 for serial in ${ids}
83 do
84 evaluate_table_xml client_serials "where serial='${serial}'"
85 evaluate_table_xml client_boot "where serial='${serial}'"
86 if [[ -n ${client_serials_mac} ]]
87 then
88 # 01- is the prefix identifier of the pxe/tftpd server for mac adresses
89 config="${TFTP_DIRECTORY}/01-${client_serials_mac//:/-}"
90 # do not symlink if an individual config is requested
91 if [[ -n ${client_boot_cmdline} ]] && [[ ${client_boot_cmdline} != NULL ]]
92 then
93 echo "Using an individual configuration for '${config}'"
94 sed -e "s:^\([[:space:]]append .*\):\1 ${client_boot_cmdline}:" \
95 ${TFTP_DIRECTORY}/lpxelinux-default-"${client_serials_location}" > "${config}"
96 else
97 ln -snf lpxelinux-default-"${client_serials_location}" "${config}"
98 fi
99 fi
100 done
101 }
102
103 case $1 in
104 create-config) create_pxe_config ;;
105 # keep symlink-clients for compat reasons atm
106 symlink-clients|update-clients) update_pxe_clients ;;
107 *) echo "Unknown command, user either 'create-config' or 'update|symlink-clients'"; exit 1 ;;
108 esac