Автор Гілка: ls-ports  (Прочитано 2831 раз)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
ls-ports
« : 2005-11-29 17:30:44 »
Невеликий скрипт, який розбирає вивід netstat і кидає його на вхід fuser, виводячи досить зручний список відкритих портів та програм, які на них висять. Приклад (з під root-а доступна вся статистика, з під користувача - тільки власна):
[vlisivka@apollo src]$ ls-ports

Opened ports (tcp): 22 25 80 111 127 515 631 3128 3306 5335 5900 7830 7883 8009 8080 32768 38827

                     USER        PID ACCESS COMMAND
5900/tcp             vlisivka   4712 f....  vino-server
7830/tcp             vlisivka   5105 f....  spamd
                     vlisivka   5107 f....  spamd
                     vlisivka   5108 f....  spamd
                     vlisivka   5109 f....  spamd
                     vlisivka   5110 f....  spamd
                     vlisivka   5111 f....  spamd
38827/tcp            vlisivka   4810 f....  skype


Opened ports (udp): 111 123 631 835 3130 4920 5353 32768 32769 32770 32775 38827

                     USER        PID ACCESS COMMAND
4920/udp             vlisivka   4919 f....  evolution-excha
32770/udp            vlisivka   4810 f....  skype
32775/udp            vlisivka   4810 f....  skype
38827/udp            vlisivka   4810 f....  skype

Код скрипта:

[vlisivka@apollo src]$ cat `which ls-ports`
#!/bin/sh
# (c) 2003-2005 Volodymyr M. Lisivka
# Small script to list all opened server ports and programs bound to them.
# Author: Volodymyr M. Lisivka <lvm@mystery.lviv.net>
# License: GPL

PROT=tcp
PORTS=`netstat -an|grep $PROT | grep LISTEN |
perl -ane '$F[3]=~/:([0-9]+)/ && print $1."\n";'|sort -nu`
echo
echo "Opened ports ($PROT):" $PORTS
/sbin/fuser -vun $PROT $PORTS | grep -v "here:"

PROT=udp
PORTS=`netstat -an|grep $PROT |
perl -ane '$F[3]=~/:([0-9]+)/ && print $1."\n";'|sort -nu`
echo
echo
echo "Opened ports ($PROT):" $PORTS
/sbin/fuser -vun $PROT $PORTS | grep -v "here:"
[Fedora Linux]

Відсутній smg

  • Новачок
  • *
  • дописів: 1
  • Карма: +0/-0
  • I Love YaBB 2!
Re: ls-ports
« Відповідей #1 : 2007-12-03 13:50:19 »
замість громіздкого
netstat -an |grep $PROT |grep LISTEN

краще застосовувати
netstat -ln |grep $PROT

Відсутній smg

  • Новачок
  • *
  • дописів: 1
  • Карма: +0/-0
  • I Love YaBB 2!
Re: ls-ports
« Відповідей #2 : 2007-12-03 14:09:54 »
а щоб побачити pid процеса та команду, достатньо ось такого:
netstat -lnp |grep tcp
або
lsof -nPi tcp

Відсутній smg

  • Новачок
  • *
  • дописів: 1
  • Карма: +0/-0
  • I Love YaBB 2!
Re: ls-ports
« Відповідей #3 : 2007-12-03 15:20:38 »
замість громіздкого
netstat -an |grep $PROT |grep LISTEN

краще застосовувати
netstat -ln |grep $PROT
Вибачайте за флуд, ось так ще краще:
netstat -lnt
netstat -lnu
« Змінено: 2007-12-03 15:21:21 від smg »