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

Wanlong Gao gaowanlong at cn.fujitsu.com
Mon Mar 12 09:50:40 UTC 2012


Hi Rich:

> 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.


Will you push this or further comment?  ;)

> 
> 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.
>>
> 
> 
> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs
> 





More information about the Libguestfs mailing list