#!/bin/sh -euf usage() ( echo "upgrade-containers.sh" echo echo "Upgrade currently running LXC containers." echo "Uses apt-get for Debian and apk for Alpine." echo ) upgrade_container() ( NAME="$1" RELEASE_FILE="/var/lib/lxc/$NAME/rootfs/etc/os-release" if grep -q "ID=debian" "$RELEASE_FILE"; then lxc-attach -n "$NAME" -- apt-get update lxc-attach -n "$NAME" -- apt-get upgrade -y elif grep -q "ID=alpine" "$RELEASE_FILE"; then lxc-attach -n "$NAME" -- apk update lxc-attach -n "$NAME" -- apk upgrade fi ) upgrade_running_containers() ( for CONTAINER in $(lxc-ls --running); do upgrade_container "$CONTAINER" done ) case "${1:-run}" in "help") usage;; "run") upgrade_running_containers;; esac