- Timestamp:
- 06/16/10 20:08:51 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/linuxmuster-base/branches/testing/share/scripts/wimport.sh
r666 r762 38 38 # check for unique entry 39 39 check_unique() { 40 local found=""41 local s42 for s in $2; do43 if [ "$s" = "$1" ]; then44 [ -n "$found" ] && return 145 found=yes46 fi47 done48 return 040 local found="" 41 local s 42 for s in $2; do 43 if [ "$s" = "$1" ]; then 44 [ -n "$found" ] && return 1 45 found=yes 46 fi 47 done 48 return 0 49 49 } 50 50 51 51 # cancel with message 52 52 exitmsg() { 53 echo "$1"54 rm $WDATATMP55 rm -f $locker56 RC=157 exit $RC53 echo "$1" 54 rm $WDATATMP 55 rm -f $locker 56 RC=1 57 exit $RC 58 58 } 59 59 60 60 # checking for valid host/machine account 61 61 check_account() { 62 echo "$HOSTS_LDAP" | grep -qw "$hostname" || return 163 echo "$MACHINES_LDAP" | grep -qw "${hostname}\\$" || return 164 echo "$HOSTS_DB" | grep -qw "$hostname" || return 165 echo "$MACHINES_DB" | grep -qw "${hostname}\\$" || return 166 return 062 echo "$HOSTS_LDAP" | grep -qw "$hostname" || return 1 63 echo "$MACHINES_LDAP" | grep -qw "${hostname}\\$" || return 1 64 echo "$HOSTS_DB" | grep -qw "$hostname" || return 1 65 echo "$MACHINES_DB" | grep -qw "${hostname}\\$" || return 1 66 return 0 67 67 } 68 68 … … 85 85 return 1 86 86 fi 87 if [ -e "$SOPHOMORIXLOCK" ]; then 88 echo "Fatal! Sophomorix lockfile $SOPHOMORIXLOCK detected!" 89 return 1 90 fi 91 echo -n " * Creating exam account $hostname ... " 92 if sophomorix-useradd --examaccount $hostname --unix-group $room 2>> $TMPLOG 1>> $TMPLOG; then 93 echo "Ok!" 94 else 95 echo "sophomorix error!" 96 return 1 97 fi 98 echo -n " * Setting random password for $hostname ... " 99 if sophomorix-passwd -u $hostname --pass $HOST_PASSWORD 2>> $TMPLOG 1>> $TMPLOG; then 100 echo "Ok!" 101 else 102 echo "sophomorix error!" 103 return 1 104 fi 105 [ -d "$WSHOME/$room/$hostname" ] || mkdir -p $WSHOME/$room/$hostname 106 chown $hostname:$TEACHERSGROUP $WSHOME/$room/$hostname 107 chmod 775 $WSHOME/$room/$hostname 108 if [ "$QUOTA" = "yes" ]; then 109 echo -n " * Setting quota for $hostname ... " 110 if sophomorix-quota -u $hostname 2>> $TMPLOG 1>> $TMPLOG; then 111 echo "Ok!" 112 else 113 echo "sophomorix error!" 114 return 1 115 fi 116 fi 117 echo -n " * Creating machine account ${hostname}$ ... " 118 if sophomorix-useradd --computer ${hostname}$ 2>> $TMPLOG 1>> $TMPLOG; then 119 echo "Ok!" 120 else 121 echo "sophomorix error!" 122 return 1 123 fi 124 echo -n " * Setting machine password for ${hostname}$ ... " 125 if sophomorix-passwd --force -u ${hostname}$ --pass $MACHINE_PASSWORD 2>> $TMPLOG 1>> $TMPLOG; then 126 echo "Ok!" 127 else 128 echo "sophomorix error!" 129 return 1 130 fi 87 if [ -e "$SOPHOMORIXLOCK" ]; then 88 echo "Fatal! Sophomorix lockfile $SOPHOMORIXLOCK detected!" 89 return 1 90 fi 91 echo -n " * Creating exam account $hostname ... " 92 if sophomorix-useradd --examaccount $hostname --unix-group $room 2>> $TMPLOG 1>> $TMPLOG; then 93 echo "Ok!" 94 else 95 echo "sophomorix error!" 96 return 1 97 fi 98 if ! sophomorix-passwd -u $hostname --pass $HOST_PASSWORD 2>> $TMPLOG 1>> $TMPLOG; then 99 echo " * Error: Cannot set password for $hostname!" 100 return 1 101 fi 102 [ -d "$WSHOME/$room/$hostname" ] || mkdir -p $WSHOME/$room/$hostname 103 chown $hostname:$TEACHERSGROUP $WSHOME/$room/$hostname 104 chmod 775 $WSHOME/$room/$hostname 105 if [ "$QUOTA" = "yes" ]; then 106 echo -n " * Setting quota for $hostname ... " 107 if sophomorix-quota -u $hostname 2>> $TMPLOG 1>> $TMPLOG; then 108 echo "Ok!" 109 else 110 echo "sophomorix error!" 111 return 1 112 fi 113 fi 114 echo -n " * Creating machine account ${hostname}$ ... " 115 if sophomorix-useradd --computer ${hostname}$ 2>> $TMPLOG 1>> $TMPLOG; then 116 echo "Ok!" 117 else 118 echo "sophomorix error!" 119 return 1 120 fi 131 121 } 132 122 133 123 # remove workstation and machine accounts 134 124 remove_account() { 135 if [ -e "$SOPHOMORIXLOCK" ]; then136 echo "Fatal! Sophomorix lockfile $SOPHOMORIXLOCK detected!"137 return 1138 fi139 echo -n " * Removing exam account $hostname ... "140 if sophomorix-kill --killuser $hostname 2>> $TMPLOG 1>> $TMPLOG; then125 if [ -e "$SOPHOMORIXLOCK" ]; then 126 echo "Fatal! Sophomorix lockfile $SOPHOMORIXLOCK detected!" 127 return 1 128 fi 129 echo -n " * Removing exam account $hostname ... " 130 if sophomorix-kill --killuser $hostname 2>> $TMPLOG 1>> $TMPLOG; then 141 131 [ -d "$i" ] && rm -rf $i 2>> $TMPLOG 1>> $TMPLOG 142 echo "Ok!"143 else144 echo "sophomorix error!"145 return 1146 fi147 echo -n " * Removing machine account ${hostname}$ ... "148 if sophomorix-kill --killuser ${hostname}$ 2>> $TMPLOG 1>> $TMPLOG; then149 echo "Ok!"150 else151 echo "sophomorix error!"152 return 1153 fi132 echo "Ok!" 133 else 134 echo "sophomorix error!" 135 return 1 136 fi 137 echo -n " * Removing machine account ${hostname}$ ... " 138 if sophomorix-kill --killuser ${hostname}$ 2>> $TMPLOG 1>> $TMPLOG; then 139 echo "Ok!" 140 else 141 echo "sophomorix error!" 142 return 1 143 fi 154 144 } 155 145 156 146 # remove room or host from $PRINTERS 157 147 remove_printeraccess() { 158 local toremove=$1159 local PRINTERSTMP=/var/tmp/printers.$$160 [ -e "$PRINTERSTMP" ] && rm -rf $PRINTERSTMP161 echo " * Removing $toremove from $PRINTERS ..."162 while read line; do163 if [ "${line:0:1}" = "#" ]; then164 echo "$line" >> $PRINTERSTMP165 continue166 fi167 if ! echo "$line" | grep -qw $toremove; then168 echo "$line" >> $PRINTERSTMP169 continue170 fi171 printer=`echo $line | awk '{ print $1 }'`172 [ -z "$printer" ] && continue173 roomlist=`echo $line | awk '{ print $2 }'`174 [ -z "$roomlist" ] && continue175 hostlist=`echo $line | awk '{ print $3 }'`176 roomlist=${roomlist/$toremove/}177 roomlist=${roomlist//,,/,}178 roomlist=${roomlist%,}179 roomlist=${roomlist#,}180 [ -z "$roomlist" ] && roomlist="-"181 hostlist=${hostlist/$toremove/}182 hostlist=${hostlist//,,/,}183 hostlist=${hostlist%,}184 hostlist=${hostlist#,}185 [ -z "$hostlist" ] && hostlist="-"186 echo -e "$printer\t$roomlist\t$hostlist" >> $PRINTERSTMP187 done <$PRINTERS188 mv $PRINTERSTMP $PRINTERS189 update_printers="yes"148 local toremove=$1 149 local PRINTERSTMP=/var/tmp/printers.$$ 150 [ -e "$PRINTERSTMP" ] && rm -rf $PRINTERSTMP 151 echo " * Removing $toremove from $PRINTERS ..." 152 while read line; do 153 if [ "${line:0:1}" = "#" ]; then 154 echo "$line" >> $PRINTERSTMP 155 continue 156 fi 157 if ! echo "$line" | grep -qw $toremove; then 158 echo "$line" >> $PRINTERSTMP 159 continue 160 fi 161 printer=`echo $line | awk '{ print $1 }'` 162 [ -z "$printer" ] && continue 163 roomlist=`echo $line | awk '{ print $2 }'` 164 [ -z "$roomlist" ] && continue 165 hostlist=`echo $line | awk '{ print $3 }'` 166 roomlist=${roomlist/$toremove/} 167 roomlist=${roomlist//,,/,} 168 roomlist=${roomlist%,} 169 roomlist=${roomlist#,} 170 [ -z "$roomlist" ] && roomlist="-" 171 hostlist=${hostlist/$toremove/} 172 hostlist=${hostlist//,,/,} 173 hostlist=${hostlist%,} 174 hostlist=${hostlist#,} 175 [ -z "$hostlist" ] && hostlist="-" 176 echo -e "$printer\t$roomlist\t$hostlist" >> $PRINTERSTMP 177 done <$PRINTERS 178 mv $PRINTERSTMP $PRINTERS 179 update_printers="yes" 190 180 } 191 181 192 182 # remove deleted rooms or hosts from $ROOMDEFAULTS 193 183 remove_defaults() { 194 local toremove=$1195 local RC_REMOVE=0196 echo -n " * Removing $toremove from $ROOMDEFAULTS ... "197 backup_roomdefaults=yes198 grep -v ^$toremove[[:space:]] $ROOMDEFAULTS > $ROOMDEFAULTS.tmp; RC_REMOVE=$?199 mv $ROOMDEFAULTS.tmp $ROOMDEFAULTS; RC_REMOVE=$?200 if [ $RC_REMOVE -ne 0 ]; then201 echo "Error!"202 return 1203 else204 echo "Ok!"205 return 0206 fi184 local toremove=$1 185 local RC_REMOVE=0 186 echo -n " * Removing $toremove from $ROOMDEFAULTS ... " 187 backup_roomdefaults=yes 188 grep -v ^$toremove[[:space:]] $ROOMDEFAULTS > $ROOMDEFAULTS.tmp; RC_REMOVE=$? 189 mv $ROOMDEFAULTS.tmp $ROOMDEFAULTS; RC_REMOVE=$? 190 if [ $RC_REMOVE -ne 0 ]; then 191 echo "Error!" 192 return 1 193 else 194 echo "Ok!" 195 return 0 196 fi 207 197 } 208 198 209 199 210 200 if [ "$imaging" = "linbo" ]; then 211 212 # adding new host entries from LINBO's registration 213 if ls $LINBODIR/*.new 2>> $TMPLOG 1>> $TMPLOG; then 214 for i in $LINBODIR/*.new; do 215 echo "Adding new host data:" 216 cat $i 217 echo 218 cat $i >> $WIMPORTDATA 219 rm $i 220 done 221 fi 222 223 fi 224 225 226 # Check if workstation data file is empty 201 # adding new host entries from LINBO's registration 202 if ls $LINBODIR/*.new 2>> $TMPLOG 1>> $TMPLOG; then 203 for i in $LINBODIR/*.new; do 204 echo "Adding new host data:" 205 cat $i 206 echo 207 cat $i >> $WIMPORTDATA 208 rm $i 209 done 210 fi 211 fi 212 213 214 # only if workstation data file is filled 227 215 if [ -s "$WIMPORTDATA" ]; then 228 216 229 # create a clean workstation data file 230 echo "Checking workstation data:" 231 while read line; do 232 233 [ "${line:0:1}" = "#" ] && continue 234 235 # strip spaces from $line 236 line=${line// /} 237 238 room=`echo $line | awk -F\; '{ print $1 }'` 239 [ -z "$room" ] && continue 240 241 hostname=`echo $line | awk -F\; '{ print $2 }'` 242 tolower $hostname 243 hostname=$RET 244 [ -z "$hostname" ] && continue 245 246 hostgroup=`echo $line | awk -F\; '{ print $3 }'` 247 [ -z "$hostgroup" ] && continue 248 249 mac=`echo $line | awk -F\; '{ print $4 }'` 250 toupper $mac 251 mac=$RET 252 [ -z "$mac" ] && continue 253 254 ip=`echo $line | awk -F\; '{ print $5 }'` 255 [ -z "$ip" ] && continue 256 257 pxe=`echo $line | awk -F\; '{ print $11 }'` 258 [ -z "$pxe" ] && continue 259 260 echo "$room;$hostname;$hostgroup;$mac;$ip;$internmask;1;1;1;1;$pxe" >> $WDATATMP 261 262 done <$WIMPORTDATA 263 264 # check hostnames 265 hostnames=`awk -F\; '{ print $2 }' $WDATATMP` 266 for i in $hostnames; do 267 case $i in 268 *[!a-z0-9-]*) 269 exitmsg "Invalid Hostname: $i!" 270 ;; 271 *) 272 ;; 273 esac 274 check_unique "$i" "$hostnames" || exitmsg "Hostname $i is not unique!" 275 done 276 277 # check macs 278 macs=`awk -F\; '{ print $4 }' $WDATATMP` 279 for i in $macs; do 280 validmac $i || exitmsg "Invalid MAC address: $i!" 281 check_unique "$i" "$macs" || exitmsg "MAC address $i is not unique!" 282 done 283 284 # check ips 285 ips=`awk -F\; '{ print $5 }' $WDATATMP` 286 for i in $ips; do 287 validip $i || exitmsg "Invalid IP address: $i!" 288 check_unique "$i" "$ips" || exitmsg "IP address $i is not unique!" 289 done 290 291 echo " * Workstation data are Ok! :-)" 217 # create a clean workstation data file 218 echo "Checking workstation data:" 219 while read line; do 220 221 [ "${line:0:1}" = "#" ] && continue 222 223 # strip spaces from $line 224 line=${line// /} 225 226 room=`echo $line | awk -F\; '{ print $1 }'` 227 [ -z "$room" ] && continue 228 229 hostname=`echo $line | awk -F\; '{ print $2 }'` 230 tolower $hostname 231 hostname=$RET 232 [ -z "$hostname" ] && continue 233 234 hostgroup=`echo $line | awk -F\; '{ print $3 }'` 235 [ -z "$hostgroup" ] && continue 236 237 mac=`echo $line | awk -F\; '{ print $4 }'` 238 toupper $mac 239 mac=$RET 240 [ -z "$mac" ] && continue 241 242 ip=`echo $line | awk -F\; '{ print $5 }'` 243 [ -z "$ip" ] && continue 244 245 pxe=`echo $line | awk -F\; '{ print $11 }'` 246 [ -z "$pxe" ] && continue 247 248 echo "$room;$hostname;$hostgroup;$mac;$ip;$internmask;1;1;1;1;$pxe" >> $WDATATMP 249 250 done <$WIMPORTDATA 251 252 # check hostnames 253 hostnames=`awk -F\; '{ print $2 }' $WDATATMP` 254 for i in $hostnames; do 255 validhostname "$i" || exitmsg "Hostname $i does not comply with RFC 952!" 256 check_unique "$i" "$hostnames" || exitmsg "Hostname $i is not unique!" 257 done 258 259 # check macs 260 macs=`awk -F\; '{ print $4 }' $WDATATMP` 261 for i in $macs; do 262 validmac $i || exitmsg "Invalid MAC address: $i!" 263 check_unique "$i" "$macs" || exitmsg "MAC address $i is not unique!" 264 done 265 266 # check ips 267 ips=`awk -F\; '{ print $5 }' $WDATATMP` 268 for i in $ips; do 269 validip $i || exitmsg "Invalid IP address: $i!" 270 check_unique "$i" "$ips" || exitmsg "IP address $i is not unique!" 271 done 272 273 echo " * Workstation data are Ok! :-)" 292 274 293 275 else 294 276 295 touch $WDATATMP296 echo " * No workstation data found! Skipping workstation import!"277 touch $WDATATMP 278 echo " * No workstation data found! Skipping workstation import!" 297 279 298 280 fi … … 302 284 [ -z "$DHCPDCONF" ] && exitmsg "Variable DHCPDCONF is not set!" 303 285 if [ -e "$DHCPDCONF" ]; then 304 backup_file $DHCPDCONF 2>> $TMPLOG 1>> $TMPLOG || exitmsg "Unable to backup $DHCPDCONF!"305 rm -rf $DHCPDCONF 2>> $TMPLOG 1>> $TMPLOG || exitmsg "Unable to delete $DHCPDCONF!"286 backup_file $DHCPDCONF 2>> $TMPLOG 1>> $TMPLOG || exitmsg "Unable to backup $DHCPDCONF!" 287 rm -rf $DHCPDCONF 2>> $TMPLOG 1>> $TMPLOG || exitmsg "Unable to delete $DHCPDCONF!" 306 288 fi 307 289 touch $DHCPDCONF 2>> $TMPLOG 1>> $TMPLOG || exitmsg "Unable to create $DHCPDCONF!" … … 319 301 320 302 321 # Check if workstation data file is empty303 # only if workstation data file is filled 322 304 if [ -s "$WIMPORTDATA" ]; then 323 305 324 # write configuration files and create host accounts 325 while read line; do 326 327 RC_LINE=0 328 329 # read in host data 330 room=`echo $line | awk -F\; '{ print $1 }'` 331 tolower $room 332 room=$RET 333 hostname=`echo $line | awk -F\; '{ print $2 }'` 334 hostgroup=`echo $line | awk -F\; '{ print $3 }'` 335 [ "$imaging" = "rembo" ] || hostgroup=`echo $hostgroup | awk -F\, '{ print $1 }'` 336 mac=`echo $line | awk -F\; '{ print $4 }'` 337 ip=`echo $line | awk -F\; '{ print $5 }'` 338 pxe=`echo $line | awk -F\; '{ print $11 }'` 339 echo "Processing host $hostname:" 340 341 # create workstation and machine accounts 342 if check_account; then 343 get_pgroup $hostname 344 strip_spaces $RET 345 pgroup=$RET 346 if [ "$pgroup" != "$room" ]; then 347 echo " * Host $hostname is moving from room $pgroup to $room!" 348 remove_account; RC_LINE=$? 349 if [ $RC_LINE -eq 0 ]; then 350 create_account; RC_LINE=$? 351 fi 352 fi 353 else 354 create_account; RC_LINE=$? 355 fi 356 357 if [ $RC_LINE -ne 0 ]; then 358 RC=$RC_LINE 359 continue 360 else 361 # disable password change 362 smbldap-usermod -A0 -B0 ${hostname}$ 363 fi 364 365 # linbo stuff, only if pxe host 366 if [[ "$pxe" != "0" && "$imaging" = "linbo" ]]; then 367 368 # use the default start.conf if there is none for this group 369 if [ ! -e "$LINBODIR/start.conf.$hostgroup" ]; then 370 echo -n " * LINBO: Creating new start.conf.$hostgroup in $LINBODIR ... " 371 if cp $LINBODEFAULTCONF $LINBODIR/start.conf.$hostgroup; then 372 sed -e "s/^Server.*/Server = $serverip/ 373 s/^Description.*/Description = Windows XP/ 374 s/^Image.*/#Image =/ 375 s/^BaseImage.*/BaseImage = winxp-$hostgroup.cloop/" -i $LINBODIR/start.conf.$hostgroup 376 echo "Ok!" 377 else 378 echo "Error!" 379 RC=1 380 fi 381 fi 382 383 echo -n " * LINBO: Linking $ip to group $hostgroup ... " 384 385 # remove start.conf links but preserve start.conf file for this ip 386 if [[ -e "$LINBODIR/start.conf-$ip" && -L "$LINBODIR/start.conf-$ip" ]]; then 387 rm $LINBODIR/start.conf-$ip 388 fi 389 390 # create start.conf link if there is no file for this ip 391 if [ ! -e "$LINBODIR/start.conf-$ip" ]; then 392 ln -sf start.conf.$hostgroup $LINBODIR/start.conf-$ip 393 fi 394 395 # if there is no pxelinux boot file for the group 396 if [ ! -s "$LINBODIR/pxelinux.cfg/$hostgroup" ]; then 397 # create one 398 sed -e "s/initrd=linbofs.gz/initrd=linbofs.$hostgroup.gz/g" $PXELINUXCFG > $LINBODIR/pxelinux.cfg/$hostgroup 399 fi 400 401 echo "Ok!" 402 403 fi 404 405 # write dhcpd.conf entry 406 echo -n " * DHCP/BIND: Writing config ... " 407 echo "host $hostname {" >> $DHCPDCONF 408 echo " hardware ethernet $mac;" >> $DHCPDCONF 409 echo " fixed-address $ip;" >> $DHCPDCONF 410 echo " option host-name \"$hostname\";" >> $DHCPDCONF 411 if [[ "$pxe" != "0" && "$imaging" = "linbo" ]]; then 412 # assign group specific pxelinux config 413 echo " option pxelinux.configfile \"pxelinux.cfg/$hostgroup\";" >> $DHCPDCONF 414 fi 415 echo "}" >> $DHCPDCONF 306 # write configuration files and create host accounts 307 while read line; do 308 309 RC_LINE=0 310 311 # read in host data 312 room=`echo $line | awk -F\; '{ print $1 }'` 313 tolower $room 314 room=$RET 315 hostname=`echo $line | awk -F\; '{ print $2 }'` 316 hostgroup=`echo $line | awk -F\; '{ print $3 }'` 317 [ "$imaging" = "rembo" ] || hostgroup=`echo $hostgroup | awk -F\, '{ print $1 }'` 318 mac=`echo $line | awk -F\; '{ print $4 }'` 319 ip=`echo $line | awk -F\; '{ print $5 }'` 320 pxe=`echo $line | awk -F\; '{ print $11 }'` 321 echo "Processing host $hostname:" 322 323 # create workstation and machine accounts 324 if check_account; then 325 get_pgroup $hostname 326 strip_spaces $RET 327 pgroup=$RET 328 if [ "$pgroup" != "$room" ]; then 329 echo " * Host $hostname is moving from room $pgroup to $room!" 330 remove_account; RC_LINE=$? 331 if [ $RC_LINE -eq 0 ]; then 332 create_account; RC_LINE=$? 333 fi 334 fi 335 else 336 create_account; RC_LINE=$? 337 fi 338 339 if [ $RC_LINE -ne 0 ]; then 340 RC=$RC_LINE 341 continue 342 else 343 if ! sophomorix-passwd --force -u ${hostname}$ --pass $MACHINE_PASSWORD 2>> $TMPLOG 1>> $TMPLOG; then 344 echo " * Error: Cannot set machine password for ${hostname}$!" 345 RC=1 346 continue 347 fi 348 # disable password change 349 smbldap-usermod -A0 -B0 ${hostname}$ 350 fi 351 352 # linbo stuff, only if pxe host 353 if [[ "$pxe" != "0" && "$imaging" = "linbo" ]]; then 354 355 # use the default start.conf if there is none for this group 356 if [ ! -e "$LINBODIR/start.conf.$hostgroup" ]; then 357 echo -n " * LINBO: Creating new start.conf.$hostgroup in $LINBODIR ... " 358 if cp $LINBODEFAULTCONF $LINBODIR/start.conf.$hostgroup; then 359 sed -e "s/^Server.*/Server = $serverip/ 360 s/^Description.*/Description = Windows XP/ 361 s/^Image.*/Image =/ 362 s/^BaseImage.*/BaseImage = winxp-$hostgroup.cloop/" -i $LINBODIR/start.conf.$hostgroup 363 echo "Ok!" 364 else 365 echo "Error!" 366 RC=1 367 fi 368 fi 369 370 echo -n " * LINBO: Linking $ip to group $hostgroup ... " 371 372 # remove start.conf links but preserve start.conf file for this ip 373 if [[ -e "$LINBODIR/start.conf-$ip" && -L "$LINBODIR/start.conf-$ip" ]]; then 374 rm $LINBODIR/start.conf-$ip 375 fi 376 377 # create start.conf link if there is no file for this ip 378 if [ ! -e "$LINBODIR/start.conf-$ip" ]; then 379 ln -sf start.conf.$hostgroup $LINBODIR/start.conf-$ip 380 fi 381 382 # if there is no pxelinux boot file for the group 383 if [ ! -s "$LINBODIR/pxelinux.cfg/$hostgroup" ]; then 384 # create one 385 sed -e "s/initrd=linbofs.gz/initrd=linbofs.$hostgroup.gz/g" $PXELINUXCFG > $LINBODIR/pxelinux.cfg/$hostgroup 386 fi 387 388 echo "Ok!" 389 390 fi 391 392 # write dhcpd.conf entry 393 echo -n " * DHCP/BIND: Writing config ... " 394 echo "host $hostname {" >> $DHCPDCONF 395 echo " hardware ethernet $mac;" >> $DHCPDCONF 396 echo " fixed-address $ip;" >> $DHCPDCONF 397 echo " option host-name \"$hostname\";" >> $DHCPDCONF 398 if [[ "$pxe" != "0" && "$imaging" = "linbo" ]]; then 399 # assign group specific pxelinux config 400 echo " option pxelinux.configfile \"pxelinux.cfg/$hostgroup\";" >> $DHCPDCONF 401 fi 402 echo "}" >> $DHCPDCONF 416 403 417 # write bind config418 okt2="$(echo $ip | awk -F. '{ print $2 }')"419 okt3="$(echo $ip | awk -F. '{ print $3 }')"420 okt4="$(echo $ip | awk -F. '{ print $4 }')"404 # write bind config 405 okt2="$(echo $ip | awk -F. '{ print $2 }')" 406 okt3="$(echo $ip | awk -F. '{ print $3 }')" 407 okt4="$(echo $ip | awk -F. '{ print $4 }')" 421 408 echo "$okt4.$okt3.$okt2 PTR $hostname.`dnsdomainname`." >> $DB10TMP 422 409 echo "$hostname A $ip" >> $DBREVTMP 423 410 424 echo "Ok!"425 echo426 427 done <$WDATATMP411 echo "Ok!" 412 echo 413 414 done <$WDATATMP 428 415 429 416 fi … … 439 426 # creating/updating group specific linbofs 440 427 if [ "$imaging" = "linbo" -a -e "$LINBOUPDATE" ]; then 441 $LINBOUPDATE; RC_LINE=$?442 [ $RC_LINE -ne 0 ] && RC=1428 $LINBOUPDATE; RC_LINE=$? 429 [ $RC_LINE -ne 0 ] && RC=1 443 430 fi 444 431 … … 446 433 # myshn groups 447 434 if [ "$imaging" = "rembo" ]; then 448 echo "Processing mySHN groups:"449 FOUND=0450 for i in `awk -F\; '{ print $3 " " $11 }' $WDATATMP | grep -v -w 0 | awk '{ print $1 }' | sort -u`; do451 OIFS="$IFS"452 IFS=","453 for g in $i; do454 if [ ! -e "$MYSHNDIR/groups/$g/config" ]; then455 echo -n " * Copying default config for group $g ... "456 FOUND=1; RC_LINE=0457 if [ ! -d "$MYSHNDIR/groups/$g" ]; then458 mkdir -p $MYSHNDIR/groups/$g 2>> $TMPLOG 1>> $TMPLOG459 fi460 cp $MYSHNCONFIG $MYSHNDIR/groups/$g/config 2>> $TMPLOG 1>> $TMPLOG; RC_LINE="$?"461 if [ $RC_LINE -eq 0 ]; then462 echo "Ok!"463 else464 echo "failed!"465 RC=1466 fi467 fi468 done469 IFS="$OIFS"470 done471 [ "$FOUND" = "0" ] && echo " * Nothing to do!"435 echo "Processing mySHN groups:" 436 FOUND=0 437 for i in `awk -F\; '{ print $3 " " $11 }' $WDATATMP | grep -v -w 0 | awk '{ print $1 }' | sort -u`; do 438 OIFS="$IFS" 439 IFS="," 440 for g in $i; do 441 if [ ! -e "$MYSHNDIR/groups/$g/config" ]; then 442 echo -n " * Copying default config for group $g ... " 443 FOUND=1; RC_LINE=0 444 if [ ! -d "$MYSHNDIR/groups/$g" ]; then 445 mkdir -p $MYSHNDIR/groups/$g 2>> $TMPLOG 1>> $TMPLOG 446 fi 447 cp $MYSHNCONFIG $MYSHNDIR/groups/$g/config 2>> $TMPLOG 1>> $TMPLOG; RC_LINE="$?" 448 if [ $RC_LINE -eq 0 ]; then 449 echo "Ok!" 450 else 451 echo "failed!" 452 RC=1 453 fi 454 fi 455 done 456 IFS="$OIFS" 457 done 458 [ "$FOUND" = "0" ] && echo " * Nothing to do!" 472 459 fi 473 460 … … 483 470 if ls $WSHOME/*/* &> /dev/null; then 484 471 485 for i in $WSHOME/*/*; do486 487 hostname=${i##*/}488 if ! grep -qw $hostname $WDATATMP; then489 FOUND=1490 remove_account ; RC_LINE="$?"491 [ $RC_LINE -eq 0 ] || RC=1492 if [ -z "$HOSTS_REMOVED" ]; then493 HOSTS_REMOVED=$hostname494 else495 HOSTS_REMOVED="$HOSTS_REMOVED $hostname"496 fi497 498 if grep -v ^# $PRINTERS | grep -qw $hostname; then499 remove_printeraccess $hostname ; RC_LINE="$?"500 [ $RC_LINE -eq 0 ] || RC=1501 fi502 503 if grep -q ^$hostname[[:space:]] $ROOMDEFAULTS; then504 remove_defaults $hostname ; RC_LINE="$?"505 [ $RC_LINE -eq 0 ] || RC=1506 fi507 fi508 509 done472 for i in $WSHOME/*/*; do 473 474 hostname=${i##*/} 475 if ! grep -qw $hostname $WDATATMP; then 476 FOUND=1 477 remove_account ; RC_LINE="$?" 478 [ $RC_LINE -eq 0 ] || RC=1 479 if [ -z "$HOSTS_REMOVED" ]; then 480 HOSTS_REMOVED=$hostname 481 else 482 HOSTS_REMOVED="$HOSTS_REMOVED $hostname" 483 fi 484 485 if grep -v ^# $PRINTERS | grep -qw $hostname; then 486 remove_printeraccess $hostname ; RC_LINE="$?" 487 [ $RC_LINE -eq 0 ] || RC=1 488 fi 489 490 if grep -q ^$hostname[[:space:]] $ROOMDEFAULTS; then 491 remove_defaults $hostname ; RC_LINE="$?" 492 [ $RC_LINE -eq 0 ] || RC=1 493 fi 494 fi 495 496 done 510 497 511 498 fi … … 518 505 for room in $rooms; do 519 506 520 if ! grep -qw $room $WDATATMP; then521 FOUND=1522 echo -n " * Removing room: $room ... "523 if sophomorix-groupdel --room $room 2>> $TMPLOG 1>> $TMPLOG; then524 echo "Ok!"525 else526 echo "sophomorix error!"527 RC=1528 fi529 530 if grep -qw ^$room $CLASSROOMS; then531 echo -n " * Removing $room from $CLASSROOMS ... "532 backup_classrooms=yes533 grep -wv ^$room $CLASSROOMS > $CLASSROOMS.tmp534 mv $CLASSROOMS.tmp $CLASSROOMS535 echo "Ok!"536 fi537 538 grep -q ^$room[[:space:]] $ROOMDEFAULTS && remove_defaults $room539 540 if grep -v ^# $PRINTERS | grep -qw $room; then541 remove_printeraccess $room ; RC_LINE="$?"542 [ $RC_LINE -eq 0 ] || RC=1543 fi544 fi507 if ! grep -qw $room $WDATATMP; then 508 FOUND=1 509 echo -n " * Removing room: $room ... " 510 if sophomorix-groupdel --room $room 2>> $TMPLOG 1>> $TMPLOG; then 511 echo "Ok!" 512 else 513 echo "sophomorix error!" 514 RC=1 515 fi 516 517 if grep -qw ^$room $CLASSROOMS; then 518 echo -n " * Removing $room from $CLASSROOMS ... " 519 backup_classrooms=yes 520 grep -wv ^$room $CLASSROOMS > $CLASSROOMS.tmp 521 mv $CLASSROOMS.tmp $CLASSROOMS 522 echo "Ok!" 523 fi 524 525 grep -q ^$room[[:space:]] $ROOMDEFAULTS && remove_defaults $room 526 527 if grep -v ^# $PRINTERS | grep -qw $room; then 528 remove_printeraccess $room ; RC_LINE="$?" 529 [ $RC_LINE -eq 0 ] || RC=1 530 fi 531 fi 545 532 546 533 done
Note: See TracChangeset
for help on using the changeset viewer.
