电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Shell脚本编程,生成TCP活动状况报告.doc

8页
  • 卖家[上传人]:飞****9
  • 文档编号:137780596
  • 上传时间:2020-07-11
  • 文档格式:DOC
  • 文档大小:165.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、LINUX编程环境实验报告2B-Shell及编程班级:2012211307 姓名:LZ写在前面亲爱的学弟/学妹,如果你正因为本次实验而困惑,希望你在看完本文后会帮你解惑。但并不希望你直接copy后上交,自己亲手做实验而得到的提升是只有做完实验才知道的,而且可能会发现一些有意思的问题。相信这次实验也不会花费太长时间。加油,少年一、 实验内容Shell脚本编程,生成TCP活动状况报告。 netstat -statistics -tcp命令可以列出tcp统计信息。编写shell脚本程序,每隔1分钟生成1行信息:当前时间;这一分钟内TCP发送了多少报文;接收了多少报文;收发报文总数;行尾给出符号+或-或空格(+表示这分钟收发报文总数比上分钟多,收发报文总数相同用空格,否则用符号-)。运行示例如下:观察示例后,又发现了两个需要注意的细节: 第一行的最后一个参数必定是空格; 输出要对齐此外,在实验中发现netstat -statistics tcp命令的收发报文数所在的行数是变动的,受ICMPMSG长度的影响。但本程序可以做到不受变动行数的影响,准确提取收发报文数。详情将在第三、3和第四部分阐述。

      2、二、 实验步骤及分析经过分析,该程序分4步完成:每隔1分钟生成一行信息、当前时间、一分钟内首发报文数及收发总数和根据收发总数的变化行尾给出符号+或-或空格。下面,将针对这4个步骤分别进行阐述。1. 每隔1分钟生成1行信息要实现这点,只需要一个简单的循环结构即可:while truedo echo “” sleep 60done2. 当前时间使用date命令的格式化输出。%F是以xxxx-xx-xx的形式打印年月日;%H是两位数长的24小时的小时数;%M为分钟数。打印效果如下:3. 这一分钟内TCP收、发报文数以及收发报文总数首先,使用netstat -statistics tcp命令查看命令的格式:可见,所需的数据被白框圈出,当前累计的收发报文数分别在第10和第11行。可以使用AWK命令进行提取,条件为NR = 10 和NR = 11 ,每行都是提取第一个变量,即$1。所以使用语句:recieve_total_before=$(netstat -statistics -tcp | awk NR = 10print $1)send_total_before=$(netstat -stat

      3、istics -tcp | awk NR = 11print $1)但是,在实践中发现,所需的两个数据位置是不定的,受IcmpMsg长度的影响,有两种解决方案: 每次手动修改NR后面的值; 用segments received和segments send out匹配需要的行,然后提起该行的第一个变量。显然第2个解决方案是用户所期望的。所以,语句这样改正,即可实现准确提取收、发报文数而不受netstat命令变化的影响:recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)这样,提取累计收、发报文数就完成了。但本次实验要求列出的数据是某一分钟内的。那么就在一分钟开始的时候记录一次累计收、发报文数;60秒后再记录一次累计收、发报文数。将两次记录相减就是一分钟内的收、发报文数;将一分钟内的收、发报文数相加,就是一分钟

      4、内的收发报文总数。4. 行尾给出符号+或-或空格行尾符号是+、-或空格,取决于本分钟收发报文总数和前一分钟收发报文总数的大小关系:大为+、相等为空格,否则为-。所以,这部分代码如下:if $total -gt $total_before then More=+ elif $total -eq $total_before then More= else More=- fi正如第一部分所述,本程序中的一个细节是第一行数据的尾部必为空格,所以将第一部分提到while循环之外,尾部直接输出空格。三、 实验结果四、 问题与解决1. 问题: 程序刚开始是正常的,可以反应收、发报文数的变化,但后来再调试的时候,数据全部为0。解答:netstat -statistics tcp命令中,收、发报文累计值所在行会发生变化,由IcmpMsg长度的变化引起。之前程序提取收、发报文累计值是用行数提取的。但后来行数发生了变化,提取的值是在这段时间不变的值,所以导致了上述情况。将提取策略改变后即可:recieve_total_before=$(netstat -statistics -tcp | awk $2$3/

      5、segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)2. 问题:程序的输出使用echo命令,不整齐怎么办?解答:使用printf函数进行格式化输出即可。 printf %-22s%-8s%-8s%-8s%-8sn $DateandTime $recieve $send $total $More3. 问题:这个地方为什么报错?解答:if语句后,“”和“ ”需要和逻辑判断语句用空格隔开。Shell中的空格十分十分重要!命令需要用空格来提取参数!参考文献:1 实用UNIX教程蒋砚军 清华大学出版社2 LINUX Shell脚本编程入门3 Unix shell脚本编程,生成TCP活动状况报告http:/ +%F %H:%M)recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(

      6、netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)sleep 60recieve_total=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1)recieve=$(expr $recieve_total - $recieve_total_before)send=$(expr $send_total - $send_total_before)total=$(expr $recieve + $send)total_before=$totalprintf %-22s%-8s%-8s%-8sn $DateandTime $recieve $send $totalwhile truedo recieve_total_before=$(netstat -statistics -tcp | awk

      7、$2$3/segmentsreceived/print $1) send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1) sleep 60 DateandTime=$(date +%F %H:%M) recieve_total=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1) send_total=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/print $1) recieve=$(expr $recieve_total - $recieve_total_before) send=$(expr $send_total - $send_total_before) total=$(expr $recieve + $send) if $total -gt $total_before then More=+ elif $total -eq $total_before then More= else More=- fi total_before=$total printf %-22s%-8s%-8s%-8s%-8sn $DateandTime $recieve $send $total $Moredone

      《Shell脚本编程,生成TCP活动状况报告.doc》由会员飞****9分享,可在线阅读,更多相关《Shell脚本编程,生成TCP活动状况报告.doc》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.