#!/usr/bin/ksh # # PCP (PID con Port) # v1.07 20/05/2008 sam@unix.ms # # If you have a Solaris 8, 9 or 10 box and you can't # install lsof, try this. It maps PIDS to ports and vice versa. # It also shows you which peers are connected on which port. # Wildcards are accepted for -p and -P options. # # Originally from: # http://www.unix.ms/pcp/ # # The script borrows Eric Steed's excellent "getport.sh" script. # if [ $# -lt 1 ] then echo >&2 "usage: $0 [-p PORT] [-P PID] [-a ALL ] (Wildcards OK)" exit 1 fi while getopts :p:P:a opt do case "${opt}" in p ) port=${OPTARG};; P ) pid=${OPTARG};; a ) all=all;; [?]) # unknown flag echo >&2 "usage: $0 [-p PORT] [-P PID] [-a ALL ] (Wildcards OK) " exit 1;; esac done shift `expr $OPTIND - 1` if [ $port ] then # Enter the port number, get the PID # port=${OPTARG} echo "PID\tProcess Name and Port" echo "_________________________________________________________" for proc in `ptree -a | grep -v ptree | awk '{print $1};'` do result=`pfiles $proc 2> /dev/null| grep "port: $port"` if [ ! -z "$result" ] then program=`ps -fo comm -p $proc | tail -1` echo "$proc\t$program\t$port\n$result" echo "_________________________________________________________" fi done elif [ $pid ] then # Enter the PID, get the port # pid=$OPTARG # Print out the information echo "PID\tProcess Name and Port" echo "_________________________________________________________" for proc in `ptree -a | grep -v ptree | grep $pid| awk '{print $1};'` do result=`pfiles $proc 2> /dev/null| grep port:` if [ ! -z "$result" ] then program=`ps -fo comm -p $pid | tail -1` echo "$proc\t$program\n$result" echo "_________________________________________________________" fi done elif [ $all ] then # Show all PIDs, Ports and Peers # echo "PID\tProcess Name and Port" echo "_________________________________________________________" for pid in `ptree -a | grep -v ptree |sort -n | awk '{print $1};'` do out=`pfiles $pid 2>/dev/null| grep "port:"` if [ ! -z "$out" ] then name=`ps -fo comm -p $pid | tail -1` echo "$pid\t$name\n$out" echo "_________________________________________________________" fi done fi exit 0 ############################################################################## ### This script is submitted to BigAdmin by a user of the BigAdmin community. ### Sun Microsystems, Inc. is not responsible for the ### contents or the code enclosed. ### ### ### Copyright Sun Microsystems, Inc. ALL RIGHTS RESERVED ### Use of this software is authorized pursuant to the ### terms of the license found at ### http://www.sun.com/bigadmin/common/berkeley_license.jsp ##############################################################################