根据网上查询80端口脚本改成接收用户输入端口号。
代码如下
#! /bin/bash
read -p "请输入要查询的端口号:" port
#统计不同状态 tcp 连接(除了 LISTEN )
all_status_tcp=$(netstat -nt | awk 'NR>2 {print $6}' | sort | uniq -c)
#打印各状态 tcp 连接以及连接数
all_tcp=$(netstat -na | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}')
#统计有哪些 IP 地址连接到了本地 某个 端口(ipv4)
connect_ip=$(netstat -ant| grep -v 'tcp6' | awk '/:'${port}'/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -n)
#输出前十个连接到了本地 某个 端口的 IP 地址(ipv4)
top10_connect_ip=$(netstat -ant| grep -v 'tcp6' | awk '/:'${port}'/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -rn|head -n 10)
echo -e "\e[31m不同状态(除了LISTEN) tcp 连接及连接数为:\e[0m\n${all_status_tcp}"
echo -e "\e[31m各个状态 tcp 连接以及连接数为:\e[0m\n${all_tcp}"
echo -e "\e[31m连接到本地${port}端口的 IP 地址及连接数为:\e[0m\n${connect_ip}"
echo -e "\e[31m前十个连接到本地${port}端口的 IP 地址及连接数为:\e[0m\n${top10_connect_ip}"
执行效果图
原文链接:https://zhuanlan.zhihu.com/p/612782776