Получить IP-адрес сокета, используемого процессом

  • Поскольку вы уже использовали кавычки для строк, использование в них $ SPC не обязательно и не дает вам никакой выгоды . Здесь вам не нужно какое-либо определение пространства .

  • Как указал Жиль , строки типа «URL ^ Just $ SPCthe $ SPCmailto $ SPCURL» содержат несуществующие переменные. Переменная заканчивается либо символом, который не может использоваться ни в одном имени переменной, либо когда он (правильно) разделен {} , как в $ {key} .

0
04.06.2018, 17:09
2 ответа

Puede enumerar el archivo abierto para un PID conlsof:

lsof -p <PID>

Pero es posible que prefiera usar el filtrado de nombre de comando en los procesos ssh:

# filters on both ssh and sshd command (client/server)
lsof -i -na -c /sshd?/ -sTCP:ESTABLISHED

Y combinar ambos, por supuesto:

lsof -p <PID> -i -na -sTCP:ESTABLISHED
4
28.01.2020, 02:31

Получить список локальных IP-адресов и портов, прослушиваемых через TCP/UDP:

netstat -planu | awk '/^udp / {print $4}'

Получить ту же информацию через файловую систему /proc:

for h in $(awk 'NR>1{print $2}' /proc/net/tcp); do
printf "%s:%d\n" $(printf "%d." $(echo ${h%:*}|sed 's/../0x& /g'|tr ' ' '\n'|tac)|sed 's/\.$/\n/') 0x${h#*:}; done

Далее следует

ip_addr=$(echo 0F01A8C0 | sed -e 's/\(..\)\(..\)\(..\)\(..\)/echo $((0x\4)).$(echo $((0x\3))).$(echo $((0x\2))).$(echo $((0x\1)))/e')

Затем в awk

 awk 'NR>1{split($2, addr, ":"); for(i=0;i<4;i++){
printf("%d.",strtonum("0x" substr(addr[1],2*i+1,2)))}; print ":" strtonum("0x" addr[2]);}' /proc/net/udp

Просто нужно поменять местами десятичные дроби с точками.

echo 0F01A8C0 | awk '{str = sprintf("0x%s", $0); ip = strtonum(str); \
printf ("%d.%d.%d.%d\t",rshift(and(ip,0x000000ff),00),
                        rshift(and(ip,0x0000ff00),08),
                        rshift(and(ip,0x00ff0000),16),
                        rshift(and(ip,0xff000000),24))}'

Финал:

 awk 'NR>1 {
    split($2, a, ":");
   patsplit(a[1],h,/.{2}/);
   for(i=4;i>0;i--){
     h[i]=strtonum("0x" h[i]);
   };
   printf("%d.%d.%d.%d:%d\n",h[4],h[3],h[2],h[1],strtonum("0x" a[2]));
 }' /proc/net/udp

Источник:https://wiki.christophchamp.com/index.php?title=Unix_sockets

1
28.01.2020, 02:31

Теги

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