NetWhisper: monitoreá conexiones salientes
A veces querés saber qué procesos están haciendo conexiones salientes desde tu máquina, pero no querés levantar un Wireshark ni instalar nada pesado.
Acá entra en juego NetWhisper, un script que usa herramientas estándar (ss, awk, sed) para darte una vista clara y en tiempo real de qué está saliendo de tu sistema.
Ideal para personas que valoran la simplicidad, el control y el minimalismo.
¿Qué hace?
- Muestra las conexiones activas en estado ESTABLISHED.
-
Indica
- Protocolo (tcp o udp)
- IP local y remota
- Proceso que originó la conexión (nombre y PID)
- Dominio del host remoto (si se puede resolver)
- Refresca automáticamente cada 2 segundos
El script
#!/bin/sh
# Verifica si ss está disponible
command -v ss >/dev/null 2>&1 || {
echo "Falta 'ss'. Abortando." >&2
exit 1
}
# Resolver IP a hostname
if command -v getent >/dev/null 2>&1; then
RESOLVER="getent"
elif command -v dig >/dev/null 2>&1; then
RESOLVER="dig"
else
echo "Falta 'getent' o 'dig' para resolver IPs. Abortando." >&2
exit 1
fi
resolve_ip() {
ip="$1"
case "$RESOLVER" in
getent)
host=$(getent hosts "$ip" | awk '{print $2}')
;;
dig)
host=$(dig +short -x "$ip" | sed 's/\.$//' | head -n 1)
;;
*)
host="$ip"
;;
esac
[ -n "$host" ] && echo "$host" || echo "$ip"
}
while true; do
clear
echo "NetWhisper - Conexiones salientes activas con resolución DNS"
echo "Hora: $(date '+%Y-%m-%d %H:%M:%S')"
echo
printf "%-6s %-22s %-22s %-30s\n" "PROTO" "LOCAL" "REMOTO" "PROCESO [HOST]"
ss -tunp 2>/dev/null | grep ESTAB | while IFS= read -r line; do
proto=$(echo "$line" | awk '{print $1}')
local=$(echo "$line" | awk '{print $5}')
remote=$(echo "$line" | awk '{print $6}')
proc=$(echo "$line" | awk '{print $NF}')
ip=$(printf "%s\n" "$remote" | cut -d: -f1)
host=$(resolve_ip "$ip")
# Formatea proceso: extrae nombre y PID si se puede
case "$proc" in
*pid=*name=*)
pid=$(echo "$proc" | sed -n 's/.*pid=\([0-9]*\),.*/\1/p')
name=$(echo "$proc" | sed -n 's/.*name="\([^"]*\)".*/\1/p')
proc_fmt="${name} (${pid})"
;;
*)
proc_fmt="$proc"
;;
esac
printf "%-6s %-22s %-22s %-30s\n" "$proto" "$local" "$remote" "$proc_fmt [$host]"
done
sleep 2
done
Ejemplo de salida
NetWhisper - Conexiones salientes activas con resolución DNS
Hora: 2025-05-02 20:04:05
PROTO LOCAL REMOTO PROCESO [HOST]
udp 192.168.1.30%wlp3s0:68 192.168.1.1:67 192.168.1.1:67 [home]
tcp 192.168.1.30:55014 200.17.202.197:80 users:(("newsboat",pid=68381,fd=11)) [debiansec.c3sl.ufpr.br]
tcp 192.168.1.30:34080 149.154.175.55:443 users:(("Telegram",pid=61599,fd=46)) [149.154.175.55]
tcp 192.168.1.30:53934 181.46.193.237:5222 users:(("profanity",pid=2560,fd=13)) [cpe-181-46-193.com.ar]
tcp 192.168.1.30:44626 172.67.188.132:80 users:(("newsboat",pid=68381,fd=7)) [172.67.188.132]
tcp 192.168.1.30:56384 37.120.193.124:993 users:(("aerc",pid=68382,fd=21)) [mail.cock.li]
tcp 192.168.1.30:38682 104.21.6.250:80 users:(("newsboat",pid=68381,fd=6)) [104.21.6.250]
tcp 192.168.1.30:44842 207.241.237.3:80 users:(("newsboat",pid=68381,fd=13)) [207.241.237.3]
tcp 192.168.1.30:47010 149.154.175.53:443 users:(("Telegram",pid=61599,fd=53)) [149.154.175.53]
tcp 192.168.1.30:36508 64.233.186.108:993 users:(("aerc",pid=68382,fd=7)) [cb-in-f108.1e100.net]
tcp 192.168.1.30:33074 104.21.33.16:443 users:(("newsboat",pid=68381,fd=8)) [104.21.33.16]
tcp 192.168.1.30:53564 200.17.202.197:443 users:(("newsboat",pid=68381,fd=12)) [debiansec.c3sl.ufpr.br]
tcp 192.168.1.30:34214 178.21.23.139:993 users:(("aerc",pid=68382,fd=19)) [layka.disroot.org]
Consideraciones
- Requiere ejecutar como root o usuario con permisos para ver procesos de otros usuarios.
- Funciona en cualquier sistema donde estén disponibles ss, awk, sed, getent o dig.
- No escribe nada, solo muestra en pantalla…si querés haga log hacelo, no tengo ganas.
Por qué escribir este script?
Porque a veces querés saber que mierda está haciendo el browser o algún proceso en tu equipo o servidor, sin instalar cosas gigantes. Porque shell. Porque es simple papu…
Le puse NetWhisper por estas razones:
-
"Net": porque monitorea la red.
-
"Whisper": evoca algo que susurra, que te cuenta en silencio lo que pasa por debajo, sin hacer ruido ni usar herramientas pesadas.
En otras palabras: no es un script que grita (como Wireshark con 800 filtros abiertos), sino que te dice discretamente qué procesos están saliendo a Internet desde tu máquina.