Contents of /mcore-src/trunk/mcore-tools/src/modules/pxeconfig/mcore-pxeconfig.in
Parent Directory | Revision Log
Revision 2868 -
(show annotations)
(download)
Fri Aug 14 05:49:36 2020 UTC (4 years, 1 month ago) by niro
File size: 3678 byte(s)
Fri Aug 14 05:49:36 2020 UTC (4 years, 1 month 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 |