当前的部分主要是查询wordpress插件所在的数据库表wp_options, 查询结束后将需要禁用的插件从对应的字符串中删掉,然后更新表即可;
1.设置需要删除掉的插件名称
##数据库更新操作 DEL_PLU='w3-total-cache'
2.使用shell查询数据表
NEW_DB_NAME='wwwtestdbcom' CHECK_SQL="select option_value from wp_options where option_name = 'active_plugins' "; OPTSQL="use $NEW_DB_NAME;"$CHECK_SQL';' mysql -uuser -ppasswd -s -e "${OPTSQL}" > tmpsql #将查询出来的数据直接存储到文件 TXT=$(cat /data/createwebsiteshell/tmpsql) #查询出来的数据赋值给变量
3.将查询出来的数据做处理, 把需要禁用的插件删掉,重新组成一个新的数据中
查询出来数据
===========
TXT='a:4:{i:0;s:27:"autoptimize/autoptimize.php";i:1;s:36:"contact-form-7/wp-contact-form-7.php";i:2;s:26:"wordpress-seo/wp-seo.php";i:3;s:29:"wp-mail-smtp/wp_mail_smtp.php";}'
==========
DR_TXT=${TXT#*\{} #删除 { 左边的字符 DL_TXT=${DR_TXT%\}} #删除 } 右边的字符 TXT=(${DL_TXT//;/ }) #按照 ; 分割成数组 NEWARR=() for((i=0;i<${#TXT[@]};i++)) do b=$(( $i % 2 )) if [ $b = 1 ]; then ARRKEY=${TXT[$i]} ARRKEY_L=${ARRKEY#*\"} ARRKEY_R=${ARRKEY_L%/*} if [[ ! "${DEL_PLU[@]}" =~ $ARRKEY_R ]] || [[ $ARRKEY_R = 'woocommerce' ]]; then #判断当前的不在要删除的数组中的话,写入新的数组中 NEWARR+=("$ARRKEY") fi fi done
4.重新组合成相同格式的串, 然后更新到数据库中
ARR_LEN=${#NEWARR[*]} UPDATE_STR='a:'$ARR_LEN':{' for((i=0;i<${#NEWARR[@]};i++)) do str='i:'$i';'${NEWARR[$i]}';' UPDATE_STR=$UPDATE_STR${str} done UPDAE_SQL="'"$UPDATE_STR"}'" UPDATQ_RUN="use $NEW_DB_NAME; update wp_options set option_value=$UPDAE_SQL where option_name = 'active_plugins'" mysql -uuser -ppasswd -e "${UPDATQ_RUN}"