46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
#Only used by sysclone
 | 
						|
 | 
						|
#if the /etc/systemimager/byid_real_map.conf exist, 
 | 
						|
#the device name used in fstab and grub are in "by-id" style
 | 
						|
#use the by-id name on target node to replace the name on the goden client
 | 
						|
 | 
						|
if [ ! -e /etc/systemimager/byid_real_map.conf ];then
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
sed -e 's/-part[0-9]\+//g' -e 's/[0-9]\+$//' /etc/systemimager/byid_real_map.conf | uniq |
 | 
						|
	while read str_line
 | 
						|
do
 | 
						|
    str_old_dev="${str_line%%:*}"
 | 
						|
    str_real="${str_line##*:}"
 | 
						|
    str_real="${str_line##*/}"
 | 
						|
#    str_dev_prefix=`basename $str_old_dev | awk -F'-' '{print $1}'`
 | 
						|
    
 | 
						|
    #find out the new by-id name
 | 
						|
    str_new_dev=`ls -l --time-style=locale /dev/disk/by-id/ | grep -E "$str_real\$" | awk '{print $9}'`
 | 
						|
    if [ -z "$str_new_dev" ];then
 | 
						|
        continue
 | 
						|
    fi
 | 
						|
    str_new_dev="/dev/disk/by-id/${str_new_dev}"
 | 
						|
 | 
						|
    for str_file_name in \
 | 
						|
		/boot/efi/efi/SuSE/elilo.conf \
 | 
						|
		/boot/efi/EFI/redhat/grub.conf \
 | 
						|
		/boot/grub/menu.lst \
 | 
						|
		/boot/grub/device.map \
 | 
						|
		/etc/elilo.conf \
 | 
						|
		/etc/fstab \
 | 
						|
		/etc/grub.conf \
 | 
						|
		/etc/lilo.conf \
 | 
						|
		/etc/yaboot.conf		
 | 
						|
    do
 | 
						|
        if [ -f $str_file_name ];then
 | 
						|
            sed -i "s:$str_old_dev:$str_new_dev:g" "$str_file_name"
 | 
						|
        fi
 | 
						|
    done
 | 
						|
done
 | 
						|
 | 
						|
exit 0
 |