Difference between revisions of "ExecuteInAllVEs"
Line 3: | Line 3: | ||
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
+ | # vzexec -- execute a command on all VEs | ||
CONFDIR="/etc/vz/conf" | CONFDIR="/etc/vz/conf" | ||
if [ "$1" == "" ]; then | if [ "$1" == "" ]; then |
Revision as of 18:47, 3 January 2008
I found myself often faced with a need to run the same command in all VEs, e.g. apachectl restart to restart all webservers or dmesg | tail to see the latest news from everybody. This simple utility is just a loop around vzctl exec but I find it very handy.
#!/bin/bash
# vzexec -- execute a command on all VEs
CONFDIR="/etc/vz/conf"
if [ "$1" == "" ]; then
echo "$0 -- Execute a command on all VEs"
echo ""
echo "Example: vzexec service httpd restart"
echo ""
echo "Note that variables are expanded in the host's shell, and use ' ' to prevent this."
echo "Example: vzexec echo \$PWD and vzexec 'echo \$PWD' are different."
exit
fi
for veconf in $CONFDIR/*.conf ; do
veid=`basename $veconf .conf`
if [ "$veid" == "0" ]; then continue; fi
vename=`grep ^NAME $veconf | head -1 | sed -e 's@NAME=@@' | sed -e 's@"@@g'`
echo "*** VE $veid ($vename)"
vzctl exec $veid $@
done