Sin dispositivos visibles en “adb”

Tecleas el siguiente comando en tu ordenador y la lista de dispositivos (habitualmente un teléfono) está vacía:

# adb devices

La expectiva es que, si se ha habilitado el modo desarrollador USB en el teléfono, apareciera en el ordenador el teléfono en el que lo hemos configurado.

Solución. Seguir los siguientes pasos, porque, además del paso anterior, también es necesario en algunos teléfonos añadir la depuración USB:

Ajustes -> Sistema -> Opciones para desarrolladores -> Depuración USB (habilitar)

En mi caso, segui con la guía para actualizar la versión de LineageOS a la última versión. Las actualizaciones normales no lo permiten y se requiere una instalación completa de la ROM, basada en Android 12. Solamente faltó completar:

# adb reboot sideload

El teléfono se reinicia y en terminal del ordenador se ejecuta:

# adb sideload lineage-19.1.20220510-nightly-enchilada-signed.zip

Elegir sistema en la pantalla del teléfono tras reiniciar y completada la actualización

Infraestructura de MercadoLibre

La entrevista de Pelado Neerd a dos administradores de sistemas de MercadoLibre (familiarmente y en adelante ML) aporta el estímulo de conocer qué se hace en otros entornos, sus diferencias con los nuestros, por tamaño o por decisiones para retos de infraestructura. Destaco unos pocos asuntos que me han llamado la atención y porqué:

  • Servidores: 10.000, aparentemente todo máquinas virtuales y no se menciona que haya infraestructura en centro de datos propio.
  • Equipo: 300 personas en mantenimiento de la infraestructura y 7.000 desarrolladores. Dividido en equipos de comunicaciones, creación y mejora de la propia infraestructura, operación de la infraestructura.
  • Nubes empleadas: emplean AWS y GCE para evitar dependencias, realizan movimiento de infraestructura de una a otra aunque determinados servicios está atados a una de ellas.
  • Machine Learning para optimización de la infraestructura: han empleado machine learning para diagnosticos de la infraestructura, si proyectan crecimientos, dónde optimizar, etc. Coinciden con Pelado Nerd que un acercamiento menos ambicioso es más efectivo. Hay herramientas de machine learning en el mercado que ofrecen ahorros como resultados de sus diagnósticos y el coste de la herramienta es superior al ahorro que propone.
  • Infraestructura para pruebas: las pruebas de desarrollo se realizan automatizadamente (CI / CD vía Git, sin necesidad del equipo de infraestructura) en una infraestructura que se despliega a propósito para cada prueba sin afectar al resto de los entornos, cuando finaliza la prueba se destruye.
  • Modelos de despliegue: “blue-green” es empleado mayoritariamente, en ocasiones “rolling

Acotando el comando top para un proceso concreto

El comando top ofrece opciones para casi todo. La administración de Linux requiere, a veces, fijarse en uno o unos pocos procesos concretos. Hay otras maneras de hacerlo (es una de las ventajas de Linux).

Resulta fácil recordar esta opción, en la que a continuación del comando top añadimos “-p” de process y podemos poner tantos PID separados por coma como sean necesarios.

# top -p659

Un ejemplo de cómo se ve un solo proceso, en este caso el demonio de fail2ban:

Otro ejemplo de cómo ver más de un proceso, en este caso, dos procesos de nginx:

# top -p487,488

¿Cómo obtener información básica de red con nmcli?

¿Cómo obtener información básica de red con nmcli en GNU/Linux?

El post pretende ser un recordatorio para mi mismo y un acicate para profundizar en nmcli, un desconocido para mi, que me ha parecido más amigable que el nuevo ip.

A modo de ejemplo, listo las conexiones activas con el comando en negrita:


user@machine:~$ nmcli connection show
NAME UUID TYPE DEVICE
MIWIFI_2G_nnGQ 43ce5cc0-6ecc-4fca-997b-ccdcb12ca2ff wifi
wlx74da38e4733c

virbr0 a756e70d-7f44-4bc6-8ce7-a3d1265cee1f bridge virbr0
Conexión cableada 1 3df083b6-e2d3-35b6-a55d-d1c540443eca ethernet

¿Cómo sé a qué velocidad se conecta la WiFi? nmcli ofrece un parámetro para saber los campos (-f para fields en inglés) de las conexiones a las que el sistema puede acceder.

user@machine:~$ nmcli -f WIFI-PROPERTIES dev show wlx74da38e4733c
WIFI-PROPERTIES.WEP: sí
WIFI-PROPERTIES.WPA: sí
WIFI-PROPERTIES.WPA2: sí
WIFI-PROPERTIES.TKIP: sí
WIFI-PROPERTIES.CCMP: sí
WIFI-PROPERTIES.AP: sí
WIFI-PROPERTIES.ADHOC: sí
WIFI-PROPERTIES.2GHZ: sí
WIFI-PROPERTIES.5GHZ: no
WIFI-PROPERTIES.MESH: sí
WIFI-PROPERTIES.IBSS-RSN: sí

Para quedarnos con ganas de explorar más las opciones de nmcli podemos listar la conexión concreta que nuestro equipo utilizaba y filtrar información sobre IPv4. Nos permite ver la ip de la conexión, la del router, los DNS que utiliza, etc.

user@machine:~$ nmcli connection show "MIWIFI_2G_nnGQ" | grep ^IP4
IP4.ADDRESS[1]: 192.168.1.142/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600
IP4.ROUTE[2]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.ROUTE[3]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.DNS[1]: 212.230.135.2
IP4.DNS[2]: 212.230.135.1
IP4.DOMAIN[1]: home

Minimum securization for sshd

I run an RaspberryPi inside my home network with ssh access allowed. One of the first things I’d done was to install fail2ban package.

I know this is not enough by far. A really secure configuration requires more intel in it but I let it that way just to check how much penetration attemps I’ll see.

After a fast review in the /var/log/fail2ban.log file I notice that almost everything were ssh tries to log in the system. Which is perfectly normal because the system only exposes a web server and the sshd daemon.

An easy and fast securization for your home systems with ssh is to edit the /etc/hosts.allow and the /etc/host deny files to concrete what IP’s are allow to log in via ssh and deny all the rest. You may do the same secure configuration via /etc/ssh/sshd_config what it requieres more ssh knowledge and I prefer dedicate another post to it.

To allow you home network edit your /etc/host.allow and add:
sshd: 192.168.0.0/24 # this allow your local lan
sshd: 127.0.0.1 # this allow your localhost

To deny any other IP edit your /etc/hosts.deny and add:
sshd: ALL