Uso del comando getent en linux

Uso del comando getent en linux.

El comando getent, es una herramienta para Linux que nos ayuda a obtener las entradas de algunos archivos de texto importantes del sistema, más conocidos como bases de datos. Estos archivos pertenecen a lo que se conoce como bibliotecas Name Service Switch, que están configuradas en el archivo /etc/nsswitch.conf.

Los archivos de base de datos, deben ser admitidos por la biblioteca GNU C. A continuación enumeramos todos los posibles.

  • ahost
  • ahostsv4
  • ahostsv6
  • aliases
  • ethers
  • group
  • gshadow
  • hosts
  • initgroups
  • netgroup
  • networks
  • passwd
  • protocols
  • rpc
  • services
  • shadow

Esto no quiere decir que tu sistema los tenga todos, solo los que necesita. Vemos un ejemplo.

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd
group:          compat systemd
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

 

En este artículo veremos algunos ejemplos prácticos de uso del comando. Fácil y útil, ya verás.

Comando getent

Comando getent

 

Uso del comando getent en linux

Passwd

En nuestro primer ejemplo, listamos la base de datos passwd.

getent passwd

Obtenemos una salida similar a…

sergio@sololinux:~$ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

 

Group

También podemos enumerar los grupos con group.

getent group

Ejemplo…

sergio@sololinux:~$ getent group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sergio
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:

 

Hosts

Al ejecutar hosts, podemos ver el hostname del sistema.

getent hosts

Imagen de ejemplo…

Comando getent con hosts

Comando getent con hosts

 

Protocols

Los protocolos admitidos por el sistema.

getent protocols

En nuestro caso…

sergio@sololinux:~$ getent protocols
ip                    0 IP
hopopt                0 HOPOPT
icmp                  1 ICMP
igmp                  2 IGMP
ggp                   3 GGP
ipencap               4 IP-ENCAP
st                    5 ST
tcp                   6 TCP
egp                   8 EGP
igp                   9 IGP
pup                   12 PUP
udp                   17 UDP
hmp                   20 HMP
xns-idp               22 XNS-IDP
rdp                   27 RDP

 

Buscar el servicio de un puerto

Ahora listamos los servicios del sistema, junto a su número de puerto.

getent services

Vemos una imagen de ejemplo, que puede ser similar a la tuya.

Servicios y puertos con el comando getent

Servicios y puertos con el comando getent

 

Uso personalizado de getent

El comando getent, no se limita a listar de forma masiva. También podemos personalizar los listados, especificando la búsqueda deseada.

Buscar el servicio de un puerto

En este ejemplo de uso, queremos averiguar que servicio usa el puerto 22.

getent services 22

En la salida observamos que el puerto 22, pertenece al servicio ssh.

sergio@sololinux:~$ getent services 22
ssh                   22/tcp

 

Buscar el puerto de un servicio

Ahora queremos saber el puerto que utiliza el servicio telnet.

getent services telnet

El resultado es correcto, es el puerto 23.

sergio@sololinux:~$ getent services telnet
telnet                23/tcp

 

Que usuario ha iniciado sesión

Identificar quien inicio la sesión, es tarea sencilla. Ejecuta el siguiente comando.

getent passwd `whoami`

El comando getent, nos ofrece la información solicitada.

sergio@sololinux:~$ getent passwd `whoami`
sergio:x:1000:1000:sergio,,,:/home/sergio:/bin/bash

 

Información sobre un usuario

También podemos solicitar la información, de un usuario en particular por su nombre. Por ejemplo…

getent passwd root

# o

getent passwd usuario

Ejemplo de salida.

Usuarios con el comando getent

Usuarios con el comando getent

 

Saber la ip de un dominio

Como vemos en este artículo, la info aportada por getent es muy extensa. No podía faltar, el como saber la ip de un dominio.

getent hosts dominio

Vemos algo como…

sergio@sololinux:~$ getent hosts sololinux.es
163.172.52.4    sololinux.es
sergio@sololinux:~$ getent hosts google.com
2a00:1450:400d:804::200e google.com
sergio@sololinux:~$ getent hosts marca.es
193.110.128.199 marca.es

 

Opciones del comando getent

El comando getent también nos ofrece unas interesantes y útiles opciones.

OpciónUso
-i, --no-idnDesactivar la codificación IDN
-s, --service=CONFIGConfiguración del servicio
--usageOfrecer un mensaje de uso
-V, --versionVersión de la herramienta
-?, --helpAyuda de la herramienta

 

Como ejemplo, identificamos la versión de la herramienta getent.

getent -V

En Ubuntu y derivados nos ofrece este resultado.

sergio@sololinux:~$ getent -V
getent (Ubuntu GLIBC 2.27-3ubuntu1.4) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
Esto es software libre; vea el código fuente para las condiciones de copia.
No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN
FIN DETERMINADO.
Escrito por Thorsten Kukuk.

En CentOS y derivados…

[root@sololinux-demo ~]# getent -V
getent (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
Esto es software libre; vea el código fuente para las condiciones de copia.
No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN
FIN DETERMINADO.
Escrito por Thorsten Kukuk.

 

Estados de salida

El comando getent, en ciertas ocasiones también nos puede devolver el estado de la salida. Las vemos en la siguiente tabla.

Valor del estadoSignificado del valor
0El comando se completó correctamente
1Faltan argumentos o no reconoce la base de datos
2Las claves insertadas no se encuentran en la base de datos
3La enumeración no es compatible con la base de datos

 

Herramienta Getent

Herramienta Getent

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Uso del comando getent en linux.

Chat de SoloLinux en Telegram

 

Una respuesta

  1. Andres Jesus
    18/03/2021

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido