梦如此美好 2023-11-03 11:12 采纳率: 37.5%
浏览 3

tcping统计脚本


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")这里是什么问题?谢谢各位!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-03 15:07
    关注

    【以下回答由 GPT 生成】

    要在Linux上执行该脚本,您需要按照以下步骤进行操作:

    1. 检查依赖项

    此脚本依赖于tcppingbc命令。为了确保脚本正常运行,您需要确认这两个命令已经安装在您的Linux系统上。如果命令不存在,您需要先安装它们。可以使用以下命令检查它们的存在:

    bash which tcpping which bc

    如果没有输出或显示命令未找到,则需要使用适合您的Linux发行版的包管理器进行安装。例如,对于Ubuntu系统,您可以使用以下命令安装:

    bash sudo apt-get install tcptraceroute sudo apt-get install bc

    1. 将脚本保存为文件

    将脚本保存为名为tcpping_summarize.sh的文件。可以使用文本编辑器(如vinano)创建一个新文件,并将脚本内容复制粘贴到该文件中。

    1. 赋予执行权限

    在Linux上执行脚本之前,您需要确保脚本文件具有可执行权限。可以使用以下命令为脚本添加执行权限:

    bash chmod +x tcpping_summarize.sh

    1. 执行脚本

    使用以下命令执行脚本:

    bash ./tcpping_summarize.sh 127.0.0.1 22

    这将执行脚本,并将127.0.0.1作为主机和22作为端口参数传递给脚本。

    1. 解释脚本功能和每个部分的作用

    2. 脚本开始时,它会接收主机和端口作为参数,并进行检查,如果缺少参数,会显示用法信息并退出。

    3. MIN_TIMEMAX_TIMESUM_TIMECOUNTLIMIT是用于计算统计信息的变量。
    4. 在一个循环中,脚本通过发送tcpping请求来测试主机的TCP连接。如果接收到响应,则从响应中提取出响应时间,并更新MIN_TIMEMAX_TIMESUM_TIMECOUNT等变量。
    5. 如果没有接收到响应,脚本会打印"Request timed out."。
    6. 在每次循环之后,脚本会休眠1秒。
    7. 执行完成后,脚本会计算平均响应时间AVERAGE_TIME
    8. 最后,脚本会输出统计信息,包括发送和接收的数据包数量、最小、最大和平均响应时间。

    sh -x tcpping_summarize.sh 127.0.0.1 22命令执行脚本时,-x选项将打开脚本的调试模式,会显示脚本的详细执行过程,例如每个变量的赋值,每个命令的执行结果等。

    这是您执行脚本并解释每个部分的方式,希望对您有所帮助。如果您还有其他问题,请随时咨询。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月3日

悬赏问题

  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验