linux16:网络信息收集脚本练习:按照状态筛选tcp连接,筛选链接数量top10的端口号

linux16:网络信息收集脚本练习:按照状态筛选tcp连接,筛选链接数量top10的端口号要求1.筛选出tcp地址,按照状态进行计数,分类展示time_waitestablished2.按照同一个端口号连接的ip数量进行从高到低排序列出top103.输出top10端口对应的远程ip地址;端口之间以分割线分割,IP地址之间以逗号分割解答#!/bin/bash#name:/tmp/daxiong/netlook.shecho “”dateecho “”echo “—————————————————-

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

要求

1.筛选出tcp地址,按照状态进行计数,分类展示

  • time_wait
  • established

2.按照同一个端口号连接的ip数量进行从高到低排序列出top10

3.输出top10端口对应的远程ip地址;端口之间以分割线分割,IP地址之间以逗号分割


解答

#!/bin/bash
#name:/tmp/daxiong/netlook.sh

echo ""
date
echo ""

echo "-----------------------------------------------------------"
echo "PART 1"
echo ""
#状态为TIME_WAIT的连接数量
declare -i tw=$(netstat -ant |grep -w tcp|grep -w TIME_WAIT|wc -l)
#状态为ESTABLISHED的连接数量
declare -i est=$(netstat -ant |grep -w tcp|grep -w ESTABLISHED|wc -l)
echo "TIME_WAIT_num=${tw}"      
echo "ESTABLISHED_num=${est}"
echo ""
#筛选出tcp连接的,且状态为TIME_WAIT的连接
netstat -ant |grep -w tcp|grep -w TIME_WAIT
echo ""
#筛选出tcp连接的,且状态为ESTABLISHED的连接
netstat -ant |grep -w tcp|grep -w ESTABLISHED


echo "-----------------------------------------------------------"
echo "PART 2 "
echo ""
#列出网络情况|从第三行开始显示|分割出第四字段|分割出第二块(端口号)|去除空行|排序|去重并计数|取前10|再次排序,按字段一(链接数量),-r表示逆序(默认是升序)
netstat -ant |awk 'NR>2' |awk '{print $4}'|cut -d ':' -f 2|grep -v '^$'|sort|uniq -c|head -n 10| sort -k 1 -r
echo ""


echo "-----------------------------------------------------------"
echo "PART 3 "
echo ""
#列出网络情况|从第三行开始显示|分割出第四字段|分割出第二块(端口号)|去除空行|排序|去重并计数|取前10|再次排序|分割出第二字段(排序后的端口号)
netstat -ant |awk 'NR>2' |awk '{print $4}'|cut -d ':' -f 2|grep -v '^$'|sort|uniq -c|head -n 10|sort -k 1 -r | awk '{print $2}'>/tmp/port.txt

#用for循环依次按行读出,并查询对应端口号的ip地址列出来
for line in $(cat /tmp/port.txt)
do
echo ""
echo  "=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+"
echo "Port: $line"
#列出网络情况|按照端口号抓取行|分割出第五字段(外域地址)|分割出第一块(外机ip)|去除空行|排序|去重|将换行符转换为逗号
netstat -ant |grep $line|awk '{print $5}'|cut -d ':' -f 1|grep -v '^$'|sort|uniq|tr "\n" ","
done

脚本问题分析:

1.指令过长,需要精简指令

2.在part1展示时,内容过度,建议设计交互式菜单

3.能力提升
shell属于初级脚本
后期可以尝试学习python,perl等

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168466.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月11日 下午9:00
下一篇 2022年8月11日 下午9:00


相关推荐

  • vuex 使用总结(详解)

    vuex 使用总结(详解)什么情况下我应该使用 Vuex Vuex 可以帮助我们管理共享状态 并附带了更多的概念和框架 这需要对短期和长期效益进行权衡 如果您不打算开发大型单页应用 使用 Vuex 可能是繁琐冗余的 确实是如此 如果您的应用够简单 您最好不要使用 Vuex 一个简单的 store 模式就足够您所需了 但是 如果您需要构建一个中大型单页应用 您很可能会考虑如何更好地在组件外部管理状态 Vuex 将会成

    2026年3月17日
    2
  • 宝塔搭建php项目是什么_用宝塔怎么修改网站源码

    宝塔搭建php项目是什么_用宝塔怎么修改网站源码宝塔搭建PHP项目宝塔下载地址我选的是linux用宝塔搭建前提是你买的服务器并没有安装任何的镜像与环境进入官网选择你要的然后点击立即安装进入安装教程安装要求根据自己的主机商进入,我的是阿里云的设置一些开放端口添加安全组规则添加这些必要的端口mysql3306的记住一定要放行,这样可用本地工具连接远程服务器的数据库上面设置好之后就可以安装了,我的是Centosyuminstall-ywget&&wget-Oin

    2025年6月5日
    4
  • 滤波算法大全

    滤波算法大全目录1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平均滤波法)5、中位值平均滤波法(又称防脉冲干扰平均滤波法)6、限幅平均滤波法7、一阶滞后滤波法8、加权递推平均滤波法9、消抖滤波法10、限幅消抖滤波法11、卡尔曼滤波程序默认对int类型数据进行滤波,如需要对其他类型进行滤波,只需要把程序中所有in…

    2022年5月1日
    78
  • aiohttp进阶教程

    aiohttp进阶教程在 python 后台 asyncio aiohttp 入门教程 多进程 asyncio 文章中 我们介绍了 asyncio aiohttp 的入门知识 现在我们这里详细介绍一下 aiohttp 参考文档 https www bookstack cn read aiohttp chinese documentatio aiohttp 文档 ServerTutori mdaiohttp web 建立在这

    2026年3月18日
    2
  • 原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)

    原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)文章目录前言插入背景一、头部1.导航栏2.优化导航栏3时间前言插入背景首先设置我们的背景。在body中插入背景即可。index.html<!doctypehtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”Designer”content=”LiWei”><metaname=”Description”cont

    2022年7月22日
    20
  • 开源Fast R-CNN代码实现物体识别[通俗易懂]

    开源Fast R-CNN代码实现物体识别[通俗易懂]参考链接:https://blog.csdn.net/linolzhang/article/details/703060031.资源链接代码下载链接:https://github.com/CharlesShang/TFFRCNN训练好的网络下载链接: 在TFFRCNN-master下新建文件夹model,存放要下载入的net(参考Github下载地址),推荐下载: …

    2022年7月16日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号