Busybox, netstat, никакой-p

Да. Настройте SSH для отправки пакетов проверки активности.

10
задан 7 January 2011 в 22:23
4 ответа

Можно найти эквивалентную информацию в немного более ужасной форме (иначе шестнадцатеричной) в /proc/net/tcp. Там, можно найти inode соединения, под которым можно искать /proc/$pid/fd/.

Например:

$ cat /proc/net/tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6115 1 f5adc4c0 300 0 0 2 -1
...

(В нормальном netstat, но не в busybox netstat, -e опция также дает Вам что дополнительная информация.)

и

$ sudo ls -l /proc/2560/fd
...
lrwx------ 1 root root 64  7 jan 22.50 3 -> socket:[6115]

Вы должны базироваться доступ для второго шага.

Не столь удобный как -p опция, очевидно, но работы в связывании. Мог быть задан сценарием, при необходимости.

15
ответ дан 2 December 2019 в 22:04

Если Вы имеете или можете добраться ss на Вашем устройстве, оно может показать Вам PID также:

ss -ltp # for TCP
ss -lup # for UDP
0
ответ дан 2 December 2019 в 22:04

Это может не помочь, если у вас нет возможности перестроить Busybox, но в случае, если это кому-то поможет ...

Busybox имеет параметр конфигурации для поддержки -p переключатель Busybox netstat . См. Параметр CONFIG_FEATURE_NETSTAT_PRG , выбранный в конфигурации меню busybox через Сетевые утилиты → netstat → Включить вывод имени PID / программы .

3
ответ дан 2 December 2019 в 22:04

Небольшой вариант, который может быть проще для некоторых:

  1. Определить интересующий протокол и порт из netstat или другого источника
  2. Преобразовать порт в шестнадцатеричный: echo | awk '{ printf "%x\n", $1 }'
  3. cd /proc/net
  4. grep -i {upd|tcp} | awk '{ printf "local: %s inode: %s", $2, $10}' Если вы получили несколько строк, найдите ту, которая имеет соответствующий hex_port во второй половине «локальной» строки.
  5. ls -al /proc//fd/ 2>/dev/null | grep

Это должно вернуть строку, похожую на: lrwx------ 1 root root 64 May 22 20:02 /proc/1148/fd/26 -> socket:[4520]

Сообщает вам, что PID 1148 имеет сокет, открытый на иноде 4520

Пример : Ищем процесс SSDP на Philips Hue Bridge V2.x:

root@Philips-hue:/proc# netstat -an | grep 1900
udp     2176      0 0.0.0.0:1900            0.0.0.0:*                           
root@Philips-hue:/proc# echo 1900 | awk '{ printf "%x\n", $1 }'
76c
root@Philips-hue:/proc# grep -i 76c /proc/net/udp | awk '{ printf "local: %s ino
de: %s\n", $2, $10 }'
local: 00000000:076C inode: 4520
root@Philips-hue:/proc# ls -al /proc/*/fd/* 2>/dev/null | grep 4520
lrwx------    1 root     root            64 May 22 20:02 /proc/1148/fd/26 -> socket:[4520]

Итак, мы идентифицировали процесс PID=1148 как прослушиватель:

root@Philips-hue:/proc# ps w | grep 1148
 1148 root     64016 S    /usr/sbin/ipbridge -p /home/ipbridge/var -z /dev/ttyZigbee -u /etc/channel/channel-config -h /home -e ecb
 1696 root      1284 S    grep 1148

Итак, теперь я знаю, что демон ipbridge управляет прослушивателем SSDP среди многих других вещей, которые он элементы управления на мосту Hue.

0
ответ дан 22 May 2021 в 20:19

Теги

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