前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux16:网络信息收集脚本练习:按照状态筛选tcp连接,筛选链接数量top10的端口号

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

作者头像
全栈程序员站长
发布2022-09-22 18:22:58
6080
发布2022-09-22 18:22:58
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

要求

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

  • time_wait
  • established

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

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


解答

代码语言:javascript
复制
#!/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.cn/168466.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.筛选出tcp地址,按照状态进行计数,分类展示
  • 2.按照同一个端口号连接的ip数量进行从高到低排序列出top10
  • 3.输出top10端口对应的远程ip地址;端口之间以分割线分割,IP地址之间以逗号分割
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档