Определить PID процесса, который вызывает IP

Если у вас достаточно обновленные версии утилит GNU с -по -даты, вы можете настроить их на обработку данных с завершением NULL -. Это позволяет создавать конвейеры, на которые не влияют пробелы или символы новой строки в самих данных.

Мой тестовый инструмент — это быстрый скрипт под названием/tmp/args:

#!/bin/bash
echo "This is args with $# value(s)"
for f in "$@"; do echo "> $f <"; done

Вот как вы можете передать ему серию имен файлов в командной строке, отсортированных по времени последнего изменения файла:

find -type f -printf "%T@ %p\0" | sort -zn | sed -z 's/^[0-9.]* //' | xargs -0 /tmp/args

Команда findставит перед каждым именем файла/пути представление в долях секунды даты/времени последнего изменения. Это обрабатывается sortв порядке от самого низкого (самого старого )до самого высокого (самого нового ). sedудаляет начальное число, которое мы только что использовали для сортировки, и результирующий набор имен файлов передается в xargs. Замените %pна %P, если вы предпочитаете опускать начальный ./в именах файлов.

Пример данных

# "c d" contains a space; "e f" contains a newline; "h" has leading whitespace
touch a 'e
f' g ' h ' 'c d' b

Пример результата

This is args with 6 value(s)
>./a <
>./e
f <
>./g <
>./ h  <
>./c d <
>./b <
0
04.10.2020, 04:20
1 ответ

Если син-пакет является частью фактической попытки подключения, вы можете в нужный момент перечислить сокет и процесс с чем-то вроде:

netstat -apn | grep SYN_SENT

Это работает в Linux. Флаг -pсодержит имя процесса, которому принадлежит сокет. Вы можете уточнить/изменить условие grep, чтобы получить именно ту строку, которая вам нужна.

Для MacOs вы можете сделать:

lsof -i -P | grep -i "SYN_SENT"

Возвращаясь к Linux, можно настроить сервер по этому адресу/порту, перенаправив его на локальный процесс:

# iptables -t nat -A OUTPUT -p tcp --dport 7000 -j DNAT --to-destination 127.0.0.1:7777

$ nc -l 7777

Теперь, когда соединение будет установлено, у вас будет больше времени для выполнения команды netstat -p...до закрытия сокета.

netstat -apn | grep 7000

Кроме того, вы можете инициировать поток данных tcp по этому соединению, что позволит вам узнать больше о клиенте.

В Linux вы бы использовали ss, но вы упомянули MacOS, а там наверняка netstat. Обратите внимание, что вам может потребоваться запустить netstatи lsofот имени пользователя root, чтобы получить список всех сокетов.

1
18.03.2021, 23:00

Теги

Похожие вопросы