我正在尝试用新的随机密码替换多个文件中存在的密码。 我想出了一种使用sed来执行此操作的方法,但是问题是,当我将此sed运行到文件中时,它会将所有密码替换为相同的值,而每个密码都必须使用不同的密码。
cat admin/secrets.ini | sed -e "s/"password:\ .*"/"password:\ `openssl rand -base64 18`"/g"
sed前的grep
sh-3.2# grep -i password adminsrv/secrets.ini
x_db_password: d3RBSmhykadfnvkadfWcHdDUA==
y_db_password: WXNKVFEunfvabfvlURzNFeQ==
z_password: Ymfvmidmlu
sed后的grep
sh-3.2# grep -i password adminsrv/secrets.ini
x_db_password: uTtDyP7aNeONxxOD7MhFH5Eb
y_db_password: uTtDyP7aNeONxxOD7MhFH5Eb
z_password: uTtDyP7aNeONxxOD7MhFH5Eb
在这里,我希望将每个值替换为多个此类文件中的新随机值。
如果没有其他方法可以在单个脚本中执行此操作,请提出建议。
答案 0 :(得分:1)
这是一个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
答案 1 :(得分:0)
您的意思是这样的:
QWizardPage
答案 2 :(得分:0)
最后是工作脚本。感谢@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