Detectar soquetes abertos manualmente (sem usar nc ou similar)?

2

Eu estou tentando depurar um problema de rede em um sistema embarcado que possui um conjunto muito limitado de aplicativos de espaço do usuário. Significado eu não posso usar qualquer um dos seguintes

sudo lsof -i
sudo netstat -lptu
sudo netstat -tulpn

Como posso ler quais soquetes são vinculados a partir de /sys ou /proc ?

    
por TheMeaningfulEngineer 10.02.2014 / 11:15

2 respostas

3

O Netstat e o lsof obtêm informações de /proc/$pid/fd/* para dados por processo e de /proc/net/tcp , /proc/net/udp , /proc/net/icmp e /proc/net/raw para informações de soquete IPv4 (e /proc/net/tcp6 , /proc/net/udp6 e /proc/net/raw6 para IPv6). O equivalente aos seus comandos é principalmente ler esses arquivos em /proc/net (além de pesquisas de DNS).

Para fins de depuração, considere o upload de um binário de lsof para o seu sistema, pode ser muito mais conveniente do que vasculhar em /proc .

    
por 11.02.2014 / 09:21
1

Você pode obter a lista de sockets ligados a partir de / proc / net / tcp [6], / proc / net / udp [6] e / proc / net / raw [6].

Cuidado ao converter os valores hexadecimais nesses arquivos para endereços IP "normais", eles estão em little-endian (por exemplo, 3900060A representa 10.6.0.57 e não 57.0.6.10 como o byte menos significativo vem primeiro).

    
por 10.02.2014 / 12:51