Skip to content

Instantly share code, notes, and snippets.

@furu-nob
Last active August 29, 2015 14:02
Show Gist options
  • Save furu-nob/4bf19e1592d9f648c0f9 to your computer and use it in GitHub Desktop.
Save furu-nob/4bf19e1592d9f648c0f9 to your computer and use it in GitHub Desktop.
grep_hostname_httpd_conf.sh
#!/bin/sh -f
# version 20140623.1146
DNSCHECK_SH='/root/scripts/onetime/dns_check_existence.sh'
CONF_FROM_DIR=$(find /etc/httpd/conf.d/ -name *.conf -print)
HTTPDCONF="/etc/httpd/conf/httpd.conf $CONF_FROM_DIR"
GREP_VIRTUAL=$(cat $HTTPDCONF | grep -v ^# |grep -iE 'Virtual|alias |servername|documentroot'|grep -v ScriptAlias|sed -e "s/^[[:space:]]*//"|grep -v ^# |grep -v ^$)
createvars()
{
SERVERNAME=$(mktemp /tmp/O_SERVERNAME.tmp.XXXXXX)
DOCROOT=$(mktemp /tmp/O_DOCROOT.tmp.XXXXXX)
ALIAS=$(mktemp /tmp/O_ALIAS.tmp.XXXXXX)
NAMEVIRTUALHOST=$(mktemp /tmp/O_NAMEVIRTUALHOST.tmp.XXXXXX)
}
create_v_vars()
{
V_VERTUALHOST=$(mktemp /tmp/O_V_VERTUALHOST.tmp.XXXXXX)
V_SERVERNAME=$(mktemp /tmp/O_V_SERVERNAME.tmp.XXXXXX)
V_DOCROOT=$(mktemp /tmp/O_V_DOCROOT.tmp.XXXXXX)
V_ALIAS=$(mktemp /tmp/O_V_ALIAS.tmp.XXXXXX)
}
removevars()
{
rm $SERVERNAME
rm $DOCROOT
rm $ALIAS
rm $NAMEVIRTUALHOST
}
remove_v_vars()
{
rm $V_VERTUALHOST
rm $V_SERVERNAME
rm $V_DOCROOT
rm $V_ALIAS
}
OUTPUT_FILE='./OUTPUT.txt'
V_OUTPUT_FILE='./V_OUTPUT.txt'
CHECK_DNSHOSTNAME_FILE='./CHECK_DNSHOSTNAME.txt'
URI='./URI.txt'
NOT_VIRTUAL_LINE=$(echo "$GREP_VIRTUAL" | sed -n -e '/^<VirtualHost/,/^<\/VirtualHost>/!p')
VIRTUAL_LINE=$(echo "$GREP_VIRTUAL" | sed -n -e '/^<VirtualHost/,/^<\/VirtualHost>/p')
#echo "$NOT_VIRTUAL_LINE"
#echo "$VIRTUAL_LINE"
IFS=$'\n'
createvars
for LINE in $NOT_VIRTUAL_LINE ; do
FIRSTWORD=$(echo $LINE | awk '{print $1}' | tr "[:upper:]" "[:lower:]")
SECONDWORD=$(echo $LINE | awk '{print $2}')
THIRDWORD=$(echo $LINE | awk '{print $3}')
case $FIRSTWORD in
'servername')
echo $SECONDWORD >> $SERVERNAME
echo "http://$SECONDWORD/" >> $URI ;;
'documentroot')
echo $SECONDWORD >> $DOCROOT ;;
'alias')
echo "$SECONDWORD $THIRDWORD" >> $ALIAS ;;
'namevirtualhost')
echo $SECONDWORD >> $NAMEVIRTUALHOST ;;
esac
done
echo -n '|' >> $OUTPUT_FILE
SERVERNAME_TMP=$(cat $SERVERNAME | tr -d "\n")
if [ -z $SERVERNAME_TMP ]
then
echo -n 'None' >> $OUTPUT_FILE
else
echo -n $SERVERNAME_TMP >> $OUTPUT_FILE
echo -n '<br />(' >> $OUTPUT_FILE
$DNSCHECK_SH $(echo $SERVERNAME_TMP | cut -d: -f1) | tr -d "\n">> $OUTPUT_FILE
echo -n ')' >> $OUTPUT_FILE
fi
echo -n '|' >> $OUTPUT_FILE
cat $DOCROOT | tr -d "\n">> $OUTPUT_FILE
echo -n '|' >> $OUTPUT_FILE
for alias in $(cat $ALIAS | tr -d \" | sort) ; do
echo -n $alias >> $OUTPUT_FILE
echo -n '<br />' >> $OUTPUT_FILE
done
echo '|' >> $OUTPUT_FILE
echo >> $OUTPUT_FILE
for HOSTMANE in $(cat $NAMEVIRTUALHOST)
do
echo -n 'NameVirtualHost ' >> $OUTPUT_FILE
echo $HOSTMANE >> $OUTPUT_FILE
done
removevars
for LINE in $VIRTUAL_LINE ; do
FIRSTWORD=$(echo $LINE | awk '{print $1}' | tr "[:upper:]" "[:lower:]")
SECONDWORD=$(echo $LINE | awk '{print $2}')
THIRDWORD=$(echo $LINE | awk '{print $3}')
case $FIRSTWORD in
'<virtualhost')
create_v_vars
echo $SECONDWORD | tr -d "\>$" >> $V_VERTUALHOST ;;
'servername')
echo $SECONDWORD >> $V_SERVERNAME
echo "http://$SECONDWORD/" >> $URI
echo $SECONDWORD >> $CHECK_DNSHOSTNAME_FILE;;
'serveralias')
#echo $SECONDWORD >> $V_SERVERNAME
;;
'documentroot')
echo $SECONDWORD >> $V_DOCROOT ;;
'alias')
echo "$SECONDWORD $THIRDWORD" >> $V_ALIAS ;;
'</virtualhost>')
echo -n '|' >> $V_OUTPUT_FILE
cat $V_VERTUALHOST | tr -d "\n$">> $V_OUTPUT_FILE
echo -n '|' >> $V_OUTPUT_FILE
SERVERNAME_TMP=$(cat $V_SERVERNAME | tr -d "\n")
if [ -z $SERVERNAME_TMP ]
then
echo -n 'None' >> $V_OUTPUT_FILE
else
echo -n $SERVERNAME_TMP >> $V_OUTPUT_FILE
echo -n '<br />(' >> $V_OUTPUT_FILE
$DNSCHECK_SH $(echo $SERVERNAME_TMP | cut -d: -f1) | tr -d "\n">> $V_OUTPUT_FILE
echo -n ')' >> $V_OUTPUT_FILE
fi
echo -n '|' >> $V_OUTPUT_FILE
cat $V_DOCROOT | tr -d "\n" >> $V_OUTPUT_FILE
echo -n '|' >> $V_OUTPUT_FILE
for alias in $(cat $V_ALIAS | tr -d \" | sort) ; do
echo -n $alias >> $V_OUTPUT_FILE
echo -n '<br />' >> $V_OUTPUT_FILE
echo "http://$(cat $V_SERVERNAME)$(echo $alias| cut -d" " -f1)/" >> $URI
done
echo '|' >> $V_OUTPUT_FILE
remove_v_vars ;;
esac
done
echo '---'
echo
echo "h2. Apache ServerName settings $(date +%D)"
echo
echo '|_. ServerName<br />(DNSLookup)|_. DocumentRoot|_. Alias|'
cat $OUTPUT_FILE |tr -d \"
echo
echo 'h3. VirtualHost'
echo
echo '|_. VirtualIPaddress|_. ServerName<br />(DNSLookup)|_. DocumentRoot|_. Alias|'
cat $V_OUTPUT_FILE | sort -k 3 -t "|"
rm $OUTPUT_FILE $V_OUTPUT_FILE
#echo "-- Server URIs. --"
#cat $URI | sort | uniq
#rm $URI
#echo "-- Check DNS Hostname. --"
#cat $CHECK_DNSHOSTNAME_FILE | sort | uniq
#rm $CHECK_DNSHOSTNAME_FILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment