#!/bin/bash #Ki: Gael #Kan: 2025 #Koi: gestion mots de passe KAZ_ROOT=/kaz . "${KAZ_ROOT}/bin/.commonFunctions.sh" QUIET=1 usage() { echo "getPasswords.sh [OPTIONS] [envname ...] Récupère les variables d'environnement présentes dans /kaz/secret/env-envname et crée des variables à partir de ces noms là. Les variables sont du type envname_NOMVARIABLE=valeur On peut passer plusieurs fichiers env, à partir du moment ou ils sont tous dans le même répertoire ! OPTIONS -h|--help Cette aide :-) -n|--simu SIMULATION -d foldername prend les envfiles dans un sous dossier /kaz/secret/foldername/ (pour les orgas !) Les variables seront du type foldername-envname_NOMVARIABLE=valeur -e varname Affiche le contenu d'une variable en particulier " } if [ ! -d "${KAZ_KEY_DIR}/tmp" ]; then mkdir "${KAZ_KEY_DIR}/tmp" fi for ARG in "$@"; do if [ -n "${DIRECTORYARG}" ]; then # après un -d SUBDIRECTORY="${ARG}" unset DIRECTORYARG elif [ -n "${ECHOVARARG}" ]; then # après un -e VARTOECHO="${ARG}" unset ECHOVARARG QUIET="/dev/null" # pour ne pas avoir d'autres bruits ... else case "${ARG}" in '-d' | '--directory' | '-f' | '--folder' | '--foldername') DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;; '-h' | '--help' ) usage && exit ;; '-n' | '--simu') SIMU="echo" ;; '-e' | '--echo') ECHOVARARG="ON ATTEND UNE UN NOM DE VARIABLE APRES CA" ;; '-q' ) QUIET="/dev/null" ;; *) ENVFILES="${ENVFILES} ${ARG%}";; esac fi done getVars () { # $1 : filename grep "^[^#]*=" $1 | sed 's/\([^=]*\).*/\1/' | sort -u } NB_FILES=$(echo "${ENVFILES}" | wc -w ) if [[ $NB_FILES = 0 ]]; then usage exit 1 fi for ENVFILE in $ENVFILES; do FILENAME="$KAZ_KEY_DIR/env-$ENVFILE" VARSUFFIX="$ENVFILE"_ if [ -n "${SUBDIRECTORY}" ]; then FILENAME="$KAZ_KEY_DIR/orgas/$SUBDIRECTORY/env-$ENVFILE" VARSUFFIX="${SUBDIRECTORY}-${ENVFILE}_" fi if ! [ -f "$FILENAME" ]; then echo "$FILENAME does not exist." >& $QUIET continue fi . $FILENAME # on récupère les variables vars=$(getVars $FILENAME) for var in $vars; do $SIMU declare $VARSUFFIX$var=${!var} unset $var done unset FILENAME VARSUFFIX vars done if [ -n "$VARTOECHO" ]; then echo ${!VARTOECHO} fi unset ENVFILES KAZ_ROOT SUBDIRECTORY SIMU QUIET NB_FILES VARTOECHO