#! /usr/bin/env bash set -e if [[ $# -lt 1 ]]; then MYNAME="$(basename $0)" cat - < [ [cmdline with \$FILE receiving content]] Example: $MYNAME dns-ingress external-service-tls-0 '{ echo /opt/adguardhome/conf/\$FILE; ssh szdocker@szdocker.lan sudo tee /srv/containeriszed/0.local/adguardhome/conf/\$FILE > /dev/null; }' Arguments app-name - name of the ix-app secret-name - name of the secret, when ommitted, a sorted list of secrets will be listed cmdline... - Command to run on the secret, \$FILE will be the secret name, where stdin will contain the content of the secret USAGE false else APPNAME="${1}" NS="--namespace=ix-${APPNAME:?Appname was not specified}" if [[ -z "${2}" ]]; then # shellcheck disable=SC2086 # ${NS} unqouted on purpose k3s kubectl get secrets ${NS} | sort exit fi SECRETNAME="${APPNAME}-${2}" PIPECMD="${*:3}" PIPECMD="${PIPECMD:-cat -}" # shellcheck disable=SC2086 # ${NS} unqouted on purpose mapfile -t FILES < <(k3s kubectl get secrets ${NS} "${SECRETNAME}" --output=json | jq -r '.data | keys[]') for FILE in "${FILES[@]}"; do # shellcheck disable=SC2086 # ${NS} and $PIPECMD unqouted on purpose k3s kubectl get secrets ${NS} "${SECRETNAME}" --output=json | jq -r '.data["'"${FILE}"'"] | @base64d' | eval $PIPECMD done fi