[Libguestfs] [PATCH V2] virt-sysprep:add ipconfig for preparation

Wanlong Gao gaowanlong at cn.fujitsu.com
Sun Mar 11 11:06:32 UTC 2012


On 03/09/2012 11:48 PM, Richard W.M. Jones wrote:

> On Fri, Mar 09, 2012 at 02:50:17PM +0800, Wanlong Gao wrote:
>> +#FIXME: This may not work OK for IPv6 ?
> 
> :-)
> Does it work or not?  Anyone??


The "enable=ipconfig" can work but "--ipconfig" here can't work on IPv6
because the  IPv6 address's format is "XXXX:XXXX:...", so we can add the
IPv6 part if it needed future.

Thanks,
Wanlong Gao

> 
>> +if [ "$ipconfig" = "yes" ]; then
>> +    case "$type/$distro" in
>> +        linux/fedora|linux/rhel)
>> +            if [ -d $mnt/etc/sysconfig/network-scripts ]; then
>> +                if [ -z $ipconfig_param ]; then
> 
> Apparently you don't need to quote parameters in bash, but while this
> is technically correct, I think it is safer to quote it.  There are a
> few other similar ones later in the code.
> 
>> +                    for (( i=1; i<8 ; i+=2 )); do
>> +                        __device=$(echo "$ipconfig_param" | awk -v j=$i -F: '{print $j}')
>> +                        if [ -z $__device ]; then
>> +                            break
>> +                        fi
>> +                        __ipconfig=$(echo "$ipconfig_param" | awk -v j=$((i+1)) -F: '{print $j}')
>> +                        __config_file=$(echo "$mnt/etc/sysconfig/network-scripts/ifcfg-$__device")
>> +                        if [ -e $__config_file ]; then
>> +                            __ip=$(echo "$__ipconfig" | awk -F, '{print $1}')
>> +                            __mask=$(echo "$__ipconfig" | awk -F, '{print $2}')
>> +                            __gw=$(echo "$__ipconfig" | awk -F, '{print $3}')
>> +                            sed '/^IPADDR=/d;/^BOOTPROTO=/d;/^NETMASK=/d;/^GATEWAY=/d;/^DNS/d' \
>> +                                 < "$__config_file" > "$__config_file.new"
>> +                            echo "IPADDR=$__ip" >> "$__config_file.new"
>> +                            echo "BOOTPROTO=static" >> "$__config_file.new"
>> +                            echo "NETMASK=$__mask" >> "$__config_file.new"
>> +                            echo "GATEWAY=$__gw" >> "$__config_file.new"
>> +                            mv -f "$__config_file.new" "$__config_file"
>> +                        fi
>> +                    done
>> +                fi
>> +            fi
> 
> I can't see any fault in this code.  I wonder if there's an easier
> way, but maybe not, this is shell script after all ...
> 
> Seems OK in general.
> 
> Rich.
> 





More information about the Libguestfs mailing list