- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX编程环境实验报告 2
——B-Shell及编程
班级:2012211307 姓名:LZ
写在前面
亲爱的学弟/学妹,如果你正因为本次实验而困惑,希望你在看完
本文后会帮你解惑。但并不希望你直接 copy后上交,自己亲手做实验
而得到的提升是只有做完实验才知道的,而且可能会发现一些有意思的 问题。相信这次实验也不会花费太长时间。加油,少年 ~
一、 实验内容
Shell脚本编程,生成TCP舌动状况报告。netstat --statistics
--tcp命令可以列出tcp统计信息。编写shell脚本程序,每隔1分钟生 成1行信息:当前时间;这一分钟内 TCP发送了多少报文;接收了多少报 文;收发报文总数;行尾给出符号+或-或空格(+表示这分钟收发报文总数 比上分钟多,收发报文总数相同用空格,否则用符号 -)。运行示例如下:
2013-06-17 00:02
S4S
314
669
2013-0-17 00:03
1252
1100
23E2 +
2013-06-17 00:04
714
670
1284 -
2O13-O-L7 00:05
161
139
2P0 -
2013-0-17 00:06
1550
1097
2W +
2013-05-17 W;07
1395
959
2344 -
2013-05-17 00:0B
5
1
6 -
2013-05-17 W;09
5
1
6
2013-05-17 00:10
837
723
L560 +
2013-05-17 00;11
22
22
44 -
观察示例后,又发现了两个需要注意的细节:
第一行的最后一个参数必定是空格;
输出要对齐
此外,在实验中发现netstat --statistics - tcp命令的收发报文数
所在的行数是变动的,受ICMPMS长度的影响。但本程序可以做到不受变 动行数的影响,准确提取收发报文数。详情将在第三、3和第四部分阐述
二、实验步骤及分析
经过分析,该程序分4步完成:每隔1分钟生成一行信息、当前时间、 一分钟内首发报文数及收发总数和根据收发总数的变化行尾给出符号 +或 - 或空格。下面,将针对这4个步骤分别进行阐述。
每隔1分钟生成1行信息
要实现这点,只需要一个简单的循环结构即可:
while true
do
echo ,,
sleep 60
done
当前时间
使用date命令的格式化输出。%F是以xxxx-xx-xx的形式打印年月 日;%H是两位数长的24小时的小时数;%丽分钟数。打印效果如下:
xiao(?xlao-Rev - 1-Gdate 十临F
2015-05-30 10:27
这一分钟内TCP收、发报文数以及收发报文总数
首先,使用netstat --statistics - tcp命令查看命令的格式:
xtaogxiao-Rev-1-0:netstat --statistics -tcp IcmpMsg:
InTypeS: 336
OutTypeS: 407
Tcp:
172 active connections openings
2 passive tonnection openings
70 failed connection attempts
9 connection resets received
可见,所需的数据被白框圈出,当前累计的收发报文数分别在第 10
和第11行。可以使用AWK命令进行提取,条件为 NR== 10和NR== 11,
每行都是提取第一个变量,即$1。所以使用语句:
recieve_total_before=$(netstat --statistics --tcp | awk NR == 10{print $1})
sen d_total_before=$ (n etstat --statistics --tcp | awk NR == 11{pri nt $1})
iaogxiao-Rev-l-9$ echo ,f$(netstat - statistics —t卬 | dwk NR == 10{prtnt$l}) 0751
但是,在实践中发现,所需的两个数据位置是不定的,受 IcmpMsg长 度的影响,有两种解决方案:① 每次手动修改NR后面的值;② 用
segments received 禾口 segments send out 匹配需要的行,然后提起该行 的第一个变量。显然第2个解决方案是用户所期望的。所以,语句这样改 正,即可实现准确提取收、发报文数而不受 netstat命令变化的影响:
recieve_total_before=$ (n etstat --statistics --tcp | awk $2$3 ?/segme ntsreceived/{pri nt $1})
您可能关注的文档
最近下载
- 2024-2025学年浙江省宁波市奉化区七年级下学期期末数学检测试卷.pdf VIP
- 让改革创新成为青春远航的动力.ppt VIP
- 通桥(2016)8388A 高速铁路常用跨度梁桥面附属设施.docx VIP
- 新版道德与法治三年级上册《5.走近科学家》教学设计.docx VIP
- 幼儿园课件:《牵牛花和它的朋友们》.pptx VIP
- CBT 3495.10-1995 船舶工业档案管理规则 档案收集及其业务指导要求-行业标准.pdf VIP
- 小学教育学 第二章 学校.ppt VIP
- 人美版七年级上册2.3《诗意的色彩》教案.pdf VIP
- 2024年秋新改版教科版五年级上册科学全册教案教学设计(新课标版).docx VIP
- 安全导则发布稿.pdf VIP
文档评论(0)