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:
Controlador | Nombre | Descripción |
0 | entrada estándar | Entrada estándar |
1 | salida estándar | Salida estándar |
2 | stderr | Error estándar |
-eq | igual a |
-ne | no igual a |
-lt | menor que |
-le | menor o igual que |
-gt | mayor que |
-ge | mayor o igual que |