vzexecall: einen Shell-Befehl in allen OpenVZ VE's ausführen

December 01, 2013

Reading time ~1 minute

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.

  1. 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
  2. die .bashrc erneut einlesen

    source ~/.bashrc
  3. 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.

International Federation of the Phonographic Industry (IFPI)

Die IFPI (International Federation of the Phonographic Industry) ist der Weltverband der Musikindustrie, dessen wesentlichste Augaben die Wa…… Continue reading