Wer einen dedizierten Server mit OpenVZ Gästen betreibt ist des öfteren in der Situation, einen Befehl in jeder virtuellen Umgebung (VE) einzelnen auszuführen, beispielsweise eine Paketinstallation mit apt-get. Folgende simple bash Funktion ermöglicht genau dies: einen Befehl in allen laufenden VPS unter einmal auszuführen.
- die Funktion der eigenen .bashrc hinzufügen
cat >>~/.bashrc <<EOF
# execute on all running vz containers
execAllVZ() {
for ctid in \`cat /proc/vz/veinfo | awk '{print \$1}' | egrep -v '^0$' | sort\`; \\
do echo "*** CTID \$ctid: \$*"; vzctl exec \$ctid \$*; done
}
alias vzexecall=execAllVZ
EOF
- die .bashrc erneut einlesen
source ~/.bashrc
- Befehl ausprobieren
vzexecall uptime
vzexecall uname -a
Künftig steht dann der Befehl nach jedem Login zur Verfügung. Getestet mit Debian Wheezy, sollte aber (ggf. nach einer kleinen Anpassung an Systemgegebenheiten) auch in anderen Betriebssystemen wie Ubuntu, Linux Mint, Fedora, CentOS und anderen funktionieren.
Hinweis: dieser Artikel ist ursprünglich auf dem IT-Blog “copy/paste” (www.copypaste.at) erschienen.