免费注册 查看新帖 |

Chinaunix

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

监控服务器进程和端口的shell脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-15 12:05 |只看该作者 |倒序浏览
本帖最后由 matthew1637 于 2010-09-16 10:42 编辑

最近学习shell编程中,写了个脚本,可以监控当前服务器使用的端口,PID,程序名称等;
可以用于发现是否有不常用的端口被侦听,进而判断是否被黑客“搞”了;
代码如下:
  1. #!/bin/bash
  2. #tcp part
  3. port1=`netstat -an|grep LISTEN|egrep "0.0.0.0|:::"|awk '/^tcp/ {print $4}'|awk -F: '{print $2$4}'|sort -n`
  4. echo "TCP state:"
  5. echo "--------------------------------"
  6. echo "PORT      PID     COMMAND"
  7. for a in $port1
  8. do
  9. b=`lsof -n -i:$a|grep TCP|grep LISTEN|grep IPv4|awk '{printf("%d\t%s\n"),$2,$1}'`
  10. echo "$a        $b"
  11. done
  12. echo "--------------------------------"

  13. #udp part
  14. echo ""
  15. port2=`netstat -an|grep udp|awk '{print $4}'|awk -F: '{print $2}'|sed '/^$/d'|sort -n`
  16. echo "UDP state:"
  17. echo "--------------------------------"
  18. echo "PORT      PID     COMMAND"
  19. for a in $port2
  20. do
  21. b=`lsof -n -i:$a|grep UDP|grep IPv4|awk '{printf("%d\t%s\n"),$2,$1}'`
  22. if [ -n "$b" ];then
  23. echo "$a        $b"
  24. fi
  25. done
  26. echo "--------------------------------"

  27. exit 0
复制代码
欢迎各位指出写得不好的地方!

根据wlong2000joint同学的意见,增加了losf -n 选项,速度果然会快很多。
一路征程一路笑 该用户已被删除
2 [报告]
发表于 2010-09-15 12:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2010-09-15 12:07 |只看该作者
回复 1# matthew1637


    已经引用了,呵呵,第一次发帖,还不是很会用。
一路征程一路笑 该用户已被删除
4 [报告]
发表于 2010-09-15 12:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2010-09-15 12:39 |只看该作者
回复 4# 一路征程一路笑


    做了一点小改动,你再试试,另外,必须确保
PORT      PID     COMMAND和$a      $b之间的空白是tab间隔出来的。
一路征程一路笑 该用户已被删除
6 [报告]
发表于 2010-09-15 12:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

招聘 : 技术支持/维
论坛徽章:
0
7 [报告]
发表于 2010-09-15 13:01 |只看该作者
直接看 netstat 不是差不多吗

论坛徽章:
0
8 [报告]
发表于 2010-09-15 13:33 |只看该作者
本帖最后由 wlong2000joint 于 2010-09-15 13:42 编辑

好玩嘛!lsof -n -P 会更快一点;取端口的那行加个uniq,取进程名和进程号的行加个head -n 1看着会比较整齐;用printf 显示会更整齐一点。
  1. TCP state:
  2. --------------------------------
  3. PORT   PID      COMMAND            
  4. 25     23436    sendmail            
  5. 53     2619     named               
  6. 80     17960    httpd               
  7. 81     17960    httpd               
  8. 83     17960    httpd               
  9. 111    2206     portmap            
  10. 139    26034    smbd               
  11. 718    2232     rpc.statd           
  12. 953    2619     named               
  13. 3306   13215    mysqld              
  14. 5901   20531    Xvnc               
  15. 6001   20531    Xvnc               
  16. 8080   17960    httpd               
  17. 8282   22917    sshd               
  18. 8283   13315    rinetd              
  19. 11211  14936    memcached           
  20. --------------------------------

  21. UDP state:
  22. --------------------------------
  23. PORT   PID      COMMAND            
  24. 53     2619     named               
  25. 67     31975    dhcpd               
  26. 69     31012    xinetd              
  27. 111    2206     portmap            
  28. 137    26038    nmbd               
  29. 138    26038    nmbd               
  30. 712    2232     rpc.statd           
  31. 715    2232     rpc.statd           
  32. 11211  14936    memcached           
  33. 50802  2619     named               
  34. 57615  21518    phlinux            
  35. --------------------------------
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-09-15 14:35 |只看该作者
回复 7# nagaregawa


    netsta不够直观,而且也不知道是哪个程序启动的端口。

招聘 : 技术支持/维
论坛徽章:
0
10 [报告]
发表于 2010-09-15 18:54 |只看该作者
回复 9# matthew1637


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP