Shell Scripts para saber cuántos usuarios han iniciado sesión

Cada sistema operativo proporciona una característica de múltiples cuentas de usuario. Los sistemas operativos basados ​​en Linux tienen algunos comandos o funcionalidades para verificar los detalles de las cuentas de los usuarios y cambiarlos. Esta capacidad es utilizada principalmente por el usuario de la cuenta de administrador que es el usuario raíz, para proporcionar permisos y acceso a diferentes usuarios. El administrador también puede verificar cuántos usuarios están conectados actualmente, cuántos están desconectados y la hora de inicio de sesión. Aquí, en este artículo, exploraremos todas estas formas y también escribiremos un script de shell para completar estas tareas de manera eficiente.

Comandos para obtener información relacionada con el usuario:

1. id: El comando id se utiliza para imprimir la información de usuario y grupo para el USUARIO especificado.

-a              ignore, for compatibility with other versions
-Z, --context   print only the security context of the process
-g, --group     print only the effective group ID
-G, --groups    print all group IDs
-n, --name      print a name instead of a number, for -ugG
-r, --real      print the real ID instead of the effective ID, with -ugG
-u, --user      print only the effective user ID
-z, --zero      delimit entries with NUL characters, not whitespace

id command in linux

Este comando id ha producido todos los identificadores de usuario, identificadores de grupo y grupos. Si solo desea un identificador de grupo, use el siguiente comando.

id -G

id -g in linux

2. grupos: Esto imprimirá el grupo al que pertenece el usuario especificado. Si no se proporciona un nombre de usuario específico, buscará a los usuarios actuales. Use el siguiente comando para el usuario actual.

3. getent: este comando muestra las entradas de las bases de datos.

-i, --no-idn            disable IDN encoding
-s, --service=CONFIG    Service configuration to be used
-?, --help              Give this help list
--usage                 Give a short usage message
-V, --version           Print program version

Veamos la versión del programa getent presente en nuestro sistema.

getent -V

getennt command in linux

4. lslogins: para ver todos los nombres de usuario e identificaciones de usuario. Esto proporciona una lista de varias características como UID, USUARIO, ÚLTIMO INICIO DE SESIÓN, etc.

-a, --acc-expiration      display info about passwords expiration
-c, --colon-separate      display data in a format similar to /etc/passwd
-e, --export              display in an export-able output format
-f, --failed              display data about the users' last failed logins
-G, --supp-groups         display information about groups
-g, --groups=<groups>     display users belonging to a group in <groups>
-L, --last                show info about the users' last login sessions
-l, --logins=<logins>     display only users from <logins>
-n, --newline             display each piece of information on a new line
--noheadings              don't print headings
--notruncate              don't truncate output

islogins command in linuxislogins command in linux

5. usuarios: este comando imprimirá los nombres de usuario de los que iniciaron sesión en el host actual.

users

users command in linux

Este es el único usuario conectado actualmente.

6. who: para mostrar quién está conectado. Esto enumera los usuarios con identificación y la hora y fecha de inicio de sesión del usuario.

-a, --all          same as –b, -d, --login, -p, -r, -t, -T, -u
-b, --boot         time of last system boot
-d, --dead         print dead processes
-H, --heading      print line of column headings
-l, --login        print system login processes
--lookup           attempt to canonicalize hostnames via DNS
-m                 only hostname and user associated with stdin
-p, --process      print active processes spawned by init
-q, --count        all login names and number of users logged on

7. w: el comando w muestra las cuentas de usuario que han iniciado sesión y también muestra lo que están haciendo.

-h, --no-header   do not print header
-u, --no-current  ignore current process username
-s, --short       short format
-f, --from        show remote hostname field
-o, --old-style   old style output
-i, --ip-addr     display IP address instead of hostname (if possible)

Esto tiene algunas características y columnas más que who, para brindar información más detallada sobre los usuarios.

w

8. último o últimob: los comandos último y últimob muestran una lista de los últimos usuarios que iniciaron sesión

