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


相关推荐

  • pandas groupby 用法详解

    pandas groupby 用法详解1.分组groupby在日常数据分析过程中,经常有分组的需求。具体来说,就是根据一个或者多个字段,将数据划分为不同的组,然后进行进一步分析,比如求分组的数量,分组内的最大值最小值平均值等。在sql中,就是大名鼎鼎的groupby操作。pandas中,也有对应的groupby操作,下面我们就来看看pandas中的groupby怎么使用。2.groupby的数据结构首先我们看如下代码defddd():levels=[“L1″,”L1″,”L1″,”L2″,”L2″,”L3”,

    2022年5月13日
    65
  • LaTex数学公式_markdown怎么写数学公式

    LaTex数学公式_markdown怎么写数学公式LaTeX数学公式,包含前言,注意事项,插入公式,注释,编号,转义字符,换行与对齐,字体,空格,上下标,括号,大括号和行标,分式,开方,对数,省略号,最值,方程组和分段函数,累加和累乘,矢量,积分,极限,导数与偏导,矩阵,表格,希腊字母,运算符,戴帽符号,特殊符号,等等。

    2022年5月3日
    64
  • c和java哪个好学_C++和Java哪个比较好入门?初学者该如何选择?

    c和java哪个好学_C++和Java哪个比较好入门?初学者该如何选择?选择好的方向比努力更重要 对于初学编程的人来说选择一门合适的编程语言关系到自己以后的职业发展 c 和 Java 那个更适合作为入门语言 给大家简单科普一下 它是正宗的 C 语言的嫡系 由 C 语言发展而来 C 支持多种编程范式面向对象编程 泛型编程和过程化编程 支持类 类 封装 重载等特性 C 语言的主要特点表现在两个方面 尽量兼容 C 支持面向对象的方法 它操持了 C 的简洁 高效的接近汇编语言等特点

    2026年3月18日
    2
  • mysql和sql server一样吗_sql视图和查询的区别

    mysql和sql server一样吗_sql视图和查询的区别导读:接下来的网上商城的项目,需要用到MySQL数据库了。这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它。本篇博客,先介绍SQLServer的基本内容,然后介绍MySQL的基本内容,最后介绍两者之间的区别。一、SQLServer基本简介1.1,概述SQLServer是Microsoft公司推出的关系型数据库管理系统。具有使

    2026年4月15日
    5
  • 高级算法梳理(三)XGB算法

    高级算法梳理(三)XGB算法算法原理 XGBoost eXtremeGradi 是工业界逐渐风靡的基于 GradientBoos 算法的一个优化的版本 可以给预测模型带来能力的提升 其算法思想就是不断地添加树 不断地进行特征分裂来生长一棵树 每次添加一个树 其实是学习一个新函数 去拟合上次预测的残差 当我们训练完成得到 k 棵树 我们要预测一个样本的分数 其实就是根据这个样本的特征 在每棵树中会落

    2026年3月17日
    2
  • linux查看ttys0的设置_centos查看文件内容的命令是

    linux查看ttys0的设置_centos查看文件内容的命令是准备工具0.下载ttylinux系统。http://minimalinux.org/ttylinux/downloadX86.html(ttylinux-i686-11.1.iso.gz)(bootcd-i386-5.3.iso.gz)1.下载thttpd。(一)ttylinux安装(ttylinux-i686-11.1.iso)1.将ttylinux-i686-11.1.iso.gz解压t…

    2022年8月12日
    12

发表回复

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

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