用于Cisco设备的Bash脚本

时间:2014-05-20 19:53:01

标签: bash shell cisco

我尝试执行连接到Cisco交换机的bash脚本,并在使用name创建的文件中打印输出 - > TimestampDeviceXX_Check.txt 并在比较输出后查看输出文件是否存在差异。 (它们必须相同,因为它们的配置必须对齐)。

我已经有了连接交换机的脚本,所以我只需要输入xxx.sh即可登录设备。

这是我想要创造的想法,如果你帮助我,我会很感激:

我是bash脚本的新手,我知道我做了一些错误....我希望你能帮助我

谢谢,问候T.:)

#!/bin/bash

devices="
./Shop1/Sw1-ab2.sh  
./Shop2/Sw1-cd1.sh  
./Shop3/Sw1-ef1.sh  
"


outdir=$(./Check/$(date +%Y%m%d)/Check_$(date +%Y%m%d%H%M%S).dir)

for device in $devices; do

        logfile=${outdir}/$(basename ${device} .sh).txt
        if[! -e $logfile] ; then
                touch $logfile
        fi
        expect <<- END > ${logfile}
                spawn "${device}"
                expect "#"
                send "terminal length 0\r"
                expect "*#"
                send "show running-config | begin mac access-list extended \n"
                expect "#"
                send "show mac address-table vlan xx\n"
                expect "#"
                send "show mac address-table vlan xx\n"
                expect "#"
                send "exit\r"
                expect closed

        END

        echo ${device}
        echo "==================================="
        echo
>done

2 个答案:

答案 0 :(得分:0)

您正尝试在尚不存在的目录中创建文件。您可以在尝试在那里写入文件之前使用mkdir创建目录来解决此问题。在脚本中的mkdir -d ${outdir}行之后添加outdir=...来电,如下所示:

outdir=$(./Check/$(date +%Y%m%d)/Check_$(date +%Y%m%d%H%M%S).dir)
mkdir -p ${outdir}

答案 1 :(得分:0)

这是输出:

第11行:./Check/20140521/Check_20140521100217.dir:没有这样的文件或目录mkdir:缺少操作数尝试使用mkdir --help'获取更多信息。 ./script.sh:line 17:意外令牌附近的语法错误然后'./script.sh:line 17:`if [! -e $ logfile];然后