Busybox, netstat, нет -p

10

У меня очень старая (не спрашиваю почему) BusyBox (BusyBox v1.01 (2008.12.19-21: 31 + 0000) Встроенная оболочка (ясень)) на моем DreamBox. Я хотел бы узнать, какой процесс открыл какое соединение, используя netstat. Но я обнаружил, что netstat BusyBox не содержит опцию -p . Какие еще есть возможности, чтобы узнать, какой процесс открыл (и использует) соответствующий сокет?

a1337q
источник
Является ли часть этой версии busybox?
Зоредаче
К сожалению нет.
a1337q

Ответы:

15

Вы можете найти эквивалентную информацию в несколько более уродливой форме (она же шестнадцатеричная) в /proc/net/tcp. Там вы можете найти индекс соединения, под которым вы можете посмотреть /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, но не в netstat busybox, эта -eопция также дает вам дополнительную информацию.)

и

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

Вам нужен root-доступ для второго шага.

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

Питер Айзентраут
источник
Звучит круто, но мой netstat не работает должным образом, он ничего не выводит с опцией -e . У меня есть 6 столбцов также с -e : Proto, Recv-Q, Send-Q, локальный адрес, внешний адрес, состояние. Есть ли способ с портами? Я вижу порт ..
a1337q
Вы правы, я, должно быть, испортил свои тесты. Я отредактировал его, чтобы дать вам рабочее решение.
Питер Айзентраут
2
Как вы находите число «2560», которое вы вводите во второй команде? Вот в чем вопрос.
Марго
1
@ygoe вы должны использовать 6115и использовать это так:find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
Сэм
3

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

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

Крейг МакКуин
источник
0

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

ss -ltp # for TCP
ss -lup # for UDP
krupan
источник