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

上传人:飞****9 文档编号:137780596 上传时间:2020-07-11 格式:DOC 页数:8 大小:165.50KB
返回 下载 相关 举报
Shell脚本编程,生成TCP活动状况报告.doc_第1页
第1页 / 共8页
Shell脚本编程,生成TCP活动状况报告.doc_第2页
第2页 / 共8页
Shell脚本编程,生成TCP活动状况报告.doc_第3页
第3页 / 共8页
Shell脚本编程,生成TCP活动状况报告.doc_第4页
第4页 / 共8页
Shell脚本编程,生成TCP活动状况报告.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

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

1、LINUX编程环境实验报告2B-Shell及编程班级:2012211307 姓名:LZ写在前面亲爱的学弟/学妹,如果你正因为本次实验而困惑,希望你在看完本文后会帮你解惑。但并不希望你直接copy后上交,自己亲手做实验而得到的提升是只有做完实验才知道的,而且可能会发现一些有意思的问题。相信这次实验也不会花费太长时间。加油,少年一、 实验内容Shell脚本编程,生成TCP活动状况报告。 netstat -statistics -tcp命令可以列出tcp统计信息。编写shell脚本程序,每隔1分钟生成1行信息:当前时间;这一分钟内TCP发送了多少报文;接收了多少报文;收发报文总数;行尾给出符号+或-

2、或空格(+表示这分钟收发报文总数比上分钟多,收发报文总数相同用空格,否则用符号-)。运行示例如下:观察示例后,又发现了两个需要注意的细节: 第一行的最后一个参数必定是空格; 输出要对齐此外,在实验中发现netstat -statistics tcp命令的收发报文数所在的行数是变动的,受ICMPMSG长度的影响。但本程序可以做到不受变动行数的影响,准确提取收发报文数。详情将在第三、3和第四部分阐述。二、 实验步骤及分析经过分析,该程序分4步完成:每隔1分钟生成一行信息、当前时间、一分钟内首发报文数及收发总数和根据收发总数的变化行尾给出符号+或-或空格。下面,将针对这4个步骤分别进行阐述。1. 每

3、隔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。所以使用语句:rec

4、ieve_total_before=$(netstat -statistics -tcp | awk NR = 10print $1)send_total_before=$(netstat -statistics -tcp | awk NR = 11print $1)但是,在实践中发现,所需的两个数据位置是不定的,受IcmpMsg长度的影响,有两种解决方案: 每次手动修改NR后面的值; 用segments received和segments send out匹配需要的行,然后提起该行的第一个变量。显然第2个解决方案是用户所期望的。所以,语句这样改正,即可实现准确提取收、发报文数而不受netst

5、at命令变化的影响: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秒后再记录一次累计收、发报文数。将两次记录相减就是一分钟内的收、发报文数;将一分钟内的收、发报文数相加,就是一分钟

6、内的收发报文总数。4. 行尾给出符号+或-或空格行尾符号是+、-或空格,取决于本分钟收发报文总数和前一分钟收发报文总数的大小关系:大为+、相等为空格,否则为-。所以,这部分代码如下:if $total -gt $total_before then More=+ elif $total -eq $total_before then More= else More=- fi正如第一部分所述,本程序中的一个细节是第一行数据的尾部必为空格,所以将第一部分提到while循环之外,尾部直接输出空格。三、 实验结果四、 问题与解决1. 问题: 程序刚开始是正常的,可以反应收、发报文数的变化,但后来再调试的时

7、候,数据全部为0。解答:netstat -statistics tcp命令中,收、发报文累计值所在行会发生变化,由IcmpMsg长度的变化引起。之前程序提取收、发报文累计值是用行数提取的。但后来行数发生了变化,提取的值是在这段时间不变的值,所以导致了上述情况。将提取策略改变后即可:recieve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(netstat -statistics -tcp | awk $2$3$4/segmentssendout/

8、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)recie

9、ve_total_before=$(netstat -statistics -tcp | awk $2$3/segmentsreceived/print $1)send_total_before=$(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/

10、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

11、$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

12、/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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号