cd /proc pfiles * | egrep "^[0-9]|sockname" | more Or use PCP, found at http://www.unix.ms/pcp/ #!/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. # # The script borrows from 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 "PIDtProcess Name and Port" echo "_______________________________________________________" for proc in `ptree -a | grep -v ptree | awk '{print $1};'` do 263/433 result=`pfiles $proc 2> /dev/null| grep "port: $port"` if [ ! -z "$result" ] then program=`ps -fo comm -p $proc | tail -1` echo "$proct$programt$portn$result" echo "_______________________________________________________" fi done elif [ $pid ] then # Enter the PID, get the port # pid=$OPTARG # Print out the information echo "PIDtProcess 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 "$proct$programn$result" echo "_______________________________________________________" fi done elif [ $all ] then # Show all PIDs, Ports and Peers # echo "PIDtProcess 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 "$pidt$namen$out" echo "_______________________________________________________" fi done fi exit 0