August 22

Linux, какой процесс открыл порт

Создаем proc.sh

Разрешаем права

sudo chmod +x proc.sh

Вставляем содержимое в файл proc.sh:

#!/bin/bash

# Получаем список слушающих портов (TCP и UDP) из netstat
ports=$(netstat -tul | grep -E 'tcp|udp' | awk '{print $4}' | awk -F: '{print $NF}' | sort -u)

# Проверяем, что порты найдены
if [ -z "$ports" ]; then
  echo "Не найдено слушающих портов."
  exit 1
fi

# Проходим по каждому порту
for port in $ports; do
  echo "Порт: $port"

  # Проверяем TCP
  tcp_pids=$(sudo fuser $port/tcp 2>/dev/null)
  if [ ! -z "$tcp_pids" ]; then
    echo "  TCP:"
    for pid in $tcp_pids; do
      process_name=$(ps -p $pid -o comm= 2>/dev/null)
      if [ ! -z "$process_name" ]; then
        echo "    PID: $pid, Процесс: $process_name"
      else
        echo "    PID: $pid, Процесс не найден"
      fi
    done
  fi

  # Проверяем UDP
  udp_pids=$(sudo fuser $port/udp 2>/dev/null)
  if [ ! -z "$udp_pids" ]; then
    echo "  UDP:"
    for pid in $udp_pids; do
      process_name=$(ps -p $pid -o comm= 2>/dev/null)
      if [ ! -z "$process_name" ]; then
        echo "    PID: $pid, Процесс: $process_name"
      else
        echo "    PID: $pid, Процесс не найден"
      fi
    done
  fi
done

Запускаем

sudo ./proc.sh