Hi Rich, If have time, please give a comment ;)
Thanks -Wanlong Gao > Hi Rich: > I just send a patch to request for your comments, > then will do further work about this. > things like this: > > [root@Allen ~]# virt-sysprep > --ipconfig="eth0:192.168.1.2,255.255.255.0,192.168.1.1" --enable=ipconfig -d > clone-6u1 > > OR > > [root@Allen ~]# virt-sysprep -d clone-6u1 > > Please comments. > > Thanks > -Wanlong Gao > > Signed-off-by: Wanlong Gao <[email protected]> > --- > clone/virt-sysprep.in | 50 > ++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/clone/virt-sysprep.in b/clone/virt-sysprep.in > index d505532..e4486d0 100644 > --- a/clone/virt-sysprep.in > +++ b/clone/virt-sysprep.in > @@ -26,7 +26,7 @@ version="@PACKAGE_VERSION@" > > TEMP=`getopt \ > -o a:c:d:vVx \ > - --long > help,add:,connect:,domain:,enable:,format::,hostname:,list-operations,selinux-relabel,no-selinux-relabel,verbose,version > \ > + --long > help,add:,connect:,domain:,enable:,format::,hostname:,ipconfig:,list-operations,selinux-relabel,no-selinux-relabel,verbose,version > \ > -n $program -- "$@"` > if [ $? != 0 ]; then > echo "$program: problem parsing the command line arguments" > @@ -91,6 +91,9 @@ while true; do > --hostname) > hostname_param="$2" > shift 2;; > + --ipconfig) > + ipconfig_param="$2" > + shift 2;; > --list-operations) > enable=list > shift;; > @@ -135,6 +138,7 @@ if [ -z "$enable" ]; then > dhcp_client_state=yes > dhcp_server_state=yes > hostname=yes > + ipconfig=yes > logfiles=yes > mail_spool=yes > net_hwaddr=yes > @@ -150,6 +154,7 @@ elif [ "$enable" = "list" ]; then > echo "dhcp-client-state" > echo "dhcp-server-state" > echo "hostname" > + echo "ipconfig" > echo "logfiles" > echo "mail-spool" > echo "net-hwaddr" > @@ -168,6 +173,7 @@ else > dhcp-client-state) dhcp_client_state=yes ;; > dhcp-server-state) dhcp_server_state=yes ;; > hostname) hostname=yes ;; > + ipconfig) ipconfig=yes ;; > logfiles) logfiles=yes ;; > mail-spool) mail_spool=yes ;; > net-hwaddr) net_hwaddr=yes ;; > @@ -286,6 +292,48 @@ if [ "$hostname" = "yes" ]; then > esac > fi > > +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 > + rm_ipconfig () > + { > + sed > '/^IPADDR=/d;/^BOOTPROTO=/d;/^NETMASK=/d;/^GATEWAY=/d;/^DNS/d' \ > + < "$1" > "$1.new" > + echo "BOOTPROTO=dhcp" >> "$1.new" > + mv -f "$1.new" "$1" > + } > + export -f rm_ipconfig > + find $mnt/etc/sysconfig/network-scripts \ > + -name 'ifcfg-*' -type f \ > + -exec bash -c 'rm_ipconfig "$0"' {} \; > + else > + 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 > + esac > +fi > + > if [ "$logfiles" = "yes" ]; then > case "$type" in > linux) _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
