GNU/Linux >> Tutoriales Linux >  >> Linux

[Linux]:7 cosas que aprenderá cuando comience a escribir un simple script de Shell

Un administrador de sistemas siempre pensará en automatizar la mayoría de sus tareas para que los trabajos de rutina se completen fácilmente y pueda concentrarse en otras cosas críticas. Una de esas tareas es la creación de cuentas de Unix. Aquí veremos cómo podemos crear una cuenta de Unix usando un script de shell. En este viaje de creación de scripts de shell, aunque la tarea parezca simple, ¡aprenderás muchas cosas!

1. Siga las pautas estándar durante la creación de secuencias de comandos para una mejor legibilidad

La mayoría de los otros lenguajes de programación como C, C ++, JAVA tienen un conjunto de "Mejores prácticas" que se seguirían durante la codificación. Sin embargo, como sugiere el nombre, los scripts de shell son una especie de programas escritos para un entorno de tiempo de ejecución especial en tiempo rápido. Tiempo rápido significa muy poco seguir las reglas. Seguir las prácticas recomendadas hará que su secuencia de comandos sea más legible, reutilizable y fácil de mantener.

Entonces, en este script usaremos funciones para modularizar el código. Debajo del fragmento de código para el uso de la función():

usage()
{
echo "Usage: $PROGNAME  [options]
Options:
-u username,            Provide name for new user account creation
-p password,            Provide complex password
-h help,                display this help message and exit      "
exit 1;
}

Esta función de uso se llama siempre que se requiere ayuda para ejecutar el script o para argumentos incorrectos, etc.,

2. Cómo aceptar argumentos en un script de shell

En un script de shell, la aceptación de argumentos se realiza de la siguiente manera:

$0 - Script Name
$1 - First argument
$2 - Second argument
$# - No. of arguments
$@ - All arguments

Ej:

Tue Oct 29>$./account_creation.sh username password

En el ejemplo anterior, $0 es account_creation.sh, $1 es el nombre de usuario y $2 es la contraseña. $# devolverá 2 y $@ devolverá todos los argumentos.

3. Opciones de la línea de comandos usando "Getopt" en el script de shell

Proporcionar opciones de línea de comandos es una mejor manera de presentar su secuencia de comandos al usuario. Puede escribir secuencias de comandos para admitir opciones de línea de comandos cortas y largas. Por ejemplo:para mostrar un mensaje de ayuda, puede usar la opción “-h” o “–help”. Una convención típica es que las opciones largas van precedidas de un hash doble y las pequeñas de un solo guión. A continuación se muestra el código:

while getopts ":h:u:p:" OPTION
do
        case "$OPTION" in
        h)
                usage
                ;;
        u)
                USERNAME=${OPTARG}
                ;;
        p)
                PASSWORD=${OPTARG}
                ;;
        \?)
                usage
                ;;
        esac
done

El comando getopts es un comando integrado de Korn/POSIX Shell que recupera opciones y argumentos de opción de una lista de parámetros. Lea más sobre getopts aquí. En simple para cada opción de línea de comando, el ciclo se ejecuta y el valor correspondiente para cada opción se almacena en las variables asignadas. A continuación se muestra el fragmento de código para comprobar si los parámetros pasados ​​están vacíos:

shift $((OPTIND-1))
if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then
    usage
fi

4. Cómo ejecutar comandos de Linux desde un script de shell

Aquí useradd es un comando de Linux utilizado para crear una cuenta.

/usr/sbin/useradd -m ${USERNAME}

Aquí debe tener en cuenta que si el usuario ya existe, es posible que reciba algunas advertencias como stderr, que se muestra en la siguiente imagen:

5. Cómo ignorar/redireccionar stdout y stderr al archivo de registro

Bash y otros shells modernos proporcionan una función de redirección de E/S. Los números de flujo de E/S estándar de Linux son los siguientes:

una. Redirigir el flujo de stderr a un archivo:

$script 2> error.log

b. Redirigir el flujo de salida estándar a un archivo:

$script 1> output.log

C. Redirigir tanto stderr como stdout a un archivo:

$script  &>file.out

Si simplemente desea ignorar estos mensajes stderr y stdout, rediríjalos a /dev/null en lugar de a file.

$script 2>/dev/null

6. Cómo verificar la ejecución exitosa del comando en un script de shell

ps es el código de retorno (código de estado) del último comando o script ejecutado. 0 ==éxito, cualquier otro número significa un fracaso

7. Declaraciones condicionales como if/else en script de shell

La mayoría de los lenguajes de programación y secuencias de comandos tienen algún tipo de expresión if/else, al igual que las secuencias de comandos de shell. La siguiente tabla muestra las diferentes expresiones permitidas.

Controlador Nombre Descripción
0 entrada estándar Entrada estándar
1 salida estándar Salida estándar
2 stderr Error estándar

Nota:a diferencia de la mayoría de los otros idiomas, los espacios son muy importantes cuando se usa un si declaración en secuencias de comandos de shell.

El siguiente código verifica el código de estado del último comando y, en caso de éxito, avanza para crear una contraseña. Al configurar la contraseña con éxito, pondremos un mensaje en el terminal para completar con éxito la actividad.

# Create User Account
/usr/sbin/useradd -m ${USERNAME} 2>/dev/null
if [ $? -eq "0" ]; then
        echo -e ${PASSWORD} | /usr/bin/passwd ${USERNAME} --stdin >/dev/null
        if [ $? -eq "0" ]; then
             echo "User ${USERNAME} created sucessfully"
        fi
fi

Guión completo:enlace de descarga

Consulte nuestros otros artículos interesantes sobre LINUX:

Métodos abreviados de teclado rápidos de Bash Shell: Consejos de Linux

8 divertidos comandos de Linux:¡te encantará!

Mejores prácticas al ejecutar el comando rm -rf en linux

Comandos del administrador del sistema Linux

¿Cómo agregar una barra de progreso para copiar y mover comandos en Linux?

Cómo sincronizar la hora del servidor Linux con el servidor de hora de la red

Cómo configurar yum para usar el repositorio CentOS en la máquina RHEL

Las mejores herramientas para recuperar datos [Windows, Linux, DOS, MAC OS X]


Linux
  1. ¿Cómo obtener el nombre de distribución y el número de versión en un script de Shell simple?

  2. ¿Necesita un caparazón para Scp?

  3. ¿Por qué necesita poner #!/bin/bash al comienzo de un archivo de script?

  4. Script de transliteración para shell de linux

  5. ¿Puede un archivo .sh ser malware?

¿Cómo ejecutar un comando en un script de Shell?

Shell Script para imprimir pirámide de Estrellas

¿Cómo se ejecuta un script al iniciar sesión en * nix?

Ejecutar script de shell en paralelo

Shell script directorio actual?

¿Manera simple de reiniciar procesos bloqueados?

    -eq igual a
    -ne no igual a
    -lt menor que
    -le menor o igual que
    -gt mayor que
    -ge mayor o igual que