always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos...

30
Presentación : Nombre (s): Martin Steve Apellido (s): Morán R. Matrícula: 2011-0914 Asignatura: Sistemas Operativos 3 Tema: How To – Creación de Shell Scripts Profesor (a): José Doñé

Transcript of always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos...

Page 1: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Presentación :

Nombre (s):

Martin Steve

Apellido (s):

Morán R.

Matrícula:

2011-0914

Asignatura:

Sistemas Operativos 3

Tema:

How To – Creación de Shell Scripts

Profesor (a):

José Doñé

¿Qué es un Script?

Page 2: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Los scripts son un conjunto de instrucciones generalmente almacenadas en un archivo de texto que deben ser interpretados línea a línea en tiempo real para su ejecución, se distinguen de los programas, pues deben ser convertidos a un archivo binario ejecutable para correrlos.

¿Qué es el Shell?

Shell, es el término usado en informática para referirse a un intérprete de comandos, el cual consiste en la interfaz de usuario tradicional de los sistemas operativos basados en Unix y similares como GNU/Linux. Mediante las instrucciones que aporta el intérprete, el usuario puede comunicarse con el núcleo y por extensión, ejecutar dichas órdenes, así como herramientas que le permiten controlar el funcionamiento de la computadora.

¿Qué es un Shell Script en Linux?

Un Shell Script es un script para la shell de comandos (terminal). Para crear un script basta con un editar un fichero nuevo y en el nombre poner .sh Ejemplo:

vi prueba.sh

Una vez creado, empezamos a editarlo. Se puede utilizar un editor de textos gráfico como gedit o un editor en terminal como vim, nano o emacs.

¿Cómo funcionan los Scripts?

En la primera línea del script se debe indicar que shell que vas a usar (/bin/bash/, /usr/ bin/perl , etc ) Aunque da igual la que uses lo importante es el contenido:

Page 3: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

#! /bin/bash

#! Se conoce con el nombre de Sha Bang.

Se denomina “sha-bang” a la secuencia #! con la que se inician los scripts. Su función es indicarle al sistema que se trata de un conjunto de comandos para que sean interpretados. En realidad, es un número mágico de dos bytes. El número mágico es un marcador especial para indicar el tipo de archivo, en este caso, indica que se trata de un script de shell ejecutable.

Para introducir comentarios se debe poner #. Por cada línea que desees poner un comentario, lo primero que debe tener es #. Es importante añadir comentarios comentando la utilidad del script o las variables que se crean.

¿Cómo ejecutar un Script?

Antes de poder ejecutarlo, debemos darle permisos de ejecución. (+x) por ello, haremos uso del comando chmod y damos permisos de ejecución, si se desea, se pueden dar a todos los usuarios y grupos.

chmod 755 /ruta_del_script Para el usuario propietario

chmod 777 /ruta_del_script Para cualquier usuario

Una vez hecho todo lo anterior, usaremos:

./nombredelscript.sh

Pero también podemos usar si es un shell script:

sh nombredelscript.sh

Script para hacer una Calculadora

Lo primero que haremos es abrir el Shell de nuestra distribución. En este tutorial me encuentro usando CentOS. Así que lo abriré dando clic en Aplicaciones > Accesorios > Terminal:

Page 4: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Luego de esto, nuestra terminal queda abierta:

Aquí, procederemos a entrar como Administrador (o usuario root):

Entonces, nos dirigiremos al escritorio, que es donde guardaremos el archivo que vamos a crear:

Crearemos una carpeta en el escritorio llamada Scripts, para guardar los archivos que vamos a crear:

Page 5: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Luego de esto, lo que haremos es escribir el siguiente comando para abrir el archivo en conjunto con el editor de texto que vayamos a utilizar. En mi caso, utilizaré nano.

El comando a escribir será el siguiente:

[root@localhost Scripts]# nano nombre_del_script.sh

Y nos sale nuestro editor:

Aquí para hacer un poco más resumida esta explicación lo que haremos es que le iremos explicando cada parte del código siguiente de la calculadora:

Page 6: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

La instrucción echo: indica mostrar un mensaje en la pantalla. En este caso, se utilizar para mostrar el mensaje de banner y algunos mandatos.

La instrucción read: indica que la variable que el usuario introduzca, será leída por el shell y se almacena en memoria. En este caso el primer y segundo valor numérico escritos por el usuario.

La instrucción read operador: el intérprete tomará en cuenta la operación aritmética elegida por el usuario para llevar acabo el proceso.

La instrucción sleep: indica el tiempo (en segundos) de suspensión para que el shell imprima la respuesta.

