2 changed files with 86 additions and 0 deletions
@ -0,0 +1,85 @@
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash |
||||
|
||||
# |
||||
# Copyright (C) 2020, Maxim Lihachev, <envrm@yandex.ru> |
||||
# |
||||
# This program is free software: you can redistribute it and/or modify it |
||||
# under the terms of the GNU General Public License as published by the Free |
||||
# Software Foundation, version 3. |
||||
# |
||||
# This program is distributed in the hope that it will be useful, |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
# GNU General Public License for more details. |
||||
# |
||||
# You should have received a copy of the GNU General Public License |
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
# |
||||
|
||||
usage() { |
||||
echo -e "$(basename "$0") is a wrapper for \`kubectl get secret' to decoding secrets automatically.\n" |
||||
echo -e "USAGE: $(basename "$0" | tr '-' ' ') [-h|-d|-s] [standard kubectl selectors]\n" |
||||
|
||||
echo -e "Command line arguments:" |
||||
echo -e " -h --help show this help" |
||||
echo -e " -s --simple show only secrets" |
||||
echo -e " -d --decode show decoded data as plain text" |
||||
echo -e " (by default it shows under the link)\n" |
||||
|
||||
exit "${1:-0}" |
||||
} |
||||
|
||||
KUBECTL_ARGS=() |
||||
|
||||
while [[ $# -gt 0 ]]; do |
||||
key="$1" |
||||
|
||||
case $key in |
||||
-h|--help) usage 0;; |
||||
-d|--decode) DECODE=true; shift;; |
||||
-s|--simple) SIMPLE=true; shift;; |
||||
*) KUBECTL_ARGS+=("$1"); shift;; |
||||
esac |
||||
done |
||||
|
||||
set -- "${KUBECTL_ARGS[@]}" |
||||
|
||||
#------------------------------------------------------------------------------- |
||||
|
||||
MANIFEST=$(kubectl get secret "${KUBECTL_ARGS[@]}" -o yaml) |
||||
|
||||
#------------------------------------------------------------------------------- |
||||
|
||||
if grep -E -q '^kind: List' <<<"$MANIFEST"; then |
||||
DELIMITER=" " |
||||
else |
||||
DELIMITER=" " |
||||
fi |
||||
|
||||
IFS=$'\n' |
||||
|
||||
REGEX_DATA="^${DELIMITER/ /}data:" |
||||
REGEX_SECRET="^${DELIMITER}[[:print:]]+:[[:space:]]+.*$" |
||||
|
||||
while read -r line; do |
||||
if [[ "$line" =~ $REGEX_DATA ]]; then |
||||
DATA=1 |
||||
elif [[ "$DATA" -eq 1 ]] && [[ "$line" =~ $REGEX_SECRET ]]; then |
||||
secret=${line//[[:space:]]/} |
||||
key=${secret/:*} |
||||
value=${secret/*:} |
||||
|
||||
if [ "$DECODE" == "true" ]; then |
||||
echo -e "${DELIMITER}${key}: $(base64 -d <<<"$value")" |
||||
else |
||||
echo -e "${DELIMITER}${key}: \e]8;;$(base64 -d <<<"$value")\e\\\\${value}\e]8;;\e\\" |
||||
fi |
||||
|
||||
continue |
||||
else |
||||
DATA=0 |
||||
fi |
||||
|
||||
[ "$SIMPLE" != "true" ] && echo "$line" |
||||
done <<<"$MANIFEST" |
||||
|
Loading…
Reference in new issue