Linux bash脚本远程ssh ping on单元(cisco)结果有一半响应

Linux bash脚本远程ssh ping on单元(cisco)结果有一半响应,linux,bash,shell,ssh,cisco,Linux,Bash,Shell,Ssh,Cisco,我正在尝试通过ssh捕获/管道ping来自远程cisco路由器的响应(请参阅脚本)。一切工作正常,但仅在ping管道中断时开始“!”ping来自路由器目标的响应: routername#ping xxx.xxx.xxx.xxx source loopback xx Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to xxx.xxx.xxx.xxx, timeout is 2 seconds: Packet sent wi

我正在尝试通过ssh捕获/管道ping来自远程cisco路由器的响应(请参阅脚本)。一切工作正常,但仅在ping管道中断时开始“!”ping来自路由器目标的响应:

routername#ping xxx.xxx.xxx.xxx source loopback xx
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to xxx.xxx.xxx.xxx, timeout is 2 seconds:
Packet sent with a source address of xxx.xxx.xxx.xxx
!
就这些。。。它似乎在第一个“!”之后破裂

在这种情况下,可以很好地捕获并返回整个ping结果:

ssh "user@$1" 'ping xxx.xxx.xxx.xxx source loopback xx' > log
ssh user@$1 "ping xxx.xxx.xxx.xxx source loopback xx" | tee -a log
但仅作为单行命令。 我该怎么做才能捕获整个输出直到结束

我的剧本:

#!/bin/bash
echo "$1"
var1=$(ssh user@$1 << "ENDSSH"
sh version | incl System image file
sh ip interface INTx  | incl MTU
show controllers VDx | incl Speed
sh cellular 0 radio | include RSS
sh cellular 0 netw | include Selected
ping xxx.xxx.xxx.xxx source loopback xx
ENDSSH)
echo "$var1" > log
#/bin/bash
回音“$1”
var1=$(ssh用户@$1日志)

如果我以后想用var1做更多的事情,我会这样做

var1=$(ssh user@$1 "ping xxx.xxx.xxx.xxx source loopback xx; SSHEND")

echo "$var1" > log
但是,只有当文本中没有控件字符时,它才是好的

这将具有从std out隐藏输出的效果,相当于

ssh user@$1 "ping xxx.xxx.xxx.xxx source loopback xx; morecommands" > log
你可能想在stdout中输出,而且有很多方法可以实现

ssh user@$1 "ping xxx.xxx.xxx.xxx source loopback xx" | tee -a log
当所有其他操作都失败时,将所有远程命令放入脚本并远程执行该脚本

一艘班轮

tf=$(mktemp); echo "ping xxx.xxx.xxx.xxx source loopback xx">$tf; output=$(ssh user@$1 bash -s < $tf); echo $output; rm -f $tf
tf=$(mktemp);echo“ping xxx.xxx.xxx.xxx源循环xx”>$tf;output=$(ssh用户@$1 bash-s<$tf);echo$output;rm-f$tf

maybe
var1=“$(ssh…)
会有帮助。祝你好运。你必须使用。的确……但是我在ENDSSH中使用了更多的命令,比如show version等等……当其他命令运行良好时,ping会在第一个命令之后中断!……我不知道为什么……你可以用几种方式分离命令,“;”将启动一个新命令,&&“如果第一个命令成功,将执行第二个命令,并且”||'如果第一个问题没有按照您陈述问题的方式解决,那么使用ENDSSH作为标签是有效的bash语法,因此也许可以扩展您的问题以包括您的注意事项。嘿,calvin…非常感谢…只有ssh用户@$1“ping xxx.xxx.xxx.xxx源环回xx”| tee-一个日志给我完整的日志响应应该是什么样子---!!!成功率是100%(5/5),往返最小/平均/最大=40/43/48毫秒----我如何在同一ssh中执行更多命令?比如:var1=$(ssh用户@$1 log----虽然这些都是之前的allready ok,但我从他们所有人那里得到了响应,除了ping命令,在路由器发出第一个ping响应符号(感叹号“!”后,要记录的管道断开了!)