-<number>             how many lines to show
-a, --hostlast        display hostnames in the last column
-d, --dns             translate the IP number back into a hostname
-f, --file <file>     use a specific file instead of /var/log/wtmp
-F, --fulltimes       print full login and logout times and dates
-i, --ip              display IP numbers in numbers-and-dots notation
-n, --limit <number>  how many lines to show
-R, --nohostname      don't display the hostname field
-s, --since <time>    display the lines since the specified time
-t, --until <time>    display the lines until the specified time
-p, --present <time>  display who were present at the specified time

Esto proporciona todos los detalles de inicio de sesión de varios usuarios según la fecha y la hora.

last

9. lastlog: esto producirá un informe de todos los usuarios de inicio de sesión recientes. Esto también puede crear un informe de usuario único si se especifica.

-b, --before DAYS              print only lastlog records older than DAYS
-C, --clear                    clear lastlog record of a user (usable only with -u)
-h, --help                     display this help message and exit
-R, --root CHROOT_DIR          directory to chroot into
-S, --set                      set lastlog record to the current time (usable only with -u)
-t, --time DAYS                print only lastlog records more recent than DAYS
-u, --user LOGIN               print lastlog record of the specified LOGIN

Esto informa sobre el último registro de los usuarios.

lastlog

lastlog

Guión de concha

Ahora crearemos un script de shell usando algunos de los comandos mencionados anteriormente para obtener los detalles del usuario. Nos estamos acercando a la solución de una manera en que se le pide al usuario que aporte sugerencias dadas. Esa entrada se usará para verificar los casos disponibles, y luego se permitirá que se ejecute el caso coincidente.

Abra el archivo gedit:

Abra cualquier editor según sus preferencias, hemos utilizado el editor gedit debido a su interfaz de usuario simple y la combinación de colores presente.

gedit userAccounts.sh

Código:

Aquí, en userAccounts.sh, escribiremos nuestro código y usaremos casos de cambio para comparar la entrada del usuario. Hemos utilizado comandos como lslogins, who, groups, etc. que nos ayudarán a satisfacer los requisitos de los usuarios. Puede encontrar el uso de estos comandos más extendido arriba. Entonces, comencemos el guión.

#!/bin/bash
#here we are you going to develope a script for various options on user accounts
echo -e "\n
[ 1 ] for listing all the user accounts name \n
[ 2 ] for counting the number of logged-in user accounts  \n
[ 3 ] for listing the names of currently logged-in users\n
[ 4 ] for checking the groups to which the current user belong \n"

#Now take user input
read userInput

#Now we will use switch cases for various input operations
case $userInput in
    1)
    #syntax lslogins <option[=output field]>
    lslogins -o USER
    ;;
    2)
    #syntax who <option> <user optional>
    #grep used to filter
    who --count | grep users
    ;;
    3)
    #-q option is to count the number of users and print the logged-in users.
    # instead of -q, --count can also be used.
    # -v is used to exclude any pattern
    who -q | grep -v users
    ;;
    4)
    #syntax groups <option> [USERNAME]
    groups
    ;;
    *)
    echo -e "Please Enter Correct Input \n"
    ;;    
esac

shell script for listing users

Otorgar permisos ejecutables

Se deben otorgar permisos ejecutables a los archivos para que se ejecuten o se ejecuten en el sistema. También podríamos usar «777» en lugar de «+x» en el comando chmod. También ejecute el script como root para 

# chmod +x userAccounts.sh

making a  shell script executable

Ejecutar el script

./userAccounts.sh

Ejemplo 1: 

./userAccounts.sh
1

script example

Ejemplo 2: 

./userAccounts.sh
2

script example

Ejemplo 3:

./userAccounts.sh
3

script example

Por lo tanto, pudimos encontrar varios resultados relacionados con el inicio de sesión utilizando nuestro script de shell.

Publicación traducida automáticamente

Artículo escrito por hemusharma196 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *