Some more goodies

fix-kubectl - updated tool versions
foreach-secret - a tool to export an ix-app's secret, executing a
command line on the content.

Was created to periodically update AdGuard Home HTTPS certificate over
SSH.

show-console - designed to be executed with `watch`:
    `sudo watch ./show-console.sh'

Will output what is shown on the console.
This commit is contained in:
Lockszmith 2024-02-05 12:11:00 -05:00
parent a286451d8f
commit 01cb3798ed
3 changed files with 83 additions and 2 deletions

View File

@ -44,7 +44,7 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then
. <( kubectl cnpg completion ${SHELL##*/} )
fi
if [[ -z "$(type -t 'kubectl-cnpg')" || -n "$UPGRADE" ]]; then
DL_VER=1.21.1
DL_VER=1.22.0
GH_URL=https://github.com/cloudnative-pg/cloudnative-pg
DL_FILE="kubectl-cnpg_${DL_VER}_linux_x86_64.deb"
URL=${GH_URL}/releases/download/v${DL_VER}/${DL_FILE}
@ -55,7 +55,7 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then
fi
if [[ -z "$(type -t 'kubetui')" || -n "$UPGRADE" ]]; then
DL_VER=1.4.2
DL_VER=1.5.0
GH_URL=https://github.com/sarub0b0/kubetui
DL_FILE=kubetui-x86_64-unknown-linux-musl-rustls
URL=${GH_URL}/releases/download/v${DL_VER}/${DL_FILE}

47
foreach-secret.sh Executable file
View File

@ -0,0 +1,47 @@
#! /usr/bin/env bash
set -e
if [[ $# -lt 1 ]]; then
MYNAME="$(basename $0)"
cat - <<USAGE
$MYNAME
Grab dns-ingress tls certs from local k3s secrets and copy over to
szdocker's adguard
Usage:
$MYNAME <app-name> [<secret-name> [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

34
show-console.sh Executable file
View File

@ -0,0 +1,34 @@
#! /usr/bin/env bash
res() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
IFS='[;R' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
res2() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '\033[18t' > /dev/tty
IFS=';t' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
stty cols 80
cat /dev/vcs