shell script help
Harry Hoffman
hhoffman at ip-solutions.net
Fri Aug 19 19:20:37 UTC 2005
Steve,
check out the "Advanced Bash Scripting Guide". It's a very good tutorial.
Cheers,
Harry
Steve Buehler wrote:
> I am hoping that someone here can help me with a shell script. I
> can do this in PHP but am trying to learn how to script better in a
> shell script.
> What I am trying accomplish here is to get all of this into one
> script and do it more efficiently:
> 1. Get all db.domainname.extension files in the /var/named directory
> 2. Replace any occurance of a line that starts with
> "mail\s\+A\s\+192.168.22[4-5].*" with "mail\t\t\tA\t192.168.1.4"
> 2.a. For testing, I am copying these to another directory first and
> doing all work in the test directory until the script works perfectly.
> 3. If the file gets changed, I need it to put the file name without the
> leading "db." into test.txt in the following format:
> to:domainname.extension RELAY
> 4. If the file already has the line of "mail\s\+A\s\+192.168.1.4" in
> it, then I need it to also put that into the test.txt file in the same
> format.
> to:domainname.extension RELAY
> 5. If the file has anything but the "192.168.22[4-5].*" or
> "192.168.1.4" IP's for that line, then I don't want it to change it and
> I don't want to record it in the test.txt file.
>
> This script is going to change all of the dns records so that the
> mail.domainname.extension will point to our new email server. I want to
> get it automated so that if anybody sets a site up in our Ensim control
> panel, it will make these changes and then I can create a script that
> will move the test.txt file over to the email server in an "access"
> file, then make the access.db and restart sendmail/MailScanner. I will
> eventually test to see if there are any changes in the old and new
> access files and if not, it won't restart sendmail/MailScanner. I
> figure that I will run this twice a day.
>
> Right now, I am doing this in two separate scripts and it doesn't do
> everything I want here anyway.
> Here is what I have so far:
> ----start test.sh file----
> #!/bin/sh
> cp -pf /var/named/db* .
> for i in `ls db.*`
> do
> echo $i
> mv $i $i.$$
> sed 's/mail\s\+A\s\+192.168.22[4-5].*/mail\t\t\tA\t192.168.1.4/' $i.$$ > $i
> rm $i.$$
> done
> ----end test.sh file----
>
> ----start test2.sh file----
> #!/bin/sh
> for i in `ls db.*`
> do
> echo $i
> grep -H 'mail\t\t\tA\t192.168.1.4'
> rm $i.$$
> done
> ----end test2.sh file----
>
> Thanks in advance for any help.
> Steve
>
More information about the redhat-list
mailing list