0% encontró este documento útil (0 votos)
42 vistas17 páginas

Creación de Usuarios con Shell Script

Este documento trata sobre programación en shell script y su uso para tareas administrativas como la creación de usuarios y la comprobación del estado de equipos en red. Se explican funciones, variables y comandos como useradd y ping para automatizar dichas tareas.

Cargado por

Olinda Galvan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas17 páginas

Creación de Usuarios con Shell Script

Este documento trata sobre programación en shell script y su uso para tareas administrativas como la creación de usuarios y la comprobación del estado de equipos en red. Se explican funciones, variables y comandos como useradd y ping para automatizar dichas tareas.

Cargado por

Olinda Galvan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Electiva Libre II

Linux Avanzado

Shell Script
En tareas administrativas
UNIDAD 1. Programación en Shell Script

Introducción

Como pudimos evidenciar en sesiones anteriores, Shell script es el lenguaje


utilizado para comunicarnos con el núcleo del sistema operativo.

En él se pueden realizar tareas de programación básica y también tareas de tipo


administrativo, como la gestión de usuarios y servidores de red.
UNIDAD 1. Programación en Shell Script

Supongamos que somos administradores o responsables de un sistema y deseamos crear nuevos


usuarios en él.
Recordemos que el comando Useradd nos permite crear usuarios, pero en esta ocasión lo
realizaremos mediante un Script.
####Creamos una función que recoja los datos necesarios para la creacion de usuarios
##########################################################
###FUNCION QUE RECOGE LOS DATOS#####################

peticion_datos()
{
#### Borramos el contenido de las variables que vamos a usar. Por precaucion.
unset $user
unset $grupo1
unset $grupo2
unset $shell
unset $password
unset $casa

#### Vamos pidiendo los datos que necesitamos


UNIDAD 1. Programación en Shell Script

#### Vamos pidiendo los datos que necesitamos

echo Nombre de usuario:


read user
### Le proponemos al usuario el grupo "users", si no introduce ningun grupo, se lo asignamos nosotros
echo Grupo principal:[users]
read grupo1
if [ "$grupo1" = "" ]
then
grupo1=users
fi
#### Puede no especificarse un grupo secundario
echo Grupo Secundario:
read grupo2
if [ "$grupo2" = "" ]
then
grupo22=""
else
grupo22="-g '$grupo2'"
fi
UNIDAD 1. Programación en Shell Script
#### Si no especifica una shell se le asigna /bin/bash
echo Shell:[/bin/bash]
read shell
if [ "$shell" = "" ]
then
shell=/bin/bash
fi
#### Home del usuario, por defecto home/nombre_ususario

echo Home del usuario: [/home/$user]


read casa
if [ "$casa" = "" ]
then
casa=/home/$user
fi
#### Existe el home?? Hay que crearlo???
echo Existe el home del usuario: [n]
read exist
if [ "$exist" = "" ] || [ "$exist" = "n" ]
then
param=-m
fi
UNIDAD 1. Programación en Shell Script

#####Esta parte es la mas interesante. El comando useradd de linux permite especificar la password del
usuario, pero debemos encriptarla nosotros. Le pedimos la password al usuario del script y se la pasamos
a un script de PERL. La salida de dicho script la almacenamos en una variable.

echo Password:
read password
contrasena=`perl /root/scripts/crypt.pl $password`

#### El siguiente codigo es solo de control, para que muestre por pantalla el resultado de la encriptacion.
echo ________________________
echo ----- DEBUG-------------
echo ________________________
echo $contrasena
}

## FIN DE LA FUNCION ##Peticion de datos###


UNIDAD 1. Programación en Shell Script

###### Como ya hemos especificado antes, las funciones no se ejecutan hasta que no se las llama.

peticion_datos

####Ejecutamos el comando de creacion de usuario

/usr/sbin/useradd -G $grupo1 $grupo22 -d $casa $param -p $contrasena $user


UNIDAD 1. Programación en Shell Script

El script de perl es muy sencillo. Debemos crear el fichero crypt.pl en la misma ubicación
del script de creación de usuarios. El contenido del fichero debe ser:
#!/usr/local/bin/perl
#
# call it like so: perl crypt.pl password
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}";
UNIDAD 1. Programación en Shell Script
UNIDAD 1. Programación en Shell Script
UNIDAD 1. Programación en Shell Script
UNIDAD 1. Programación en Shell Script

Supongamos que somos administradores o responsables de una red con cierto número de equipos y
queremos realizar periódicamente la tarea de saber si están conectados. Para ello escribiremos un
script que lanzará un ping a todos nuestros equipos de la red y nos avisará sonoramente cuando uno
de ellos no responda.

Para ello es necesario tener un listado de las direcciones Ip, de nuestros equipos conectados a la red.

Creamos un fichero "mis_servers.lst"con las ip de nuestros equipos:

root@ubuntu:~# cat mis_servers.lst
192.168.1.37
192.168.1.1
192.168.1.89
UNIDAD 1. Programación en Shell Script

#!/bin/sh

#### Defino una función con todas las operaciones para poder llamarla recursivamente. Las funciones no se ejecutan
hasta que no se les llama o invoca
ejecucion()
{
clear
#####limpia la pantalla
for server in `cat mis_servers.lst`
#### Realiza un cat del fichero mis_servers.lst y almacena ciclicamente cada linea en la variable $server. Es decir
realiza un for tantas veces como lineas tenga mis_servers.lst y almacena el contenido de la linea en la variable
$server. Para cada ejecución del for realiza lo que está entre el do y el done.
UNIDAD 1. Programación en Shell Script

do

echo
echo Realizo un ping a la maquina $server
echo
ping -c 2 -A $server
### Manda dos paquetes de trafico icmp al destino almacenado en server. Emite un pitido si no hay respuesta.

done

###Ahora dentro de la funcion voy a llamar a la propia funcion para convertir el proceso en un bucle. Colocamos una
pausa para espere 2 minitos antes de volver a ejecutarse
sleep 120
ejecucion
}
ejecucion
#### Esta llamada externa es la que se va a ejecutar la primera vez.
UNIDAD 1. Programación en Shell Script

Realizo un ping a la maquina 192.168.1.37


PING 192.168.1.37 (192.168.1.37): 56 data bytes
64 bytes from 192.168.1.37: icmp_seq=0 ttl=128 time=0.244 ms
64 bytes from 192.168.1.37: icmp_seq=1 ttl=128 time=0.269 ms
--- 192.168.1.37 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.244/0.257/0.269/0.013 ms

Realizo un ping a la maquina 192.168.1.1


PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.637 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.629 ms
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.629/0.633/0.637/0.004 ms

Realizo un ping a la maquina 192.168.1.89


PING 192.168.1.89 (192.168.1.89): 56 data bytes
--- 192.168.1.89 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
Laboratorio: 2 Dic 2021
En grupos de dos personas se debe realizar la práctica de conectar en red, dos equipos que posean
sistema operativo Linux.

Laboratorio: 9 Dic 2021


En grupos de dos personas se debe realizar la práctica transferir archivos entre dos equipos que tengan
sistemas operativos diferentes.
Uno de ellos debe ser una distribución de Linux, el otro puede ser cualquiera a su elección.
Exposiciones: 9 Dic 2021
- Teoría del concepto y funcionamiento de una red
- Direcciones IP en Linux
- Interfaces de Red

Exposiciones: 16 Dic 2021


- Servidor DHCP
- Concepto, características y funcionalidad
- Práctica de montaje de servidor DHCP

Parcial II: 23 Dic 2021


Evidencia de creación de servidor DHCP (Grupos de 3 personas)

También podría gustarte