--- On Wed, 11/10/10, Laine Stump <laine@xxxxxxxxx> wrote: > From: Laine Stump <laine@xxxxxxxxx> > Subject: Re: Updating Multiple VM Guests? > To: libvirt-users@xxxxxxxxxx > Date: Wednesday, November 10, 2010, 1:27 PM > On 11/10/2010 01:20 PM, Kenneth > Stailey wrote: > > > > --- On Wed, 11/10/10, Laine Stump<laine@xxxxxxxxx> > wrote: > > > >> From: Laine Stump<laine@xxxxxxxxx> > >> Subject: Re: Updating Multiple VM > Guests? > >> To: libvirt-users@xxxxxxxxxx > >> Date: Wednesday, November 10, 2010, 12:41 PM > >> On 11/10/2010 11:59 AM, Kenneth > >> Stailey wrote: > >>> Hi, > >>> > >>> The libvirt.org FAQ says that "virsh edit" is > the > >> recommended way of updating the libvirt xml. > >>> If a change has to be made to many VMs "virsh > edit" is > >> tedious, time-consuming and likely to be prone to > careless > >> errors. > >>> Is there a command line approach to updating > multiple > >> VMs? > >> > >> How about: > >> > >> for g in guest1 guest2 > guest3 guest4; do > >> virsh dumpxml > --inactive $g > >>> /tmp/g.xml > >> # do whatever sed/etc > commands you > >> want here > >> virsh define > /tmp/g.xml > >> done > >> > >> (or something like that, anyway :-) > > The "sed, etc." is a mistake since XML does not have > guaranteed format. > > > > I suppose XMLStarlet could be used. > > > > http://xmlstar.sourceforge.net/ > > Yeah. sed is just my general purpose "replacement for > editing by hand" > token ;-) > > Something that is xml-aware would obviously be a much > better choice. It's too painful to get right anyway. I just used this: #! /bin/bash # hack to fixup qemu version numbers in libvirt xml if [ `id -un` != root ]; then echo this script only works as root exit 1 fi cd /dev/shm for i in `virsh list --all | awk '/running|shut off/ {print $2}'` do virsh dumpxml $i > $i.xml sed -i.bak -e 's/pc-0.11/pc-0.12/' $i.xml virsh define $i.xml done