J'aimerais surveiller les réponses sur un socket Unix sans perturber les connexions d'origine et les diriger vers un script pour traitement.
Je sais comment faire cela avec tcpdump pour les connexions tcp mais je n'arrive pas à trouver de solution pour les sockets unix locales.
Est-ce seulement possible?
Réponses:
Il y a un type qui prétend le faire en créant une application qui agit comme une passerelle entre deux sockets et en enregistrant toutes les données qui y circulent. Donc, vous ne pouvez pas appuyer sur un socket, mais si vous pouvez redémarrer le service et le configurer pour utiliser cette application de type, vous pourrez voir tout le trafic.
Voici le lien vers l'article: Unix Socket Sniffer
Il existe un autre moyen de rechercher l'ID de processus associé au socket, puis de rechercher avec lsof le descripteur de fichier du socket, puis de taper le descripteur de fichier à l'aide de strace.
Si vous pouvez arrêter n'importe quel client / serveur qui utilise le socket et le reconfigurer, je recommanderais toujours la première méthode, la deuxième méthode est délicate et vous oblige à utiliser un processus en cours qui, sur certaines applications, pourrait provoquer son crash.
J'espère que quelqu'un nous éclairer d'une autre manière :)
Bonne chance
la source
vous pouvez utiliser socat.
Que se passe-t-il ci-dessus: Commencez par déplacer le support d'origine vers sock.original. Socat crée un nouveau socket ('UNIX-LISTEN') à l'emplacement des originaux et les transfère tous vers l'original ('UNIX-connect'). Le -v indique à socat d'imprimer également la sortie sur STDERR.
la source
Vous pouvez également essayer d’utiliser strace sur l’un des processus de chaque côté du socket, car cela vous permettra de regarder ce qui est écrit / lu. J'ai trouvé dans mes environnements de production, je n'ai pas de socat, mais j'ai strace.
Pour tout usage utile, il est impératif de définir -s sur quelque chose de grand.
la source
strace -p <pid>
pour regarder un processus en cours.strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
puis lancez les tests. Vous avez le fichier /tmp/php.log pour vérifier lentement si le journal est trop volumineux. Si vous obtenez trop de trafic, faites une requête avec une chaîne de requête avec votre nom ou quelque chose comme ça, afin de pouvoir la rechercher dans les journauxprintf
gestion de la répétition.printf " -p %s" $(pidof php5-fpm)
préfixera chaque argument pid avec-p
et est beaucoup plus pratique à écrire.ensuite:
la source