La instrucción expr: indica al shell el orden en el que va a efectuar la operación. En este caso expr $valor1 $operador $valor2, donde $ significa que se emplearan esas variables definidas “$valor1 $operador $valor2”.

Ahora, guardamos nuestro código y procedemos a asignarle permisos y luego a ejecutarlo. Para guardar el archivo en nano simplemente elegimos CRTL+O y luego CRTL+X para salir:

Page 7: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

CRTL + O y luego ENTER:

Después CRTL + X para salir:

Ahora procederemos a asignarle los permisos necesarios para ejecutar nuestro Script:

Para ejecutar nuestro Script, simplemente escribimos el comando sh seguido del nombre del Script y damos ENTER. En este caso, mi Script se llama Script-Calculator.sh:

Page 8: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Aquí ya vemos nuestro Script ejecutando nuestra calculadora básica. Esta calculadora solo permite operaciones básicas (suma, resta, división y multiplicación). Ahora vamos a verlo funcionando.

En nuestro ejemplo haré un división (144 entre 12). En nuestra primera sentencia nos pide el primer valor (en nuestro ejemplo será 144):

Luego nos pide el tipo de operador, en este caso es el símbolo de división:”/”

Luego introducimos nuestro segundo valor (para este campo sería 12):

Por ultimo nos da nuestro resultado deseado.

Page 9: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Script para Crear Usuarios

Dentro de nuestra carpeta Scripts, crearemos nuestro Script de Creación de Usuarios, el cual se llamará Script-AddUsers.sh.

Luego de darle ENTER, nos abrirá nuestro editor de texto con el archivo que vamos a utilizar para crear nuestro Script de Creación de Usuarios:

Lo que haremos ahora para no hacer el proceso tan complicado es que, a medida que yo vaya creando el Script, iré explicando paso a paso lo que haremos dentro del mismo editor. O sea, escribiré las instrucciones dentro del mismo editor para ahorrarnos tiempo.

Iré enumerando cada paso. También iré subrayando las tareas que se harán en cada uno.

Page 10: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Paso #1

Paso #2

Paso #3

Paso #4

Page 11: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Paso #5

Paso #6

Paso #7

Paso #8

Paso #9

Page 12: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Paso #10

Paso #11

Paso #12

Paso #13

Por último, guardamos y salimos.

Page 13: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Ahora para ver a nuestro Script funcionando, lo invocamos por medio del comando sh. Por ejemplo:

Luego que presionamos ENTER, nos sales la siguiente pantalla:

Lo primero que nos pedirá es el nombre de usuario a crear. Antes de seguir, es mejor especificar de una vez los pasos que vamos a llenar.

Usuario: mmoran Directorio /home: /home/mmoran1 Grupo: Networking Shell: /bin/bash

Ahora que sabemos los parámetros concretos, vamos a comenzar:

Page 14: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Cuando damos ENTER, se limpia la pantalla y nos presenta los datos introducidos. En caso de que estén erróneos, el Script nos advierte que pulsemos CRTL + C para cancelar la operación:

Si todos los parámetros que introducimos están correctos, entonces podemos presionar ENTER. Nos saldrá el siguiente mensaje:

Page 15: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Luego nos saldrá otra pantalla donde nos pedirá la clave o password para el nuevo usuario:

Y ya nuestro usuario queda satisfactoriamente creado. Si queremos verificar que es cierto, podemos usar dos formas, las cuales son buscar el usuario en la base de datos o logearse. Por ejemplo, si queremos ver por medio de la terminal, escribimos la siguiente sintaxis:

El parámetro more nos permite ver el contenido completo de un archivo.

El parámetro grep nos permite filtrar una porción de datos específicos de un archivo.

Usamos grep porque el comando more nos hubiera mostrado una extensa lista de datos que contiene el archivos, la cual, con el archivo grep, se pudieron filtrar diciéndole que solo mostrara información referente al usuario mmoran.

Page 16: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Si nos damos cuenta, el usuario esta creado junto con su carpeta personal de sistema:

Page 17: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Crear un Script para hacer un Backup de nuestros archivos

Realizamos el mismo proceso que hemos realizado anteriormente, creamos el archivo donde crearemos el script por línea de comando.

Se abre el editor de texto con el archivo que vamos a crear.

Ahora, haremos lo mismo que con el script anterior: Iremos explicando dentro del script a medida que lo vayamos creando:

Paso #1:

Page 18: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Paso #2:

Paso #3:

Paso #4:

