SO3 - 11 Linux Scripts Avanzados.pdf

  • Upload
    hgcu

  • View
    139

  • Download
    3

Embed Size (px)

Citation preview

  • Sistemas Operativos III

    Scripts Avanzados - Linux 1

    Unidad 11Scripts Avanzados

    Copyright 2007 por TECSUP

    Redes y Comunicaciones de Datos

  • Sistemas Operativos III

    Scripts Avanzados - Linux 2

    2

    Introduccin

    Se pueden desarrollar scripts ms potentes utilizando una serie de herramientas que permiten manipular la informacin mostrada en pantalla.

    Adems existen ciertos scripts que se ejecutan en el arranque del sistema o al inicio de una sesin y que pueden ser de utilidad para programar la ejecucin de una determinada tarea.

    En esta unidad trataremos sobre las herramientas de programacin que se pueden usar para manipular la informacin, los scripts de arranque e inicio, as como el uso de cuadros de dilogo para mejorar la interaccin con el usuario.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 3

    3

    Objetivos Utilizar herramientas de programacin para desarrollar

    scripts mas complejos.

    Identificar los scripts de arranque y de inicio.

    Utilizar cuadros de dialogo para mejorar la apariencia de los scripts.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 4

    4

    Contenido

    Herramientas de programacin.

    Secuencia de ejecucin. Script de arranque. Script de inicio.

    Cuadros de Dilogo.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 5

    Herramientas de Programacin

    Redes y Comunicaciones

  • Sistemas Operativos III

    Scripts Avanzados - Linux 6

    6

    Herramientas de Programacin

    Se puede utilizar una serie de comandos, para darle tratamiento a la informacin obtenida de los archivos o de la salida de un comando. Entre ellos tenemos: grep (ya visto anteriormente) cut head tail sort

  • Sistemas Operativos III

    Scripts Avanzados - Linux 7

    7

    Comando cut

    Permite extraer varios campos de datos de un archivo o de la salida de un comando

    Donde chars especifica el nmero de caracteres a extraer de cada lnea -c5 Extrae el carcter 5 -c20-50 Extrae del carcter 20 al 50 -c5- Extrae del carcter 5 hasta el final

    Ej.$ w | cut -c1-8

    4:58pmUSER

    $cut -cchars file

    Opciones -d y -fSe utilizan cuando los datos estn delimitados por un carcter en particular.

    Donde dchars es el carcter que delimita cada campo y fieldsespecifica el numero de campo a ser extrado.Ej.

    $cut -d: -f1 /etc/passwd$cut -d: -f1,5 /etc/passwd$cut -f1 phonebook (toma el tab como delimitador por defecto)

  • Sistemas Operativos III

    Scripts Avanzados - Linux 8

    8

    Ejemplo de cut $ cat passwd

    hernan:x:654:100::/home/hernan:/bin/bashcarlos:x:655:100::/home/carlos:/bin/bashfernando:x:656:100::/home/fernando:/bin/bashleonardo:x:657:100::/home/leonardo:/bin/bash

    $ cut -d: -f1 passwdhernancarlosfernandoleonardo

  • Sistemas Operativos III

    Scripts Avanzados - Linux 9

    9

    Comando sort

    Ordena las lneas de un archivo

    La opcin -u elimina lneas duplicadas La opcin -r ordena en forma descendente La opcin -o especifica el archivo de salida

    $sort file

  • Sistemas Operativos III

    Scripts Avanzados - Linux 10

    10

    Comando head

    Permite extraer las primeras lneas de un texto

    $ w5:08pm up 43 days, 4:34, 2 users, load average: 0.00, 0.00, 0.00

    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 - 9Aug 1 15days 1.15s 0.93s -bashuser0 pts/0 216.244.185.2 4:14pm 0.00s 1.39s 0.09s w

    $ w | head -15:08pm up 43 days, 4:34, 2 users, load average: 0.00, 0.00, 0.00

  • Sistemas Operativos III

    Scripts Avanzados - Linux 11

    11

    Comando tail

    Permite extrae las ultimas lneas de un texto

    $ freetotal used free shared buffers cached

    Mem: 79348 66128 13220 5240 38452 13752-/+ buffers/cache: 13924 65424Swap: 130656 2228 128428

    $ free | tail -1Swap: 130656 2228 128428

    El comando tail con el parametro f ademas nos permite ver en tiempo real

    la variacin del contenido de archivos como por ejemplo los de log.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 12

    12

    Secuencia de Ejecucin 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.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 13

    13

    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 mximos privilegios (privilegios de root).

    No es necesario que entre ningn usuario al sistema para ejecutarse y se ejecutan una nica vez al arrancar el sistema.

    Se indican los archivos de arranque por orden de ejecucin:/etc/rc.d/rc.sysinit/etc/rc.d/rc /etc/rc.d/rc.local

    El administrador del sistema slo debera modificar el archivo/etc/rc.d/rc.local

  • Sistemas Operativos III

    Scripts Avanzados - Linux 14

    14

    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.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 15

    15

    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.

    .bash_profileEs el ms importante de los tres. Es ledo y los comandos incluidos en l, ejecutados, cada vez que el usuario entra en el sistema. Cualquier cambio hecho en este archivo no tendrefecto hasta que salgamos y entremos en el sistema de nuevo. Contiene variables de entorno personales y programas de inicio.

    .bashrcEs ledo cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la lnea de comandos. Contiene alias personales y funciones.

    bash_logoutEs el archivo ledo por bash, cuando salimos del sistema. Podemos definir, por ejemplo que se borren los archivos temporales creados en nuestra ultima sesin o registrar el tiempo que hemos estado utilizando el sistema. Si .bash_logout no existe, ningn comando ser ejecutado a nuestra salida.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 16

    16

    /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 informacin sobre el sistema.

    Todos los cdigos 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 lnea tty actual.m Inserta el identificador de la arquitectura de la mquina, i486 por ejemplo.n Inserta el nombre de nodo de la mquina, tambin conocido como nombre de mquina (hostname).r Inserta la versin del ncleo, por ejemplo 2.4.16. t Inserta la hora actual, etc

  • Sistemas Operativos III

    Scripts Avanzados - Linux 17

    17

    /etc/motd

    El archivo /etc/motd, messages of to day (mensaje del da) es un archivo de texto que se muestra a todos los usuarios que inicien sesin ese da. Tradicionalmente, es usado por los Administradores de Sistemas como una especie de Boletn para comunicacin con los usuarios.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 18

    18

    Secuencia de Inicio

    /etc/issue

    /etc/motd

    /etc/profile

    /etc/bashrc

    /home/usuario/.bashrc

    /home/usuario/.bash_profile

    Mensaje antes del login

    Mensaje despus del login

  • Sistemas Operativos III

    Scripts Avanzados - Linux 19

    19

    Dilogos en Linux

    La programacin en shell, que hemos visto permite una interaccin bsica con el usuario, a travs del comando read.

    Sin embargo hay aplicaciones en donde las cuadros de dialogo (como por ejemplo, del tipo Si o No), facilitan la interaccin con el usuario.

    HerramientasXdialog y dialog son dos utilidades clsicas fciles de usar que permiten mejorar tus scripts de shell con una interfaz de usuario grfica. Instalacin: En Fedora 3 (CD 2):

    rpm -Uvh dialog-version.i386.rpm

  • Sistemas Operativos III

    Scripts Avanzados - Linux 20

    20

    Ejemplo 1: dialog --title Advertencia --backtitle Linux Script

    --msgbox Linux sin competencia 9 40

    < OK >

    Linux sin competencia

    Advertencia

    Linux Script

    Sintaxis de DialogLa sintaxis para utilizar los dilogos 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} {height} {width} {menu} {height} {tag1} item1}...

  • Sistemas Operativos III

    Scripts Avanzados - Linux 21

    21

    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 in0) echo Se borra el archivo;;1) echo No se borra el archivo;;255) echo Cancelado, presion la tecla [ESCAPE];

    esac

  • Sistemas Operativos III

    Scripts Avanzados - Linux 22

    22

    Ejemplo 2:

    < Yes >

    Desea borrar el archivo?

    Alerta

    Linux Script

    < 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.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 23

    23

    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 operacin" ;;255) echo Ha presionado la tecla [ESCAPE]" ;;

    esac

    rm -f /tmp/input.$$ #borra el archivo con el resultado

  • Sistemas Operativos III

    Scripts Avanzados - Linux 24

    24

    Ejemplo 3:

    < OK >

    Ingresa tu nombre:Nombre del usuario

    Linux Script

    < 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.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 25

    25

    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 opcin seleccionadaopt=$? # asigna a menuitem el resultadocase $menuitem in

    Date/time) date;;Calendar) cal;;Editor) vi;;

    esac

  • Sistemas Operativos III

    Scripts Avanzados - Linux 26

    26

    Ejemplo 4:

    < OK >

    Utilizar las flechas

    Men Principal

    Linux Script

    < Cancel >

    Date/timeCalendarEditor

    Muestra la fechaMuestra el calendarioCarga el editor vi

    Se puede encontrar mayor informacin acerca de este programa en:# man dialog# dialog --help# dialog

  • Sistemas Operativos III

    Scripts Avanzados - Linux 27

    27

    getopts

    while getopts x:y:z opt ; docase "$opt" in

    x) echo "$OPTARG";;y) echo "$OPTARG";;z) echo "$OPTARG";;

    esacdone

    $ demo05 -x uno -y dos -z tres

    demo05

    $ demo05 -y dos -z tres $ demo05 -y dos -x uno -z tres

    Es un comando integrado a Bash.

    Es utilizado para verificar los argumentos enviados al script.

    Se utiliza acompaado con: while.

    Sintaxis:

    getopts {cadena_de_opciones} {opt}

    Evala 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.

  • Sistemas Operativos III

    Scripts Avanzados - Linux 28

    28

    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

    Programacin 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

  • Sistemas Operativos III

    Scripts Avanzados - Linux 29

    29

    Preguntas

    1. Qu comando permite extraer las ultimas lneas de un archivo?

    2. En que archivo debera el administrador incluir un scriptpara que se cargue en el arranque del sistema?

    3. Qu archivo permite personalizar la pantalla de entrada al sistema?

  • Sistemas Operativos III

    Scripts Avanzados - Linux 30

    30

    Respuestas

    1. tail.2. /etc/rc.d/rc.local.3. /etc/issue.