#!/bin/bash IFS= HOSTNAME=/home/rancid/var/rancid/network/configs/$1 pho() { echo "<"$1">" } phc() { echo "" } get_object() { OBJN=$1 #egrep -A 100 "$OBJN$" $HOSTNAME | egrep "object|subnet|host" | egrep -m2 -B 100 "^[a-z]" | head -n -1 | tail -n +2 | while read -r LINE egrep -A 100 "$OBJN$" $HOSTNAME | egrep -m2 -B 100 "^[a-z]" | head -n -1 | tail -n +2 | while read -r LINE do if [[ "$LINE" =~ "group-object" ]] then echo "
>>> $LINE" else echo $LINE fi if [[ "$LINE" =~ "group-object" ]] then OBJNN=$(echo $LINE | awk '{print $2}') get_object $OBJNN echo " <<< group-object $OBJNN

" elif [[ "$LINE" =~ "network-object object" ]] then OBJNN=$(echo $LINE | awk '{print $3}') get_object $OBJNN echo "" else I=1 fi done } pho html pho head echo " " phc head pho body pho "table cellspacing=1 cellpading=1" # pick crypto map entry egrep "crypto map .* set peer|crypto map .* ipsec-isakmp dynamic" $HOSTNAME | grep -v 65535 | while read -r LINE ; do NR=$(echo "$LINE" | awk '{print $4}') CM=$(echo "$LINE" | awk '{print $3}') pho tr pho "td valign=top style='white-space: pre'" echo "Tunnel" echo "#"$NR phc td; pho "td valign=top style='white-space: pre'" echo "Crypto Map:" echo "$CM" phc td pho "td valign=top style='white-space: pre'" #get peer for cm entry echo "Peer(s):" PEER=$(egrep "crypto map .* $NR set peer|crypto map .* $NR ipsec-isakmp dynamic" $HOSTNAME | awk '{print $7 " " $8 " " $9}') PEERIP=$PEER echo $PEER | sed 's/ /
/g' phc td pho "td valign=top style='white-space: pre'" #get acl for cm entry ACL=$(egrep "crypto .*map .* $NR match address" $HOSTNAME | awk '{print $7}') echo "Access-List:" echo $ACL phc td pho "td valign=top style='white-space: pre'" ACEl=$(egrep "access-list $ACL " $HOSTNAME | awk '{print $6 " " $7}') echo "Lokal:" echo $ACEl | while read -r LINEl do echo $LINEl if [[ "$LINEl" =~ "object" ]] then OBJN=$(echo $LINEl | awk '{print $2}') get_object $OBJN fi done phc td pho "td valign=top style='white-space: pre'" ACEr=$(egrep "access-list $ACL " $HOSTNAME | awk '{print $8 " " $9}') echo "Remote:" echo $ACEr | while read -r LINEr do echo $LINEr if [[ "$LINEr" =~ "object" ]] then OBJN=$(echo $LINEr | awk '{print $2}') get_object $OBJN fi done phc td phc tr pho tr pho "td style='border-style: none'" phc td pho "td colspan=5" for IP in `echo $PEERIP | sed 's/ /\n/'` do IP=$(echo $IP | sed 's/ //') grep -A 3 "tunnel-group $IP" $HOSTNAME | grep "isakmp keepalive" && pho br GP=$(egrep -A 3 "tunnel-group $IP" $HOSTNAME | grep "default-group-p" | sed 's/ default-group-policy //') echo "Group-Policy: $GP
" done egrep "crypto map .* $NR " $HOSTNAME | grep pfs | awk '{print $6 " " $7 "
"}' egrep "crypto map .* $NR " $HOSTNAME | grep security | awk '{print $6 " " $7i " " $8 " " $9 "
"}' egrep "crypto map .* $NR " $HOSTNAME | grep transform | awk '{print $7 " " $8 "
"}' phc td phc tr pho "tr height=20px" phc tr done phc table phc body phc html