По номеру fd вычисляет ip адреса сокетов

Использование:

strace_ip.sh <PID>

 

#!/bin/bash
# По номеру fd вычисляет ip адреса сокетов
# (c) Сергей Дергачев
#
pid=$1

[ -z "$pid" ] && exit 1

for i in /proc/${pid}/fd/*; do
s=$(ls -l $i |sed -n '/socket/{s/.*\[//;s/\]//p}')
if [ -n "$s" ]; then
echo -n "$(basename $i) "
grep -h $s /proc/net/tcp* |perl -lne '
@s=split " ", $_;
($src, $sp)=split ":",$s[1];
($dst, $dp)=split ":",$s[2];
$src=substr($src,-8) if(length($src)>8);
$dst=substr($dst,-8) if(length($dst)>8);
$src=substr($src,6) . substr($src,4,2) . substr($src,2,2).substr($src,0,2);
$dst=substr($dst,6) . substr($dst,4,2) . substr($dst,2,2).substr($dst,0,2);
print join(".",unpack("C*",pack("H*",$src))) . ":" . hex($sp) . " " . join(".",unpack("C*",pack("H*",$dst))) . ":" . hex($dp);'
fi
done