Ahora vamos a darle permisos a nuestro Script:

Y lo ejecutamos:

Page 19: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

En este caso, voy a hacerle un Backup a mi carpeta que contiene los scripts. Esto lo hago escribiendo la ruta completa en donde se encuentra la carpeta:

Entonces, el Script hace el resto:

Lo que haremos ahora es verificar si nuestro Backup fue creado. Esto lo hacemos yendo a la carpeta “Backup” en nuestro Escritorio, el cual fue la ruta que le asignamos a los backups que vayamos a crear.

Y le damos un “ls” para ver los ficheros dentro de la carpeta Backup:

Page 20: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Como vemos, tenemos un archivo llamado “Backup.La fecha.tgz”. Si queremos descomprimir dicho fichero, solo usamos el comando tar xvf“:

Luego de finalizar la descompresión del fichero, volvemos y le damos ls para ver si se descomprimió nuestro fichero /home.

Eso es todo!

Page 21: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Script para Transferir Datos entre PCs

Como dice el titulo, lo que haremos ahora es hacer un script funcional que nos permita intercambiar datos (archivos, directorios, etc) entre diferentes PCs.

Para esto abrimos nuestra terminal y nos logeamos como root:

Ahora, en conjunto con nuestro editor de texto preferido (en mi caso nano) vamos a crear el archivo con el nombre que le vamos a dar a nuestro Script. Vamos a llamarlo Script-Datos.sh:

Y nos abrirá nuestro archivo listo para ser editado:

Page 22: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Aquí veremos los pasos a seguir. Dichos pasos los copiaré dentro del mismo Script:

Page 23: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Guardamos presionando CTRL + O y luego ENTER:

Y luego CTRL + X para salir.

Ahora vamos a poner nuestro Script en funcionamiento. Para esto lo ejecutamos con el comando sh:

Entonces iniciamos el script:

Page 24: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

En nuestra primera pantalla nos pide que introduzcamos el archivo o directorio que queremos copiar. En este caso, copiaré mi carpeta Scripts que se encuentra en el escritorio de mi maquina Servidor. Ejemplo:

Luego, nos pide el directorio de destino donde queremos llevar ese archivo:

Copiaré la carpeta Scripts en el Escritorio de mi maquina Cliente cuya IP es 192.168.1.11:

Damos ENTER

Aquí, nuestro Script nos pide la clave de nuestra máquina cliente, que es donde vamos a copiar el directorio:

Luego que introducimos la clave, se empezarán a copiar los archivos:

Page 25: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Y se copian satisfactoriamente. Para confirmar solo tenemos que ir a nuestra máquina cliente e ir al escritorio:

Utilizando CRON para programar la ejecución automática de un Script

Agregar tareas a crontab:

Page 26: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Ejecutamos la edición del crontab con crontab -e, en algunas distribuciones nos da la opción de elegir el editor de textos que deseemos, los demás nos quedamos con vi. El archivo crontab lucirá algo así:

Donde:

M: Corresponde al minuto en que se va a ejecutar el script. El valor va de 0 a 59.

H: Corresponde a la hora exacta. Se maneja el formato 24 horas. Los valores van de 0 a 23, siendo 0 las 12 de la medianoche.

Dom: significa el día de la semana. Puede ser numérico o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.

User: Define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente y siempre y cuando tenga permisos de ejecución dl script.

Command: Refiere al comando o a la ruta del script a ejecutar, ejemplo: /home/MMORAN/Desktop/Scripts/Script-AddUsers.sh

Aquí unos cuantos ejemplos de tareas programadas con cron. Ejemplo, de los Scripts que hemos creado en este tutorial, si queremos ejecutar el script Script-Calculadora.sh a las 10:30 P.M. todos los días, entonces el mandato quedaría así:

Si quisiéramos ejecutar el Script Script-AddUsers.sh los viernes a las 05:30 A.M entonces el mandato quedaría así:

Page 27: always-centos.weebly.comalways-centos.weebly.com/uploads/1/9/0/2/19024193/_howto... · Web viewLos scripts son un conjunto de instrucciones generalmente almacenadas en un archivo

Si quisiéramos ejecutar el Script Script-Datos.sh el día 20 de noviembre a las 07:30 P.M. entonces el mandato sería:

Pero si esto le resulta confuso, CRONTAB también maneja cadenas especiales para definir estos rangos.

@yearly @monthly @weekly @daily @midnight @hourly

Sus usos son muy sencillos. Por ejemplo, si queremos correr el script Script-Backup.sh todos los días, el mandato seria:

Y eso es todo!