shell脚本编程,生成tcp活动状况报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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})

文档评论(0)

dajiefude2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档