cat tcpping_summarize.sh
#!/bin/bash
#####################################################################
#
#SCRIPT NAME : tcpping_summarize.sh
# PLATFORM : Linux
# USAGE : sh tcpping_summarize.sh XX.XX.XX.XX PORT
# FUNCTION : 主机执行脚本,脚本会不断发送 tcpping 请求,并输出每次请求的响应时间或超时信息。在脚本结束时,会输出统计信息,包括发送和接收的数据包数量、最小、最大和平均响应时间。
# NOTE:注意该脚本一旦执行会持续运行,注意使用完之后关闭。
# DEPENDENTS:注意该脚本依赖tcpping和bc命令,如果没有安装,需要安装。
#
#
#####################################################################
HOST="$1"
PORT="$2"
if [ -z "$HOST" ] || [ -z "$PORT" ]; then
echo "Usage: $0 <host> <port>"
exit 1
fi
#echo "tcping $HOST $PORT ..."
MIN_TIME=999999
MAX_TIME=0
SUM_TIME=0
COUNT=0
LIMIT=10000
while [ $COUNT -lt $LIMIT ]; do
#RESULT1=$(tcping "$HOST" "$PORT" | grep "tcp response")
RESULT1=$(tcping "$HOST" "$PORT")
echo $RESULT1
RESULT2=$(grep "tcp response" $RESULT1)
#echo $RESULT
if [ -n "$RESULT2" ]; then
TIME=$(echo "$RESULT" | awk '{print $NF}' | cut -d'/' -f2)
echo "$TIME ms"
if (( $(echo "$TIME > $MAX_TIME" | bc -l) )); then
MAX_TIME=$TIME
fi
if (( $(echo "$TIME < $MIN_TIME" | bc -l) )); then
MIN_TIME=$TIME
fi
SUM_TIME=$(echo "$SUM_TIME + $TIME" | bc -l)
COUNT=$((COUNT+1))
else
echo "Request timed out."
fi
sleep 1
done
AVERAGE_TIME=$(echo "scale=3; $SUM_TIME / $COUNT" | bc -l)
echo "--- tcping statistics ---"
echo "$COUNT packets transmitted, $COUNT received, 0% packet loss"
echo "rtt min/avg/max = $MIN_TIME/$AVERAGE_TIME/$MAX_TIME ms"
[root@localhost ~]# sh -x tcpping_summarize.sh 127.0.0.1 22
+ HOST=127.0.0.1
+ PORT=22
+ '[' -z 127.0.0.1 ']'
+ '[' -z 22 ']'
+ MIN_TIME=999999
+ MAX_TIME=0
+ SUM_TIME=0
+ COUNT=0
+ LIMIT=10000
+ '[' 0 -lt 10000 ']'
++ tcping 127.0.0.1 22
该脚本一直卡在RESULT1=$(tcping "$HOST" "$PORT")这里是什么问题?谢谢各位!