Sistemas Operativos III
Unidad 11 Scri Sc ript pts s Av Avanz anzad ados os Redes y Comunicaciones de Datos
Copyright © 2007 por TECSUP
Scripts Avanzados - Linux
1
Sistemas Operativos III
Introducción
Se pueden pueden desarrollar desarrollar scripts scripts más potentes potentes utilizando utilizando una serie de herramientas que permiten manipular la información mostrada en pantalla. Además Además existen existen ciertos ciertos scripts scripts que se ejecutan ejecutan en el arranque del sistema o al inicio de una sesión y que pueden ser de utilidad para programar la ejecución de una determinada tarea. En esta unidad trataremos sobre las herramientas de programación que se pueden usar para manipular la información información,, los scripts scripts de arranque arranque e inicio, inicio, así como el el uso de cuadros de diálogo para mejorar la interacción con el usuario. 2
Scripts Avanzados - Linux
2
Sistemas Operativos III
Introducción
Se pueden pueden desarrollar desarrollar scripts scripts más potentes potentes utilizando utilizando una serie de herramientas que permiten manipular la información mostrada en pantalla. Además Además existen existen ciertos ciertos scripts scripts que se ejecutan ejecutan en el arranque del sistema o al inicio de una sesión y que pueden ser de utilidad para programar la ejecución de una determinada tarea. En esta unidad trataremos sobre las herramientas de programación que se pueden usar para manipular la información información,, los scripts scripts de arranque arranque e inicio, inicio, así como el el uso de cuadros de diálogo para mejorar la interacción con el usuario. 2
Scripts Avanzados - Linux
2
Sistemas Operativos III
Objetivos
Utilizar herramientas de programación para desarrollar scripts scripts mas complejos. complejos. Identificar Identificar los los scripts de arranque arranque y de inicio. Utilizar cuadros de dialogo para mejorar la apariencia de los scripts.
3
Scripts Avanzados - Linux
3
Sistemas Operativos III
Contenido
Herramientas de programación. Secuencia de ejecución. Script de arranque. Script de inicio.
Cuadros de Diálogo.
4
Scripts Avanzados - Linux
4
Sistemas Operativos III
Herramientas de Programación Redes y Comunicaciones
Scripts Avanzados - Linux
5
Sistemas Operativos III
Herramientas de Programación
Se puede utilizar una serie de comandos, para darle tratamiento a la información obtenida de los archivos o de la salida de un comando. Entre ellos tenemos: grep (ya visto anteriormente) cut head tail sort
6
Scripts Avanzados - Linux
6
Sistemas Operativos III
Comando cut
Permite extraer varios campos de datos de un archivo o de la salida de un comando $cut -cchars file Donde chars especifica el número de caracteres a extraer de cada línea -c5 -c20-50 -c5-
Extrae el carácter 5 Extrae del carácter 20 al 50 Extrae del carácter 5 hasta el final
Ej. $ w | cut -c1-8 4:58pm USER 7
Opciones -d y -f Se utilizan cuando los datos están delimitados por un carácter en particular. Donde dchars es el carácter que delimita cada campo y fields especifica el numero de campo a ser extraído. Ej. $cut -d: -f1 /etc/passwd $cut -d: -f1,5 /etc/passwd $cut -f1 phonebook defecto)
Scripts Avanzados - Linux
(toma el tab como delimitador por
7
Sistemas Operativos III
Ejemplo de cut
$ cat passwd … hernan:x:654:100::/home/hernan:/bin/bash carlos:x:655:100::/home/carlos:/bin/bash fernando:x:656:100::/home/fernando:/bin/bash leonardo:x:657:100::/home/leonardo:/bin/bash
$ cut -d: -f1 passwd hernan carlos fernando leonardo 8
Scripts Avanzados - Linux
8
Sistemas Operativos III
Comando sort
Ordena las líneas de un archivo $sort file
La opción -u elimina líneas duplicadas La opción -r ordena en forma descendente La opción -o especifica el archivo de salida
9
Scripts Avanzados - Linux
9
Sistemas Operativos III
Comando head
Permite extraer las primeras líneas de un texto
$w 5:08pm up 43 days, 4:34, 2 users, load average: 0.00, 0.00, 0.00
USER TTY root tty1 user0 pts/0
FROM 216.244.185.2
LOGIN@ IDLE JCPU PCPU WHAT 9Aug 1 15days 1.15s 0.93s -bash 4:14pm 0.00s 1.39s 0.09s w
$ w | head -1 5:08pm up 43 days, 4:34, 2 users, load average: 0.00, 0.00, 0.00
10
Scripts Avanzados - Linux
10
Sistemas Operativos III
Comando tail
Permite extrae las ultimas líneas de un texto
$ free total
used
free
shared
buffers
cached
Mem: 79348 -/+ buffers/cache: Swap: 130656
66128 13924 2228
13220 65424 128428
5240
38452
13752
2228
128428
$ free | tail -1
Swap:
130656
11
El comando tail con el parametro –f ademas nos permite ver en tiempo real la variación del contenido de archivos como por ejemplo los de log.
Scripts Avanzados - Linux
11
Sistemas Operativos III
Secuencia de Ejecución
Existen una serie de scripts, que se ejecutan en el sistema y que afectan a los usuarios que se conectan. Estos son: Script de arranque: que se ejecutan en el proceso de carga del sistema: Script de Inicio Globales: que afectan a todos los usuarios. Script de Inicio Individuales: que afectan a un usuario especifico.
12
Scripts Avanzados - Linux
12
Sistemas Operativos III
Script de Arranque del Sistema
Son “shells-script” que se encuentran en el directorio /etc/rc.d Son ejecutados por el proceso init siguiendo las instrucciones del archivo /etc/inittab Se ejecutan con los máximos privilegios (privilegios de root). No es necesario que entre ningún usuario al sistema para ejecutarse y se ejecutan una única vez al arrancar el sistema.
13
Se indican los archivos de arranque por orden de ejecución: /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc.local El administrador del sistema sólo debería modificar el archivo /etc/rc.d/rc.local
Scripts Avanzados - Linux
13
Sistemas Operativos III
Script de inicio Globales de Usuario.
Estos scripts se utilizan para configurar el entorno global de los usuarios. Estos archivos son el /etc/profile y el /etc/bashrc. El archivo /etc/profile contiene variables de entorno del sistema y programas de inicio . El archivo /etc/bashrc contiene alias del sistema y funciones.
14
Scripts Avanzados - Linux
14
Sistemas Operativos III
Script de Inicio Individual de Usuario
Existen tres archivos en el directorio de un usuario que le permiten configurar el entorno individual de una cuenta. Estos archivos son copiados del directorio /etc/skel, cuando el usuario es creado. Los nombres de estos archivos son: .bash_profile .bashrc .bash_logout.
15
.bash_profile Es el más importante de los tres. Es leído y los comandos incluidos en él, ejecutados, cada vez que el usuario entra en el sistema. Cualquier cambio hecho en este archivo no tendrá efecto hasta que salgamos y entremos en el sistema de nuevo. Contiene variables de entorno personales y programas de inicio. .bashrc Es leído cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la línea de comandos. Contiene alias personales y funciones. bash_logout Es el archivo leído por bash, cuando salimos del sistema. Podemos definir, por ejemplo que se borren los archivos temporales creados en nuestra ultima sesión o registrar el tiempo que hemos estado utilizando el sistema. Si .bash_logout no existe, ningún comando será ejecutado a nuestra salida.
Scripts Avanzados - Linux
15
Sistemas Operativos III
/etc/issue
El archivo /etc/issue es un archivo de texto plano que permite personalizar la pantalla de entrada al sistema. Se puede usar algunas secuencias de “Escape” para insertar información sobre el sistema.
16
Todos los códigos de escape consisten en una barra invertida (\) seguida de una de las letras: d Inserta la fecha actual. s Inserta el nombre del sistema, el nombre del sistema operativo. l Inserta el nombre de la línea tty actual. m Inserta el identificador de la arquitectura de la máquina, i486 por ejemplo. n Inserta el nombre de nodo de la máquina, también conocido como nombre de máquina (hostname). r Inserta la versión del núcleo, por ejemplo 2.4.16. t Inserta la hora actual, etc
Scripts Avanzados - Linux
16
Sistemas Operativos III
/etc/motd
El archivo /etc/motd, messages of to day (mensaje del día) es un archivo de texto que se muestra a todos los usuarios que inicien sesión ese día. Tradicionalmente, es usado por los Administradores de Sistemas como una especie de Boletín para comunicación con los usuarios.
17
Scripts Avanzados - Linux
17
Sistemas Operativos III
Secuencia de Inicio /etc/issue
Mensaje antes del login
/etc/motd
Mensaje después del login
/etc/profile /etc/bashrc /home/usuario /.bashrc /home/usuario /.bash_profile
18
Scripts Avanzados - Linux
18
Sistemas Operativos III
Diálogos en Linux
La programación en shell, que hemos visto permite una interacción básica con el usuario, a través del comando “read”. Sin embargo hay aplicaciones en donde las cuadros de dialogo (como por ejemplo, del tipo “Si” o “No”), facilitan la interacción con el usuario.
19
Herramientas
Xdialog y dialog son dos utilidades clásicas fáciles de usar que permiten mejorar tus scripts de shell con una interfaz de usuario gráfica. Instalación: En Fedora 3 (CD 2): rpm -Uvh dialog-version .i386.rpm
Scripts Avanzados - Linux
19
Sistemas Operativos III
Ejemplo 1:
dialog --title “Advertencia” --backtitle “Linux Script” --msgbox “Linux sin competencia” 9 40 Linux Script
Advertencia Linux sin competencia < OK >
20
Sintaxis de Dialog
La sintaxis para utilizar los diálogos es el siguiente: dialog --title {title} --backtitle {backtitle} {Box options}
En donde las opciones Box son: --yesno
{text} {height} {width}
--msgbox
{text} {height} {width}
--infobox
{text} {height} {width}
--inputbox
{text} {height} {width} [{init}]
--textbox
{file} {height} {width}
--menu {text} {menu} {height} {tag1} item1}...
Scripts Avanzados - Linux
{height}
{width}
20
Sistemas Operativos III
Ejemplo 2: dialog --title “Alerta” --backtitle “Linux Script” --yesno "\nDesea borrar el archivo?” 7 60 sel=$?
#asigna a sel el valor devuelto por dialog
case $sel in 0) echo “Se borra el archivo”;; 1) echo “No se borra el archivo”;; 255) echo “Cancelado, presionó la tecla [ESCAPE]”; esac
21
Scripts Avanzados - Linux
21
Sistemas Operativos III
Ejemplo 2: Linux Script
Alerta Desea borrar el archivo? < Yes >
< No >
Al escoger “Yes” el programa devuelve el valor de “0”. Al escoger “No” el programa devuelve el valor de “1”. Al presionar la tecla ESC el programa devuelve el valor de “255”. 22
Scripts Avanzados - Linux
22
Sistemas Operativos III
Ejemplo 3: dialog --title “Nombre del usuario" --backtitle "Linux Script“ --inputbox “Ingresa tu nombre:" 8 60 2>/tmp/input.$$ sel=$? na=`cat /tmp/input.$$` #muestra el resultado case $sel in #evalua la tecla presionada 0) echo "Hola $na" ;; 1) echo “Ha cancelado la operación" ;; 255) echo “Ha presionado la tecla [ESCAPE]" ;; esac rm -f /tmp/input.$$
#borra el archivo con el resultado 23
Scripts Avanzados - Linux
23
Sistemas Operativos III
Ejemplo 3: Linux Script
Nombre del usuario Ingresa tu nombre:
< OK >
< Cancel >
Al escoger “OK” el programa devuelve el valor de “0”. Al escoger “Cancel” el programa devuelve el valor de “1”. Al presionar la tecla ESC el programa devuelve el valor de “255”. 24
Scripts Avanzados - Linux
24
Sistemas Operativos III
Ejemplo 4: dialog --backtitle "Linux Script" --title "Menú Principal" --menu “Utilizar las flechas" 15 50 3\ Date/time “Muestra la fecha"\ Calendar “Muestra el calendario"\ Editor “Carga el editor vi" 2>/tmp/menuitem.$$ menuitem=`cat /tmp/menuitem.$$` #muestra la opción seleccionada opt=$? # asigna a menuitem el resultado case $menuitem in Date/time) date;; Calendar) cal;; Editor) vi;; esac 25
Scripts Avanzados - Linux
25
Sistemas Operativos III
Ejemplo 4: Linux Script
Menú Principal Utilizar las flechas Date/time
Muestra la fecha
Calendar
Muestra el calendario
Editor
Carga el editor vi
< OK >
< Cancel >
26
Se puede encontrar mayor información acerca de este programa en: # man dialog # dialog --help # dialog
Scripts Avanzados - Linux
26
Sistemas Operativos III
getopts demo05 while getopts x:y:z opt ; do case "$opt" in x) echo "$OPTARG";; y) echo "$OPTARG";; z) echo "$OPTARG";; esac done $ demo05 -x uno -y dos -z tres $ demo05 -y dos -z tres $ demo05 -y dos -x uno -z tres
27
Es un comando integrado a Bash. Es utilizado para verificar los argumentos enviados al script. Se utiliza acompañado con: while. Sintaxis: getopts {cadena_de_opciones} {opt} Evalúa cada uno de los argumentos indicados en “cadena_de_opciones” y el nombre del argumento es asignado a la variable “opt”. El valor del argumento es asignado a la variable: OPTARG.
Scripts Avanzados - Linux
27
Sistemas Operativos III
Enlaces
Los ficheros de inicio de bash: http://www.escomposlinux.org/lfs-es/blfs-es-5.0/postlfs/profile.html Ejemplo de un archivo bashrc: http://gugs.sindominio.net/repositorio/bashrc Programación en Bash y ejemplos: http://www.tldp.org/LDP/abs/html/index.html Uso de Getopts: http://blackshell.usebox.net/archivo/393.php http://www.mkssoftware.com/docs/man1/getopts.1.asp Sobre Dialog: http://hightek.org/dialog/ http://hightek.org/dialog/manual-0.7.html Sobre Xdialog: http://xdialog.dyns.net/ http://es.tldp.org/LinuxFocus/pub/mirror/LinuxFocus/Castellano/November20 02/article267.shtml
28
Scripts Avanzados - Linux
28
Sistemas Operativos III
Preguntas 1. ¿Qué comando permite extraer las ultimas líneas de un archivo? 2. ¿En que archivo debería el administrador incluir un script para que se cargue en el arranque del sistema? 3. ¿Qué archivo permite personalizar la pantalla de entrada al sistema?
29
Scripts Avanzados - Linux
29