免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2266 | 回复: 8
打印 上一主题 下一主题

呵呵~帮我解决一个查询问题。 [复制链接]

论坛徽章:
1
金牛座
日期:2014-05-29 15:55:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-01-27 20:05 |只看该作者 |倒序浏览
我想在运行netstat -n |grep tcp以后,找出同时连接数大于10个的IP出来。
这个脚本该怎么写好?

论坛徽章:
0
2 [报告]
发表于 2003-01-27 21:45 |只看该作者

呵呵~帮我解决一个查询问题。

...


老大啊,你也不说说是在什么系统上啊?比如在Solaris下就和BSD下就不一样啊,在Solaris下,

  1. $ netstat -n | head -20

  2. UDP: IPv4
  3.    Local Address         Remote Address     State
  4. -------------------- -------------------- -------
  5. 10.0.1.254.63469     10.0.1.75.38563        Connected
  6. 10.0.1.254.63752     10.0.1.71.57803        Connected
  7. 10.0.1.254.64424     10.0.1.66.47566        Connected
  8. 10.0.1.254.64509     10.0.1.54.49517        Connected
  9. 10.0.1.254.64535     10.0.1.61.54585        Connected
  10. 10.0.1.254.64633     10.0.1.45.63010        Connected
  11. 10.0.1.254.64639     10.0.1.77.53415        Connected
  12. 10.0.1.254.64646     10.0.1.49.41834        Connected
  13. 10.0.1.254.64754     10.0.1.81.62510        Connected
  14. 10.0.1.254.64814     10.0.1.74.53986        Connected
  15. 10.0.1.254.64879     10.0.1.55.41332        Connected
  16. 10.0.1.254.65033     10.0.1.51.38831        Connected
  17. 10.0.1.254.65038     10.0.1.62.41783        Connected
  18. 10.0.1.254.65057     10.0.1.41.40254        Connected
  19. 10.0.1.254.65217     10.0.1.53.57872        Connected
  20. 10.0.1.254.65284     10.0.1.80.64469        Connected
复制代码


手边暂时没有BSD,但是有IRIX,如下,(BSD应跟它差不多)

  1. $ /usr/etc/netstat -n | head -20
  2. Active Internet connections
  3. Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
  4. tcp        0      0  127.0.0.1.111          *.*                    LISTEN
  5. tcp        0      0  127.0.0.1.6010         *.*                    LISTEN
  6. tcp        0      0  127.0.0.1.6011         *.*                    LISTEN
  7. tcp        0      0  127.0.0.1.6016         *.*                    LISTEN
  8. tcp        0      0  127.0.0.1.6012         *.*                    LISTEN
  9. tcp        0      0  127.0.0.1.6020         *.*                    LISTEN
  10. tcp        0      0  127.0.0.1.6023         *.*                    LISTEN
  11. tcp        0      0  127.0.0.1.6024         *.*                    LISTEN
  12. tcp        0      0  127.0.0.1.6025         *.*                    LISTEN
  13. tcp        0      0  127.0.0.1.6026         *.*                    LISTEN
  14. tcp        0      0  127.0.0.1.6027         *.*                    LISTEN
  15. tcp        0      0  127.0.0.1.6030         *.*                    LISTEN
  16. tcp        0      0  127.0.0.1.6031         *.*                    LISTEN
  17. tcp        0      0  127.0.0.1.6032         *.*                    LISTEN
  18. tcp        0      0  127.0.0.1.6033         *.*                    LISTEN
  19. tcp        0      0  127.0.0.1.6013         *.*                    LISTEN
  20. tcp        0      0  127.0.0.1.6014         *.*                    LISTEN
  21. tcp        0      0  127.0.0.1.6018         *.*                    LISTEN
复制代码


论坛徽章:
0
3 [报告]
发表于 2003-01-27 22:13 |只看该作者

呵呵~帮我解决一个查询问题。

...


好了,假设老大是用第二种:


  1. netstat -n | awk '$0 ~ "^tcp.*ESTABLISHED" { print $5}' | awk -F. '{
  2.     ip = $1"."$2"."$3"."$4
  3.     ipg[ip]
  4.     if ( ip in ipg ) num[ip]++
  5. }
  6. END { for ( i in num )
  7.     if ( num[i] >= 10 ) printf "  %-15s %3s\n", i, num[i]
  8. }'
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-01-28 00:21 |只看该作者

呵呵~帮我解决一个查询问题。

在SOALRIS下边跑,好象ipg[ip] 有问题,大师兄帮看看


  1. #!/bin/ksh
  2. netstat -n | awk '$0 ~ /ESTABLISHED/ {print $2}' | awk -F. '{
  3.   ip=$1"."$2"."$3"."$4
  4.   ipg[ip]
  5.   if (ip in ipg) num[ip]++
  6. }
  7. END { for ( i in num )
  8.   if (num[i] >=10 ) printf " %-15s %3s\n",i,num[i]
  9. }'
复制代码


# ./shellt
awk: syntax error near line 4
awk: illegal statement near line 4

论坛徽章:
0
5 [报告]
发表于 2003-01-28 00:26 |只看该作者

呵呵~帮我解决一个查询问题。

...




laoxia 呀 laoxia,忙过年忙晕呼啦?:)

Solaris 下的 awk 经常是老版本,要用 nawk 的呀~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2003-01-28 00:31 |只看该作者

呵呵~帮我解决一个查询问题。

打俺,打俺

论坛徽章:
1
金牛座
日期:2014-05-29 15:55:47
7 [报告]
发表于 2003-01-28 08:10 |只看该作者

呵呵~帮我解决一个查询问题。

原帖由 "红袖添香" 发表:


是Linux或FreeBSD
是这样的,我想列出netstat -n |grep tcp以后所有的TCP连接中,超过20个的连接(包括SYN,TIMEOUT等状态)。

论坛徽章:
0
8 [报告]
发表于 2003-01-28 14:58 |只看该作者

呵呵~帮我解决一个查询问题。

原帖由 "iceblood" 发表:

是Linux或FreeBSD
是这样的,我想列出netstat -n |grep tcp以后所有的TCP连接中,超过20个的连接(包括SYN,TIMEOUT等状态)。


哦~ 老大,是这样啊。

基本上这样就好了。。。grep 就可以不用了,因为在 awk 中就包含正则表达式了。你还可以根据你的要求定制,就是红字部分(我好象没有看到有TIMEOUT,所以用了TIME_WAIT,不过我的是OpenBSD)

(倒,才发现代码方式没有颜色~,反正就是圆括号中的部分)


  1. netstat -n | awk ' /^tcp.*(ESTABLISHED|TIME_WAIT|SYN)/ { print $5}' | awk -F. '{
  2.   ip = $1"."$2"."$3"."$4
  3.   ipg[ip]
  4.   if ( ip in ipg ) num[ip]++
  5. }
  6. END { for ( i in num )
  7.   if ( num[i] >= 20 ) printf " %-15s %3s\n", i, num[i]
  8. }'
复制代码

论坛徽章:
0
9 [报告]
发表于 2003-01-28 17:42 |只看该作者

呵呵~帮我解决一个查询问题。

netstat -p tcp
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP