我尝试使用phpMyAdmin配置文件添加一条河豚键。
这是我到目前为止所拥有的......
int ascii = 10003;
我没有收到任何错误,但是没有按预期工作。
k=$(openssl rand -base64 32)
o="\$cfg['blowfish_secret'] = '';"
n="\$cfg['blowfish_secret'] = '$k';"
sed -i -e 's/'"$o"'/'"$n"'/g' /var/www/phpmyadmin/config.inc.php
返回
echo -e "$k\n$o\n$n"
和...
Jgcv3FlugcVi5rDYLCdNhxX6sEZatt0zTZV3PISiLJY=
$cfg['blowfish_secret'] = '';
$cfg['blowfish_secret'] = 'Jgcv3FlugcVi5rDYLCdNhxX6sEZatt0zTZV3PISiLJY=';
返回
cat /var/www/phpmyadmin/config.inc.php | grep blowfish
请帮忙!
答案 0 :(得分:1)
所以这个:
k=$(openssl rand -base64 32)
o="\$cfg['blowfish_secret'] = '';"
n="\$cfg['blowfish_secret'] = '$k';"
sed -i -e 's/'"$o"'/'"$n"'/g' /var/www/phpmyadmin/config.inc.php
改为:
k=$(openssl rand -base64 32)
o="\$cfg\['blowfish_secret'\] = '';"
n="\$cfg\['blowfish_secret'\] = '$k';"
sed -i -e 's/'"$o"'/'"$n"'/g' /var/www/phpmyadmin/config.inc.php
现在它有效。
编辑:
由于 openssl rand -base64 32 可以生成带有斜杠的字符串,因此最好立即将其转义。另外,我毕竟选择使用perl。这是更正后的代码:
k=$(openssl rand -base64 32 | sed 's,\/,\\/,g')
o="\$cfg\['blowfish_secret'\] = '';"
n="\$cfg\['blowfish_secret'\] = '$k';"
sudo perl -p -i -e "s/$o/$n/g" /var/www/phpmyadmin/config.inc.php
答案 1 :(得分:0)
如果你想在搜索和替换字符串中使用所有类型的特殊正则表达式元字符,这是使用awk
执行该操作的非正则表达方式:
# utility function to format search and replace strings
frmt() {
printf "\$cfg['blowfish_secret'] = '%s';" "$1"
}
# awk command to perform search and replace using plain text search
awk -v s="$(frmt "")" -v r="$(frmt "$k")" 'n=index($0, s) {
print r substr($0, n+length(s))
}' /var/www/phpmyadmin/config.inc.php
PS:请注意,上面的awk
命令不会对文件进行内联编辑。如果您想这样做,请使用-i inline
提供的gnu-awk
选项作为:
awk -i inline -v s="$(frmt "")" -v r="$(frmt "$k")" 'n=index($0, s) {
print r substr($0, n+length(s))
}' /var/www/phpmyadmin/config.inc.php