Відповіді:
Там є хлопець, який стверджує, що це робить, створивши додаток, який діє як шлюз між двома сокетами та реєструє всі дані, що передаються. Таким чином, ви не можете натиснути на сокет, але якщо ви зможете перезапустити послугу і налаштувати її на використання цього додатка для хлопців, ви зможете побачити весь трафік.
Ось посилання на пост: Unix Socket Sniffer
Є ще один спосіб, який потребує того, щоб ви знайшли ідентифікатор процесу, приєднаний до сокета, потім знайдіть за допомогою дескриптора файлу сокет і натисніть дескриптор файлу за допомогою strace.
Якщо ви можете зупинити будь-який клієнт / сервер, використовуючи сокет, і перенастроїти його, я б рекомендував завжди перший метод, другий метод - хитрий і вимагає натиснути на поточний процес, який у деяких додатках може призвести до його збою.
Сподіваюся, хтось освітить нас іншим способом :)
Удачі
ви можете використовувати socat.
sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original
Що відбувається вище: спочатку перенесіть оригінальну розетку на sock.original. Socat створює нову розетку ("UNIX-LISTEN") у вихідному місці та пересилає все до оригіналу ("UNIX-connect"). -V повідомляє socat також друкувати вихід на STDERR.
Ви також можете спробувати використовувати strace для одного з процесів з обох боків сокета, оскільки це дозволить вам спостерігати, що написано / прочитано. Я знайшов у своїх виробничих середовищах, у мене немає socat, але у мене є напруга.
Для будь-якої корисної мети, встановлення на щось велике є обов'язковим.
strace -p <pid>
для перегляду запущеного процесу.
strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
а потім запустіть тести. У вас є /tmp/php.log, щоб повільно перевірити, чи журнал занадто великий. Якщо ви отримуєте занадто багато трафіку, зробіть запит із рядком запиту з вашим іменем або чимось таким чином, щоб ви могли шукати його в журналах
printf
обробляти повторення. printf " -p %s" $(pidof php5-fpm)
буде префіксом кожного pid-аргументу -p
і набагато практичніше написати.
// backup the socket
sudo mv /var/run/docker.sock /var/run/docker.sock.original
// use tcp port 8089 proxy the original socket
sudo socat TCP-LISTEN:8089,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock.original
// use the new socket to proxy the 8089 port
sudo socat UNIX-LISTEN:/var/run/docker.sock,fork TCP-CONNECT:127.0.0.1:8089
потім:
sudo tcpdump -i lo -netvv port 8089