我有两个结合使用的脚本。这是因为我有大量的命令需要批量发送到路由器/交换机。
完全公开,我没有编写这些脚本,它们是由不再与我合作的人编写的,我对期望的了解非常有限。
第一个脚本(脚本A)使我可以从中央框同时在许多设备上执行脚本,同时将脚本结果输出到文件中。
#!/bin/bash
let j=0;
let sleeptime=20;
let numberInstance=20;
if [ $# -lt "3" ]
then
echo "Missing Parameters:"
echo "start <script-name> <output-directory> <sites-file>"
exit 1
fi
for s in `cat ${3}`
do
echo Processing: $s on `date`;
./$1 ${s}${4} > ./$2/${s}-${4} &
let j+=1;
if [ `expr $j % $numberInstance` -eq 0 ]
then
echo sleeping for ${sleeptime} seconds...sites processed: $j;
sleep $sleeptime;
fi
done
第二个脚本(脚本B)是一个期望脚本,它会生成并与设备进行SSH会话并向该设备发送命令列表。
这很好,但是在无法到达设备的情况下,脚本A从脚本B返回错误:
$ ./start_sw_FAST LH108_S2 Results/LH108_S2 inputlist
Processing: Site1 on Thu Mar 19 14:31:07 EDT 2020
Processing: Site2 on Thu Mar 19 14:31:07 EDT 2020
Processing: Site3 on Thu Mar 19 14:31:07 EDT 2020
Processing: Site4 on Thu Mar 19 14:31:07 EDT 2020
$ can not find channel named ""
while executing
"send "edit\r""
(file "./LH108_S2" line 69)
can not find channel named ""
while executing
"send "edit\r""
(file "./LH108_S2" line 69)
can not find channel named ""
while executing
"send "edit\r""
(file "./LH108_S2" line 69)
在这种情况下,我知道这些位置将失败。但是,当我一次运行数百次时,我希望提示能够说出类似的内容:
Failed to execute script on Site1.
Failed to execute script on Site2.
Failed to execute script on Site3.
Failed to execute script on Site4.
我不确定如何使脚本A意识到脚本B的失败。
请添加期望脚本。