¿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

How to install a concrete binary in a rpm distro

How to install a concrete binary in a rpm based distribution? Let’s asume you have a rpm based distro. I will wrote this little howto using a CentOS 7.8.

For instance you need to install iwlist but you don’t know what package provides you that binary. You have to type:


# yum provides iwlist

Your local database will return you something like this:

[pbenavent@localhost ~]$ yum provides iwlist
Complementos cargados:fastestmirror
Determining fastest mirrors
* base: mirror.gadix.com
* epel: fr2.rpmfind.net
* extras: mirror.airenetworks.es
* updates: mirror.gadix.com
1:wireless-tools-29-13.el7.x86_64 : Wireless ethernet configuration tools
Repositorio : @epel
Resultado obtenido desde:
Nombre del archivo : /usr/sbin/iwlist

Now you know the package name that you need to install, so the only thing you need to do is installed:

# yum install wireless-tools

As you may notice by reading the above lines, it’s assumed that your repository have indexed in its information the binary and package you’re querying for. In this particular exemple, the binary was iwlist and in the answer you read the full path indexed (/usr/bin/iwlist) wich is provided by EPEL repos. Remember the EPEL repo it’s not installed by defaul.

Postresql en Fedora 32: ¿Cómo actualizar?

Recién actualizado el equipo de Fedora 31 a Fedora 32 si intentas iniciar el servicio de Postgrqsql ejecutando como root (en adelante, todo lo escrito se ejecuta como root) # systemctl start postgresql da un error.

Como siempre, miramos que dice el log tecleando:
# journalctl -xe

En alguna línea aparece un mensaje similar a este (las negritas son mías):

-- The job identifier is 5061. de maig 01 11:49:13 localhost.localdomain postgresql-check-db-dir[5619]: An old version of the database format was found.
de maig 01 11:49:13 localhost.localdomain postgresql-check-db-dir[5619]: Use 'postgresql-setup --upgrade' to upgrade to version '12'

Aplicamos lo que se recomienda y ejecutamos (el comando forma parte del paquete postgresql-server):
# postgresql-setup --upgrade

La actualización dejará un log en /var/lib/pgsql/upgrade_postgresql.log.
Si todo ha ido como se indica podremos iniciar el servicio con normalidad
# systemctl start postgresql

¿Cómo ejecutar sql en batch en Postgresql?

Hemos instalado el RDBMS Postgresql y tenemos una sentencia SQL que queremos ejecutar planificadamente. A modo de ejemplo tomemos una SQL sencilla:
# select count (*) cod_cli from client;

Evitaré utilizar el usuario predeterminado de Postgresql para que se parezca más al mundo real y conectaremos a una BD llamada factura.

La tarea en modo no batch

Consistiría en:

  1. Conectar a la BD tecleando nuestra contraseña :
    psql factura -h 127.0.0.1 -d factura
  2. Ejecutar la sentencia SQL :
    select count (*) cod_cli from client;
    cod_cli
    ---------
    49
    (1 fila)

La tarea en modo batch

Lanzaremos un shell script que se conecta a la BD, este shell script llama a un fichero query.sql que solo contiene una línea:
select count (*) cod_cli from client;

El shell script contiene dos líneas:

#!/bin/bash
psql factura -h 127.0.0.1 -d factura -f query.sql

Cómo hacer que el batch SQL no pida contraseña

La manera de que evitar que nos pida contraseña es crear un fichero .pgpass en nuestro directorio $HOME

El fichero contendrá una línea por cada acceso a BD que queramos tener siguiendo el formato:
nombre de host: puerto: base de datos: nombre de usuario: contraseña

El uso de este fichero está recogido en la -buena- documentación sobre .pgaccess en Postgresql.

Postgresql en Fedora 31: conectar a la BD

En un breve artículo hemos visto como instalar e inicializar Postgresql en Fedora 31.

Instalé e intenté conectar con PgAdmin3 sin éxito. La única manera en la que conseguía conectar era convirtiéndome en le usuario postgres en el SO.

Los logs de postgresql en Fedora están en la ruta: /var/lib/pgsql/data/log

Un vistazo y ví:
2019-12-14 19:04:59.627 CET [26263] LOG: could not connect to Ident server at address "::1", port 113: Connection refused
2019-12-14 19:04:59.627 CET [26263] FATAL: Ident authentication failed for user "postgres" 2019-12-14 19:04:59.627 CET [26263] DETAIL: Connection matched pg_hba.conf line 84: "host all all ::1/128 ident"

Hay distintas maneras de solucionarlo, una sencilla (poco elegante a mi juicio) es habilitar el acceso basado en contraseñas con encriptación md5.

La solución editar el fichero: /var/lib/pgsql/data/pg_hba.conf y dejar línea de autenticación para que se haga con md5:
host all all ::1/128 md5

Hay que hacer algo más, poner una contraseña al usuario postgres en el servidor porque la validación que hemos configurado utilizará el propio servidor para permitir o denegar el acceso por el puerto predeterminado de postgresql.

Configurar una la contraseña del usuario se hace entrando a la BD desde el SO como usuario postgres. Utilizamos la CLI de postgres:
su
- postgres
psql
postgres=
# \password postgres

Gracias a Jordanspheire por su artículo User “postgres” Has No Password Assigned