Solved

shell script to recursively search and find/replace text in target files

Posted on 2011-02-16
7
536 Views
Last Modified: 2012-05-11
Hello All,

This is probaably a 1 minute solution for many script maseters, but for me is quite muddy.

Task:
1. Recursively search  all child directories for file WP-CONFIG.PHP
2. Find all "Lines" that begin with define('DB_PASSWORD', 'xxxxxx');   -- note 'xxxxxx' can be any length text.
3. Replace the 'xxxxxxx' text with new text that I would supply as paramter argument upon running the script.
4. Produce a count of the number of times the script found and editied a WP-CONFIG.PHP file.

Thats it.
0
Comment
Question by:Louis Capece
7 Comments
 
LVL 6

Expert Comment

by:de2Zotjes
ID: 34907589
#!/usr/bin/env bash

REPLACE=$1
n=0
for entry in $(find . -name WP-CONFIG.PHP -a -type f); do
    n=$(($n+1))
    sed -e "s/^define\('DB_PASSWORD','[^']*'/define('DB_PASSWORD','$REPLACE'/" -i $entry
done

echo $n

Open in new window


Line 3 takes the first command line argument and puts it in the REPLACE var
Line 5 uses the find utility to locate every file named WP-CONFIG.PHP under the current dir
Line 7 replaces every occurence of ....DB_PASSWORD with the text in REPLACE var
 

0
 
LVL 4

Expert Comment

by:florjan
ID: 34907612
find . -iname "WP-CONFIG.PHP" -print | xargs sed -i 's/oldpass/newpass/g'
grep -lr "newpas" .

Open in new window

Make sure to escape(backslash\ any special characters) and to tell me if there is any other line same as password so I can adapt the script/
0
 
LVL 31

Expert Comment

by:farzanj
ID: 34907632
1.  ls -R WP-CONFIG.PHP
or  find . -type f -name WP-CONFIG.PHP
2. grep -R '^define(\'DB_PASSWORD\''

3.  sed "s/xxxxx/yyyyy/g" $1
4.  #Before modifying the script
     Precount=$(grep -c "XXXX" WP-CONFIG.PHP)
     #Edit using above
     Postcount=$(grep -c "XXXX" WP-CONFIG.PHP)
     Edited=$(( Precount - Postcount ))
0
Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

 

Author Comment

by:Louis Capece
ID: 34909944
Could someone please confirm this, I suspect there may be confusion...
the existing password is NOT known, it could be anything that is beween the single quotes.

In a nutshell, what I an trying to do is alter all the WP_CONFIG.PHP "Define Password" statement to a single value....the existing passwords are all different.
0
 
LVL 12

Expert Comment

by:tel2
ID: 34910642
Hi louiscapece,

de2Zotjes's solution seems to cater for any existing password.
But I don't think it caters for the space you have between the comma and the 'xxxxxx' (old password).  To make it flexible in this regard (i.e. to handle 0 or more spaces there), maybe change line 7 to something like this:
    sed -e "s/^define\('DB_PASSWORD', *'[^']*'/define('DB_PASSWORD', '$REPLACE'/" -i $entry
0
 
LVL 4

Accepted Solution

by:
florjan earned 500 total points
ID: 34910645
find . -iname "WP-CONFIG.PHP" -print | xargs sed -i "s/('DB_PASSWORD', '.*')/('DB_PASSWORD', 'newpassword')/g"
grep -lr "newpas" .

Open in new window

0
 
LVL 4

Expert Comment

by:florjan
ID: 34910669
I have tested script from my last post on gentoo on my test wp install in bash and it worked.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

SSH (Secure Shell) - Tips and Tricks As you all know SSH(Secure Shell) is a network protocol, which we use to access/transfer files securely between two networked devices. SSH was actually designed as a replacement for insecure protocols that sen…
Join Greg Farro and Ethan Banks from Packet Pushers (http://packetpushers.net/podcast/podcasts/pq-show-93-smart-network-monitoring-paessler-sponsored/) and Greg Ross from Paessler (https://www.paessler.com/prtg) for a discussion about smart network …
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question