Creacion de Script

Anuncio
Creación de Scripts
¿Qué es un script?
Un guión o script es un fichero de texto que contiene una serie de instrucciones que
se pueden ejecutar en la línea de órdenes, y que se ejecutarán seguidas. En ese
sentido son iguales que los ficheros con extensión BAT de MS-DOS, aunque, por
supuesto, como en los sistemas UNIX no existe el concepto de extensión, pueden
tener cualquier nombre. El único requisito es que ese fichero de texto tenga permiso
de ejecución para la persona que intenta ejecutarlo. Alternativamente, puedes llamar
al intérprete y darle como parámetro el nombre del guión, pero es más cómodo dar
permiso de ejecución al guión para ahorrarnos escribir el nombre del intérprete.
Shell es un programa de usuario, o su entorno provisto para la interacción del
usuario. Shell es un intérprete de lenguaje de comando que ejecuta comandos de
lectura de entrada por medio del dispositivo estándar (teclado) o desde un archivo.
Shell no es parte del núcleo del sistema, pero utiliza el núcleo del sistema para
ejecutar programas, crear archivos, etc. Varios shell disponibles con Linux, son: BASH
(Bourne-Again Shell), CSH (C Shell), KSH (Korn Shell) y TCSH.
Los scripts pueden tener las siguientes características:



Encabezado que debe de tenerlo #! /bin/bash
Es bueno ponerle un comentario para saber para qué sirve el script estos se
agregan con # y el comentario.
Las variables que son una de las piezas más importante porque le dan la
oportunidad al usuario de agregar variables que él quiere que procesé
puede ser echo –n, expr este es para operaciones con número. Entre otras.
Como funciona un shell script en Linux?
La Shell lee la entrada estándar de la terminal, y manda la salida estándar y los
errores estándar a la terminal al menos que se le haya dicho que lo mande a otro
lugar. La shell es de línea orientada, no procesa los comandos hasta que pulse
<Enter> para indicar el final de una línea. Usted puede corregir lo que ha escrito
mientras digita. Diferentes shell proporcionan diferentes instalaciones para la
edición de sus comandos, pero por lo general reconocen <BKSP> o <Supr> como la
pulsación de tecla para borrar los caracteres anteriores. Cuando se presiona <
Enter >, el shell interpreta la línea que ha introducido, antes de ejecutar los
comandos en esa línea. Los pasos que se ejecuta a través son los siguientes:
1. La shell se divide la línea en fichas. Una ficha es un comando, variable, u otro
símbolo reconocido por la shell. Se continúa la construcción de una secuencia
de ficha, hasta que llega a una palabra reservada (un comando de shell interno
que regula el flujo de control de un script de shell), nombre de la función, o el
operador (un símbolo que denota una pipa, una condición lógica, un
separador de comandos, o alguna otra operación que no puede llevarse a
cabo hasta que se evaluó el comando anterior).
2. La Shell organiza las fichas en tres categorías:
 I / O redirección; comandos que determinan la entrada o salida de un
programa y a donde se dirigen. Por ejemplo, en la siguiente línea de comandos,
el texto ``> listfile''se interpreta como una redirección de la salida, que luego se
aplica el comando ant erior: > Ls-al listfile
 Asignación de variables, la shell puede reconocer los comandos que asignan
un valor a una variable.
 Varios comandos, otras fichas son revisados para ver si son alias. La primera
