Код: Выделить всё
#!/bin/bash
# Проверка на наличие аргумента
if [ "$#" -ne 1 ]; then
echo "Использование: $0 <номер порта>"
exit 1
fi
PORT=$1
# Получение PID с использованием fuser
PIDS=$(sudo fuser -n tcp $PORT 2>/dev/null)
# Проверка, найдены ли процессы
if [ -z "$PIDS" ]; then
echo "Нет активных процессов, использующих порт $PORT."
exit 0
fi
# Получение информации об интерфейсах, на которых слушается порт
INTERFACE=$(ss -tlnp | grep ":$PORT" | awk '{print $5}' | cut -d':' -f1 | sort -u)
# Проверка, слушается ли порт на всех интерфейсах
if [ -z "$INTERFACE" ]; then
echo "Нет интерфейсов, слушающих порт $PORT."
else
if [ "$(echo "$INTERFACE" | wc -l)" -eq "1" ] ; then
# Вывод информации об интерфейсах
echo "Адрес, на котором слушается порт $PORT: $INTERFACE"
fi
fi
# Получение информации о процессах с помощью ps
echo "Процессы, использующие порт $PORT:"
for PID in $PIDS; do
ps -p $PID -o pid=,comm=
done
exit 0