I need help with writing a "common" script that can get the httpd installs by name and install directory|ies and tar.gz them up by name and point that tar operation to the matching install directory.
I have 2 Distros that I am concerned with for this task: CentOS and Ubuntu.
Here's the facts that I've managed to collect so far:
CentOS stores http installs in either /etc/httpd/conf.d/*.conf and/or in /etc/httpd/conf/*conf files.
Ubuntu stores http installs in /etc/apache2/*.conf and/or/etc/apache2/conf.d/*.conf files. In the real world, they could be anywhere.
I started off with my old favorite "bash" but am having trouble with duplicates in the output.
I thought of perl, something I know nothing about but know there are 1000s of examples/demos/tuts on the net. Maybe later...
the "meat" of the code that I've hacked together and gets me most of the way there:
CentOS:
and spits out
Alias /cacti2 /var/www/cacti2
Alias /icinga "/usr/local/icinga/share/"
What I NEED is Field2 to be the "$APACHEPROG" variable (stripping the '/' in position #2) of course) and Field3 to be the "$APACHEPROGPATH" (stripping the quotes, if any?) for
Code:
tar -pczf "$APACHEPROG".tar.gz "$APACHEPROGPATH"
I have a generic bash script that can 'read' the OS (either Ubuntu or CentOS) and do stuff accordingly:
Code:
grep -iq "CentOS" /proc/version
if [ $? = '0' ];then
OS="CentOS"
do CentOS stuff
else
OS="Ubuntu"
do Ubuntu stuff
fi
It still needs work (error handling if NOT CentOS or Ubuntu) and some logging feature, but I'd like to get this step working first.
Any help would surely be appreciated.
I will of course post the solution on Bourne to raise $shell with credit to the contributor.
To capture part of the output of your grep into a variable you can do following:
Code:
your_script | while read col1 col2 col3; do # this will place "words" of your output into col1 col2 col3 variables
APACHEPROG=${col2#?}; # this removes 1st char from second word and stores into APACHEPROG
now you can do your tar -pczf ...
done
Thanks migurus:
I re-thought the process and got a solution for CentOS
Code:
### Set/force "uniqueness" of tar archive in a general way
TARDATE=$(date '+%m-%d-%Y.%s')
### Set the Apache conf and conf.d directories and
### IGNORE all Apache installed defaults ("home|ScriptAlias|#|doc|error|icons|javascript") from .conf files
APACHEPROGBASE=$(grep -h "Alias /" /etc/httpd/conf.d /etc/httpd/conf/ -R | egrep -v "home|ScriptAlias|#|doc|error|icons|javascript" | awk '{print $2 " "$3}')
### Get the APACHE PROgram NAMEs to be used in the tar operation
APACHEPROGNAME=$(echo "$APACHEPROGBASE" | awk '{print $1}' | sed -e 's/\///g')
### Get the APACHE PROgram PATHs to "$APACHEPROGNAME"
APACHEPROGPATH=$(echo "$APACHEPROGBASE" | awk '{print $2}')
### tar up the results
for i in "$APACHEPROGBASE" ; do echo tar -pczf "$APACHEPROGNAME"."$TARDATE".tar.gz "$APACHEPROGPATH" ; done
tar -pczf zabbix.05-05-2012.1336255870.tar.gz /usr/local/share/zabbix
1\2 way there...
The Ubuntu host however barfs with this:
Code:
for i in "$APACHEPROGBASE" ; do echo tar -pczf "$APACHEPROGNAME"."$TARDATE".tar.gz "$APACHEPROGPATH" ; done
tar -pczf cacti2
icinga.05-05-2012.1336256926.tar.gz /var/www/cacti2
/usr/local/icinga/share/
I "think" it may be the 'echo" messing with my head.
CentOS bash is GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Ubuntu bash is GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
Thanks for listening to me go on about this.
Edit: I wish it was simply the echo messing with me, but apparently not...
Code:
echo "$APACHEPROGBASE"
/cacti2 /var/www/cacti2
/icinga /usr/local/icinga/share/
root@icinga:/tmp# echo "$APACHEPROGNAME"
cacti2
icinga
root@icinga:/tmp# echo "$APACHEPROGPATH"
/var/www/cacti2
/usr/local/icinga/share/
...
for i in "$APACHEPROGNAME" ; do tar -pczf "$APACHEPROGNAME".tar.gz "$APACHEPROGPATH" ; done
tar: Removing leading `/' from member names
tar: /var/www/cacti2\n/usr/local/icinga/share: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Hi 2 all,
i have had AIX 7.2
:/# /usr/IBMAHS/bin/apachectl -v
Server version: Apache/2.4.12 (Unix)
Server built: May 25 2015 04:58:27
:/#:/# /usr/IBMAHS/bin/apachectl -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_worker_module (static)
... (3 Replies)
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address
and column 3 contains “cc” e-mail address to include with same email.
Sample input file, email.txt
Below is an sample code where... (2 Replies)
The system don't boot.
on the screen appears following:
press enter to maintenance (or type CTRL-D to continue)...I checked with format command.
... the slices "0-root","1-swap","2-backup" exist.
...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
logs:
"/home/abc/public_html/index.php"
"/home/abc/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
how to use "cut" or "awk" or "sed" to get the following result:
abc
abc
xyz
xyz
xyz (8 Replies)
Hi,
I have line in input file as below:
3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL
My expected output for line in the file must be :
"1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL"
Can someone... (7 Replies)
Hi all,
can any one suggest me the script to grep multiple strings from ps -ef
pls correct the below script . its not working/
i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK.
bash-3.00$ ps -ef | grep blu
lscpusr 48 42 ... (11 Replies)
Hi Friends,
Can any of you explain me about the below line of code?
mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`
Im not able to understand, what exactly it is doing :confused:
Any help would be useful for me.
Lokesha (4 Replies)