palabra está revisada. Si se trata de un alias, se sustituye por el significado
original del alias, si no es un alias, o si es seguido por un espacio en blanco
antes de la siguiente palabra, el proceso de comprobación de alias se repite
hasta que ya no quedan más palabras (o hasta que un alias se ha detectado
que no es seguido por un espacio).
3. Pude ser que lo comando hayan sido ejecutados, ya sea como comandos de
la shell interno (que hacen que el propio shell tome alguna acción) o, si no son
comandos internos, como los programas externos (si la shell puede localizar un
archivo ejecutable de ese nombre).
Cómo los identifica el sistema?
Los archivos script suelen ser identificados por el sistema a través de uno de los
siguientes encabezamientos en el contenido del archivo, conocido como shebang:
#!/bin/bash ; #!/bin/ksh ; #!/bin/csh
Aunque en entornos UNIX la mayoría de los scripts son identificados por dicho
encabezamiento, también pueden ser identificados a través de la extensión
".sh", siendo ésta quizá menos importante que el encabezamiento, ya que casi
todos los sistemas no necesitan dicha extensión para ejecutar el script, por lo
tanto, esta suele ser añadida por
tradición, o más bien, es útil para que el usuario pueda identificar estos archivos a
través de
una interfaz de línea de comandos sin necesidad de abrirlo.
Difieren de los programas de aplicación, debido a que los últimos son más
complejos; además, los scripts son más bien un programa que le da
instrucciones a otros más avanzados.
¿Cómo ejecutar un script?
Una vez guardado el archivo con el nombre deseado, tenemos dos formas de
ejecutarlos:
 Ejecutar el comando source fichero. En este forma de ejecutarlo no tenemos
que darle permiso de ejecutar. El cual carga el fichero en la memoria del Bash y
lo ejecuta.
 La segunda forma, a diferencia del anterior no implica darle permiso de
