Help in find and replace.


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Help in find and replace.
# 8  
Old 06-25-2008
@rodoulv:
No my password will change depending on the user name.
password tomcat will have a different encrypted key wherein admin will have a different encrypted key.

Thanks!
nua7
# 9  
Old 06-25-2008
@radoulov
Thanks a lot for the command! Your commadn works exactly fine except that it is changing the password for all the vlaues in the file.It should change valur onlt for the corresponding value, for which it is encrypted.

I tried this command, but it is not working..

Code:
perl -i.bak -pe's/(password=$ENV{i}").*?"/$1$ENV{en_passwd}"/' tomcat-users.xml

Any help would be appreciated.
# 10  
Old 06-25-2008
Something like this:
Code:
perl -i.bak -p '-MDigest::SHA1 qw(sha1_base64)' -e'
  s/(password=")([^"]*)/$1.sha1_base64($2)/e' tomcat-users.xml


Last edited by radoulov; 06-25-2008 at 07:31 AM..
# 11  
Old 06-25-2008
Sorry for quoting the question wrong.

I have an script which gives me encrypted key, which I store it in $en_passwd.

Your command works perfectly fine except that it is replacing all the passwords with the same value.
Code:
perl -i.bak -pe's/(password=").*?"/$1$ENV{en_passwd}"/' tomcat-users.xml

I have the following file:

Code:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="admin" roles="role1"/>
  <user username="both" password="mgr" roles="tomcat,role1"/>
  <user username="admin" password="testing" roles="admin,manager"/>
</tomcat-users>

When I run your command , the output is

Code:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="0567577538383" roles="tomcat"/>
  <user username="role1" password="0567577538383" roles="role1"/>
  <user username="both" password="0567577538383" roles="tomcat,role1"/>
  <user username="admin" password="0567577538383" roles="admin,manager"/>
</tomcat-users>

Since only tomcat is encrypted, i need to change only the value of password="tomcat".

I would run the command in a for loop for other passwords.

Please let me know if I have confused you.
# 12  
Old 06-25-2008
Did you try the last script?
(without the rest of your code)

Code:
radoulov@linux-jgly:~/t> cat tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="admin" roles="role1"/>
<user username="both" password="mgr" roles="tomcat,role1"/>
<user username="admin" password="testing" roles="admin,manager"/>
</tomcat-users>
radoulov@linux-jgly:~/t> perl -i.bak -p '-MDigest::SHA1 qw(sha1_base64)' -e'
>   s/(password=")([^"]*)/$1.sha1_base64($2)/e' tomcat-users.xml
radoulov@linux-jgly:~/t> cat tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="U2wLM5NFYWwbM8r0VEVNi4oZDWw" roles="tomcat"/>
<user username="role1" password="0DPiKuNIrrVmD8IUCuw1hQxNqZc" roles="role1"/>
<user username="both" password="W/z75CjM5CiVJ4eXhkPypZk0OKo" roles="tomcat,role1"/>
<user username="admin" password="3HJK8Y+91OWRifX+dopfgxFScFA" roles="admin,manager"/>
</tomcat-users>

# 13  
Old 06-25-2008
Yes I tried the earlier command. Following is the error.I am not familiar with perl, so can't make out what the error is..

Code:
[root@catinfo conf]# perl -i.bak -p '-MDigest::SHA1 qw(sha1_base64)' -e'
> >   s/(password=")([^"]*)/$1.sha1_base64($2)/e' tomcat-users.xml
Can't locate Digest/SHA1.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .).
BEGIN failed--compilation aborted.
[root@catinfo conf]#

# 14  
Old 06-25-2008
OK,
you should install the module first.
Otherwise you can call your digest.sh from within your perl script,
could you give an example output of digest.sh, post the output of the following command:

Code:
/opt/coreservices/tomcat-5.5.9/bin/digest.sh -a sha tomcat

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find and replace?

Hi All, I have data like below 1 CREATE TABLE temp123 2 ( 3 col1 INTEGER, 4 col2 CHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC, 5 col3 DECIMAL(19,0), 6 col4 VARCHAR(80) CHARACTER SET LATIN NOT CASESPECIFIC, 7 start_dt DAte FORMAT 'YY/MM/DD', 8 end_dt DATE FORMAT 'YY/MM/DD', 9 datecol1... (6 Replies)
Discussion started by: baranisachin
6 Replies

2. Shell Programming and Scripting

Find and Replace

i am having a file test1.txt and its contents is as follows. <abcaaa bbb ccc ddd> <dddeeeffff> <my computer> <abcmydocuments> Now I need to find the text abc and should be replaced as follows. <abc> <dddeeeffff> <my computer> <abc> First line has the text "abc" and it has to be... (3 Replies)
Discussion started by: kmanivan82
3 Replies

3. Shell Programming and Scripting

Find/Replace

I have the following requirement in the shell script 1. I have more than 200 shell script files. I need to find out how many shell scripts have "sqlplus /" in the shell file 2. I need to replace all the shell scripts in the single command for example: connect scott/scott replace as ... (6 Replies)
Discussion started by: pmsuper
6 Replies

4. Solaris

find/replace?

Dear All To find a file, according to you, I tried as: #find / -name file-name -print To find a string inside the files , I tried as : #find / -name "*" |xargs grep "string" Can you please let me know how can I try for find/replace (i.e. finding the intended string inside the text files... (6 Replies)
Discussion started by: hadimotamedi
6 Replies

5. Shell Programming and Scripting

Find Replace

Need to convert echo "7 6" to $7,$6 But the count of numbers can increase say echo "7,6,8,9" tried this didn't work echo "7 6" | sed 's/\(*\)/\1/' But did not help much (3 Replies)
Discussion started by: dinjo_jo
3 Replies

6. UNIX for Dummies Questions & Answers

find and replace

I am looking to find and replace a string in a file, can anyone suggest a global find and replace. looked at previous replies on other queries but none seem to address what i am looking for. aint familiar with sed so trying to use ordinary unix commands if possible Thanks in advance (2 Replies)
Discussion started by: SummitElse
2 Replies

7. Shell Programming and Scripting

find and replace

hi, i have a data in a file like below: 100 8388kmn844., 8488 200 8398kmn894., 8398 i want replace from kmn to . as null. output should be 100 8388, 8488 200 8398, 8398 Plz help. Thanks in advance (1 Reply)
Discussion started by: javeed7
1 Replies

8. Shell Programming and Scripting

find and replace

Hi, There are some "n" files in a directory which contains comman string.A command to find and replace the string in all the files without looping. like if i am in a directory : # find ./ -name ".txt" | xargs sed -e 's/test/tst' Upto here is performed correctly and i want to... (4 Replies)
Discussion started by: rakshit
4 Replies

9. UNIX for Advanced & Expert Users

Please help with find and replace:

Hi I am trying to find a product code hightlighted in red, and re-insert it at another place on the same file. I shall be grateful if anyone can help me with this. Stuck and have deadline!!:confused: Original Line: (I can get source data in one of these two formats) ISD=977155185403901+DIE... (2 Replies)
Discussion started by: gloovy_tb
2 Replies

10. UNIX for Dummies Questions & Answers

find and replace

I have statement like this column_id.columnname=="value" in unix i want to modify above statement to variable1=="value" that means i have to replace the string before "==" by string "variable1" second catch is, in statement instead of "==" you can have any arithmatic comarision... (7 Replies)
Discussion started by: mahabunta
7 Replies
Login or Register to Ask a Question