うほぅ

糞日記

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:80

6903   /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文スクリプトで我慢するしかないのか。