ejecución al fichero, esto podemos hacerlo con el comando chmod+X
+nombre de fichero. Poniéndole este permiso, podremos ejecutarlo siempre
y cuando este en algunos de los directorios
indicados en la variables de entorno PATH. Luego escribimos sh y el nombre del
fichero. Donde sh es la orden encargada de ejecutar el script.
Aparte de que estas dos formas de ejecutarlos se diferencias por los comandos
y la complejidad que se utiliza en cada unas de ellas, estas se diferencias
debido a que cuando ejecutamos el comando source, este se ejecuta dentro
del proceso del Shell, mientras que si lo ejecutamos como un fichero
ejecutable se ejecuta en un subshell. Esto implica que solo las variables de
entorno exportadas son conocidas por el nuevo subshell.
Lo primero que vamos hacer es crear nuestra carpeta en donde vamos a
guardar nuestros script esto lo hacemos con el comando mkdir “el nombre
de la carpeta” luego entramos que darle los permisos por la carpeta no
aparecerá así.
Crear un script para crear una calculadora
Después de haber observado lo básico de un Shell script podemos proceder a
comenzar a verlos en función; en este caso se va a crear un script para que
calcule suma, resta, multiplicación y división. Existen 2 formas de hacer los
scripts, una es mediante cualquier editor del Shell ósea nano, cat, vi, etc,
como quien dice automáticamente desde la terminal; y la otra forma es
haciéndolo en un editor de palabras como KWrite, gedit Text Editor, etc.
Nosotros comenzaremos haciéndolo por el primer método.
Lo primero en hacer es abrir la terminal de comando.
Con la consola abierta lo primero que haremos es entrar a modo de super
administrador digitando el comando “su” y luego la contraseña, luego de estar
adentro introduciremos el comando “which bash”, para ver cuál es la bash que
estamos utilizando (como se dijo anteriormente existen varios tipos de bash entre los
más conocidos están: #!/bin/bash ;#!/bin/ksh ; #!/bin/csh), como vemos en nuestro
caso estamos utilizando el bash “bin/bash” esto indica que cada vez que se vaya a
realizar un script debemos comenzar con el comando “#!/bin/bash”, (este
encabezamiento es conocido como shebang) de tener otro bash se escogería, y se
comenzara con él.
Sabiendo cual es nuestro bash podemos entrar a nuestro editor nuestro script, pero
antes de esto vamos a crear un directorio llamado Scripts donde almacenaremos
todos estos scripts, este directorio será en root, home, esto lo haremos con el
comando “cd /home/root /”, “mkdir Scripts”, utilizamos el comando ls –l para ver si
ya está creado y como nos damos cuenta ya lo está. Ahora entramos al directorio de
Scripts y es aquí donde crearemos dichos scripts.
Recordar si queremos que el directorio pase a manos del usuario root solo tenemos
que digitar el comando (claro esto es después de salir del directorio Scripts ósea, en el
directorio de root) “chown root Scripts” y si queremos que el directorio pase a manos
del grupo de root, solo digitamos el comando “chgrp root Scripts” y listo ya está en
manos del usuario root.
Variables autodefinidas por shell-script
$, indica la posición del argumento cuando el script es llamado.
$# —- Esta variable contiene el numero de argumentos que hemos pasado al script.
$0 —- Esta variable contiene el nombre de el shell-script que se ejecuta.
$* —- Esta variable muestra una cadena con los parámetros que hemos pasado al
script.
$? —- Esta variable contiene la salida del comando anterior donde se encuentre dentro
de el script.
Ya dentro del directorio Scripts procedemos a crear el fichero o script, como dijimos
antes esto se pude lograr con cualquier editor de fichero disponible, en este caso
estaremos utilizando el “nano”, entonces procedemos a crear el script y usamos el
comando “nano calculadora.sh” para introducirnos el script y comenzar a digitar. El
nombre de calculadora es por el fichero que será, es decir es como se quisiera salvar
un archivo para ser utilizado.
Al ejecutar nuestra nueva calculadora con la mitad de líneas gracias a case, tenemos
que case nos permite dar múltiples valores a una variable y actuar de la forma que
sea, según el valor que introduzcamos.
Crear un script para crear usuarios
Bueno para la creación del script de un usuario vamos a utilizar el editor de texto que
utilizamos anteriormente, que es el nano. Para comenzar entraremos como root y nos
dirigiremos hacia la carpeta que creamos llamada scripts. Luego accedemos al editor
de texto escribiendo lo siguiente:
Nano {nombre}
Ahora en el editor de texto lo primero que debemos poner es “#!” seguido del Shell
que vamos a utilizar en este caso “/etc/bash/” y luego en las líneas de abajo
ponemos “echo” seguido de un mensaje para que en secuencia que se va ejecutando
el script nos muestre los mensajes, luego en otra línea de abajo ponemos solo los
comandos que queremos ejecutar, en este caso como es para crear usuarios
debemos poner “useradd” y el nombre del usuario que queremos crear” también
podemos poner “passwd” y el nombre del usuario para cuando se cree el usuario
automáticamente se nos pida la contraseña que le vamos a asignar a el usuario, esto
lo podemos ver detenidamente en la siguiente imagen que nos muestra el editor de
texto con todo esto.
Echo: En Unix (y otros sistemas derivados), el comando echo permite utilizar
variables y otros elementos del intérprete de comandos. En las implementaciones
más comunes y usadas como Bash, echo se trata de una función built-in, es decir,
una función interna del intérprete de comandos y no un programa externo, así
como cat o grep.
Ahora vamos a proceder a guardar el script para esto damos Ctrl + x.
Ahora con sh procederemos a ejecutar nuestro script
Crear un script para crear grupos
Para hacer un script que cree grupos lo hacemos de forma similar que con los usuarios,
la diferencia radica que aquí en el editor de texto cuando estamos haciendo el script
ponemos “groupadd”, hacemos el script con el editor de nuestra preferencia, en mi
caso usare el nano
Salimos y guardamos el archivo y por último le damos permisos de ejecución:
chmod u+x calculadora
Ahora con sh procederemos a ejecutar nuestro script
Crear un script para crear backup de datos
Para hacer un script de backup lo hacemos siguiendo algunos de los pasos que con los
anteriores, a diferencia que aquí entran variables más complejas y que debemos
conocer, como es de que parte se creara el backup, donde se guardara, entre otras
cosas, estas variables se dan en detalle más adelante.
Backup_file: es una variable que crea y le asigne una ruta o valor. (En este
haremos un backup del directorio /home/).
Dest: esta variable es la ruta donde se guardara el backup. (En este lo guardaremos
en la ruta /home/compartir).
Day: es una variable en la que se asigna el día que quiero que se haga el backup,
(los caracteres que introduciremos indican que el script se ejecutara a la hora que
ejecutemos el script, estos caracteres son “date +A%”).
Archive_file: esta variable es para asignarle un nombre al backup seguido del
.tgz que es la extensión que tendrá el archivo comprimido.
Tar czf: comprimirá todos los valores que representan dichas variables.
Vamos a crear el backup con un editor de texto, guiándonos de las variables que
se explican anteriormente.
Crear un script para transferir datos entre pc
Ya hemos visto como transferir datos usando el NFS pero ahora lo vamos a ver de
una forma más interesante usando script y otros elementos que nos pueden ser
funcionales para una eficaz transferencia de archivo, debemos ir al archivo
/etc/exports y asegurarnos que este especificada la ruta del recurso que se va a
compartir, en este caso será una carpeta que está en el directorio /home por lo tanto
debe quedar como se muestra a continuación.
Ahora si no lo tenemos creado, procedemos a crear el directorio llamado Folder 1
que es ahí donde se estarán compartiendo los archivos que queremos compartir,
como hemos visto creamos un directorio con el comando mkdir mas el nombre Y
esto lo hacemos en el directorio Desktop como habíamos especificado en el
/etc/exports.
Nota: Veremos que no podemos crear un directorio porque ya se encuentra hecho
mas hacia abajo.
Ahora en la pc cliente debemos asegurarnos de que las maquinas estén en
conectividad para probar esto usamos el ping más la dirección ip de la otra pc.
Luego de esto crearemos una carpeta en el directorio media que será nuestro
punto de montaje.
Ahora para hacer un script que nos permita montar el directorio en la ruta deseada y
que nos permita hacer transferencia de archivos lo que hacemos creando un archivo
con el editor de nuestra preferencia y poniéndolo de la siguiente forma. Recordemos
que podemos usar cualquier editor de texto, en mi caso he usado nano y ya le he
puesto un nombre para cuando lo guarde.
Mount - Es el comando para montar un directorio.
192.168.1.2 – Es la dirección de nuestro servidor.
/home/grande/Desktop/Folder1 – Ruta de nuestro server
/media/comparte – Punto de montaje
Ahora al ejecutar el script transfer con sh delante vemos que se acepta como si
hubiésemos ingresado un simple comando, para comprobar que funciono vamos al
punto de montaje que en este caso es /media/cliente y vemos que se ha montado la
carpeta compartir con todos los datos que tenía.
Utilizar cron para programar la ejecución
automática de un script
Iniciamos una sesion en la terminal como root y escribimos lo siguiente para abrir un
editor VI:
Crontab –u root -e
\
En la ventana de VI, pulsamos ‘i’ o Insert para insertar texto.
En este archivo se ubican las tareas guardadas en cron. Cada una de estas tareas
requiere cinco entradas indicando: la fecha, hora, el nombre y ruta del programa para
ejecutar, usando Tab o la barra espaciadora entre cada entrada. Por ejemplo:
Minuto (0-59) hora (0-23) dia_del_mes(1-31) mes(1-12)
Dia_de_la_semana (0-7) /ruta/script.sh
Se puede utilizar el asterisco “*” como carácter comodir, asi : “0 10 * * *
/ruta/script.sh “equivales a”0 10 1-31 1-12 0-7
/ruta/script.sh “. En este caso, el script se ejecutara a la diez de la mañana todos los
dias.
Al final, guardamos como en todo archivo abierto con VI, usando “:w” en el modo de
comandos
Descargar