Замените старый пароль новым случайным паролем в нескольких файлах, используя шеллскрипт - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь заменить пароли, присутствующие в нескольких файлах, на новые случайные пароли.Я придумал способ с помощью sed сделать это, но проблема в том, что когда я запускаю этот sed в файл, он заменяет все пароли одинаковыми значениями, которые имеют разные значения для каждого значения.

cat admin/secrets.ini | sed -e "s/"password:\ .*"/"password:\ `openssl rand -base64 18`"/g"

Grep before sed

sh-3.2# grep -i password adminsrv/secrets.ini
x_db_password: d3RBSmhykadfnvkadfWcHdDUA==
y_db_password: WXNKVFEunfvabfvlURzNFeQ==
z_password: Ymfvmidmlu

Grep after sed

sh-3.2# grep -i password adminsrv/secrets.ini
x_db_password: uTtDyP7aNeONxxOD7MhFH5Eb
y_db_password: uTtDyP7aNeONxxOD7MhFH5Eb
z_password: uTtDyP7aNeONxxOD7MhFH5Eb

Здесь я хочу, чтобы каждое значение было заменено новым случайным значением в нескольких таких файлах.

Пожалуйстапредложить, если есть какой-либо другой способ сделать это в одном скрипте.

Ответы [ 3 ]

1 голос
/ 10 июля 2019

Вот версия awk, которая, кажется, работает.

cat admin/secrets.ini
Not this
x_db_password: d3RBSmhykadfnvkadfWcHdDUA==
y_db_password: WXNKVFEunfvabfvlURzNFeQ==
z_password: Ymfvmidmlu
Not this

awk '/password/ {printf "%s ",$1;system("openssl rand -base64 18")} !/password/' admin/secrets.ini
Not this
x_db_password: d3RBSmhykadfnvkadfWcHdDUA==
y_db_password: WXNKVFEunfvabfvlURzNFeQ==
z_password: Ymfvmidmlu
Not this
0 голосов
/ 10 июля 2019

Наконец-то рабочий скрипт. Благодаря @ Jotne

N=$(date +%s)
rsync --recursive secrets/core/* secrets/$N/
for i in `find secrets/$N/* -iname secrets.ini`; 
do 
awk '/password/ {printf "%s ",$1;system("openssl rand -base64 18")} !/password/' $i > $i.tmp && mv $i.tmp $i; 
done
0 голосов
/ 10 июля 2019

Вы имеете в виду что-то подобное:

#!/bin/bash
while read -r line; do
   echo "${line% *} $(openssl rand -base64 18)" 
done < secrets.ini > new_secrets.ini
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...