netstat でプロセス特定できないの? in Solaris (2)
他の人が勝手に入れたのか知らんけど身に覚えの無いポートがnetstatしたらLISTENINGになってた時の話やけど。
http://www.cobaltnetworks.com/products-n-solutions/hardware/docs/html/819-3789-10/methodology_security_toolkit.html
# for pid in `ps -aeo pid | grep -v PID`; do
> pfiles ${pid} | egrep "^${pid}:|sockname:"
> done
(リンク先より引用)
これでできるらしい。っていうかできた。
PID
1933   /usr/sbin/apache2
      sockname: 192.168.1.200 port:80
      sockname: 192.168.1.113 port:806903   /usr/opt/oracle/lsnrctl
      sockname: 192.168.1.113 port:1521
      ...
(うろ覚えだがこんな感じの出力)
でも netstat -anp のようにポートを使用しているプロセスがわかるというよりは
プロセスに対して使用しているポートがわかるという感じの出力なので
出力結果をテキストに吐いて vi なり less なりで探さないといけないのがめんどいですね。
Linux でいうところのこれとかみたいな感じでポートから引きたいです。
$ fuser -v -n tcp 80
(または)
# lsof -i:21,22
っていうか lsof はなかったが fuser はあるんじゃないのか。
fuser でできるんなら fuser でいいじゃねえか!!
と今愕然としそうになったが SUN 公式で検索しても fuser では1文書たりとも出てこないので
やっぱり上の for文スクリプトで我慢するしかないのか。