Além de ss e netstat , atualmente não conheço outras ferramentas que eu recomende.
Para saber como obter essa informação:
Se você man netstat , você pode ver na seção FILES alguns arquivos listados que o netstat usa para coletar suas informações.
Entre eles, há /proc/net/tcp e /proc/net/udp .
Se você cat /proc/net/tcp você pode ver várias informações sobre conexões tcp no seu sistema.
Um exemplo de saída seria
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 0101007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 11190 1 0000000000000 000 100 0 0 10 0
1: 8700A8C0:91FC 0F02000A:15B3 01 00000000:00000000 02:00000AF6 00000000 1000 0 5565254 2 00000000000 00000 46 4 13 10 -1
rem_address aqui é o IP que você está procurando. Não sei muito sobre isso, mas acho que st fornece informações sobre o estado atual. 0A deve significar LISTEN , 01 significa ESTABLISHED .
Decodificar local_address ou rem_address é bastante fácil, 8700A8C0:8F76 , por exemplo:
Format: hex(rev_ip):hex(port)
87 -> 135
00 -> 0
A8 -> 168
C0 -> 192
:8F76 -> 36726
=> 192.168.0.135, Port 36726
Mais informações sobre o diretório /proc/net são aqui .
Mais informações sobre os dados apresentados são aqui .
Um thread SO relacionado também é aqui .