中兴M6000-18S设备配置文件过滤,采集此类设备的vbui大段配置
此脚本尚未完成,存在问题如下:
1、文件内循环结束出现问题,导致出现异常输出。
2、IP地址提取部分尚未编写完成。
3、vbui行号取值出现重复,重复内容为不需要内容。
完成部分如下:
1、可以正常提取大段备注名
2、可以正常提取大段VPN号
脚本如下:
#!/bin/bash #中兴M6000-18S设备配置文件过滤 #1 interface vbui1 #2 description XXX #3 ip vrf forwarding XXX #4 ip address X.X.38.1 255.255.255.0 #5 $ PWD=`cd "$( dirname "$0" )" && pwd` ZTLIST=(`cat $PWD/ztmselist`) ZTLISTSUM=${#ZTLIST[@]} COUNTER1=0 #自定义函数获取vbui号 shvbui(){ VBWC=`echo "$CONTENT" | grep "interface vbui" |wc -l` if [ $VBWC -ne 0 ];then VBS=`echo "$CONTENT" | awk '{print $3}'` echo $VBS fi } #自定义函数获取备注 shdp(){ DPWC=`echo "$CONTENT" | grep "description" |wc -l` if [ $DPWC -ne 0 ];then DPS=`echo "$CONTENT" | awk '{print $3}'` echo $DPS fi } #自定义函数获取VPN号 shvpn(){ VPNWC=`echo "$CONTENT" | grep "ip vrf forwarding" |wc -l` if [ $VPNWC -ne 0 ];then VPNS=`echo "$CONTENT" | awk '{print $5}'` echo $VPNS fi } #自定义函数调用IP掩码 ship(){ #IP能够存在多个,死循环自动生成变量,验证变量是否存在,变量总数大于2,在每行填充其他函数获取的值 IPWC=`echo "$CONTENT" | grep "ip address" |wc -l` IPSUM= #尚未完成编写 while true do if [ $IPWC -ne 0 ];then IPS=`echo "$CONTENT" | awk '{print $5}'` echo $IPS fi done } while true do #获取vbui起始行号(此处获取出现问题) SED=(`cat -n ${ZTLIST[$COUNTER1]}|grep "^interface vbui"|awk '{print $1}'`) SEDSUM=${#SED[@]} COUNTER2=0 while true do SED1=${SED[$COUNTER2]} #开始对每一个vbui进行处理 while true do #获取实质内容 #CONTENT=`cat -n ${ZTLIST[$COUNTER1]}|sed -n ${SED[$COUNTER2]}p ` CONTENT=`cat -n ${ZTLIST[$COUNTER1]}|sed -n ${SED1}p ` #自定义函数处理数据 #测试输出效果,尚未进行汇总成表格,此处测试通过,因循环停止出现问题导致输出存在问题 shvbui $CONTENT shdp $CONTENT shvpn $CONTENT IF1=`cat ${ZTLIST[$COUNTER1]}|sed -n ${SED1}p | sed 's/[ \t]*//g'` if [ "$IF1" == '$' ];then break fi SED1=$((SED1+1)) #此处结束循环出现问题 done #整理数据,成csv格式 #echo "XXX" >> XXX.csv if [ $COUNTER2 -eq $SEDSUM ];then break fi COUNTER2=$((COUNTER2+1)) done if [ $COUNTER1 -eq $UPTIMESUM ];then #退出死循环 break fi COUNTER1=$((COUNTER1+1)) done
发表评论