我尝试执行连接到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
答案 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];然后