Назад | Перейти на главную страницу

Какой локальный процесс подключен к данному серверу по данному порту?

В Linux я могу просто:

netstat -ntp | grep server_ip:port

И я получаю PID и имя процесса программы, которая устанавливает соединение.

Но как мне это сделать на Солярисе?

Если вы используете Solaris 10 или новее, вы можете использовать socketsnoop.d Скрипт DTrace. В противном случае lsof вероятно, ваш лучший выбор, как указывает Дэн.

Этот сценарий предоставит вам эту информацию с помощью стандартных команд Solaris. Если вы не укажете аргумент, он перечислит все открытые порты, а если вы его укажете, он перечислит процесс, у которого этот порт открыт:

    #!/bin/ksh
    pfexec pfiles /proc/* 2>/dev/null | nawk -v port=$1 '
    /^[0-9]/ { cmd=$0; type="unknown"; continue }
    $1 == "SOCK_STREAM" { type="tcp" }
    $1 == "SOCK_DGRAM" { type="udp" }
    $2 == "AF_INET" { if((port!="")&&($5!=port)) continue;
                      if(cmd!="") { printf("%s\n    %s:%s/%s\n",cmd,$3,$5,type); cmd="" }
                      else { printf("    %s:%s/%s\n",cmd,$3,$5,type); }}'

Можешь попробовать lsof, он должен работать и на Solaris (если он у вас есть). Пытаться lsof -i для сетевой информации.