update..
This commit is contained in:
54
decrypt-vault-strings-from-file.sh
Executable file
54
decrypt-vault-strings-from-file.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
vdecr() {
|
||||
unset IFS
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
if [[ -f "$1" ]]; then
|
||||
|
||||
if [[ $(head -n1 "$1") == "\$ANSIBLE_VAULT;1.1;AES256" ]]; then
|
||||
cat "$1" | ansible-vault decrypt --vault-password-file ~/.vault-pass 2> /dev/null
|
||||
return 0
|
||||
fi
|
||||
printf 'Reading vault values from file...\n\n'
|
||||
local parsing=0
|
||||
local result=""
|
||||
local name=""
|
||||
local blue=$(tput setaf 4)
|
||||
local discard=$(tput sgr0)
|
||||
for line in $(cat $1); do
|
||||
if [[ $(echo "$line" | grep -c "\!vault") -gt 0 ]] && [[ $parsing -eq 0 ]]; then
|
||||
parsing=1
|
||||
elif [[ $parsing -eq 1 ]] && [[ $( echo $line | grep -c ":") -eq 0 ]]; then
|
||||
result=$(printf "${result}\n${line}")
|
||||
else
|
||||
if [[ $result != "" ]]; then
|
||||
printf "\n\n${blue}$name${discard}\n"
|
||||
printf "$result" | vdecr
|
||||
name=""
|
||||
result=""
|
||||
parsing=0
|
||||
fi
|
||||
fi
|
||||
if [[ $( echo "$line" | grep -c ":") -eq 1 ]]; then
|
||||
name="$line"
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
fi
|
||||
local str="$1"
|
||||
elif [[ ! -t 0 ]]; then
|
||||
local str=$(cat)
|
||||
else
|
||||
printf 'Interactive mode. Paste encrypted string and press Ctrl-D two times to confirm.\n'
|
||||
local str=$(cat)
|
||||
printf '\n'
|
||||
fi
|
||||
|
||||
printf -- "$str" | sed 's/ /\n/g' | \
|
||||
sed '/---\|^.*:\|\!vault\||\|^$/d' | \
|
||||
ansible-vault decrypt --vault-password-file ~/.vault-pass 2> /dev/null
|
||||
printf '\n'
|
||||
}
|
||||
|
||||
vdecr $1
|
Reference in New Issue
Block a user