script presentacion

43
ESCUELA POLITECNICA NACIONAL SITEMAS OPERATIVOS ING. ADRIAN ZAMBRANO 14-11-2012

Upload: vanne-napa

Post on 11-Jul-2015

1.083 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Script presentacion

ESCUELA POLITECNICA NACIONAL

SITEMAS OPERATIVOS

ING. ADRIAN ZAMBRANO

14-11-2012

Page 2: Script presentacion

SCRIPTS EN ubuNTu“Todo l o que ne c e s i tas sabe r ac e r ca de un Scr ip t s ”

GRUPO 2

Vanessa Estefania NapaRenato DiazPablo Medina

Page 3: Script presentacion

Haga clic para modificar el estilo de texto del patrón Segundo nivel Tercer nivel

Cuarto nivel Quinto nivel

Que es un Script?

Un script es un tipo de lenguaje informático interpretado, formado por lineas de texto ASCII, las cuales son ejecutadas de manera secuencial y ordenada por un programa padre, en este caso nuestro shell Bash.

Es un conjunto de comandos presentados de manera sencilla y de acceso rápido para el usuario.

‘Un script es el medio de comunicación entre el programador y el usuario’.

Page 4: Script presentacion

Dentro de la edición de un Script hay caracteres que cumplen una función predeterminada y especifica.

‘ ’ Comillas simples: Se las utiliza para indicar caracteres literales ‘a’.

“ ” Comillas dobles: Agrupa cadenas de caracteres “ Grupo 2 Script”

` ` Comillas invertidas: Hacen que su contenido sea evaluado y que su

resultado sea devuelto. Al tipear `date` en el script al momento que este

se haya ejecutado se enviará una respuesta con el la fecha actual.

Linea del script: `date`

Respuesta mostrada por el shell: sab nov 19 18:58:31 ECT 2012

# se lo utiliza para dejar comentarios o hacer una descripción dentro del script.

Page 5: Script presentacion

Pasos para la creación de un script

1. Decidir la función que el script va a efectuar

     2. Hacer una lista de comandos que se

introducirán en el Script.

     3. Crear un nuevo archivo para el script

 4. Identificar el shell que utilizará el script

     5. Agregar comandos y comentarios

     6. Guardar el archivo script

     7. Hacer ejecutable el archivo script

     8. Tipear el nombre del script para ejecutarlo

     9. Hacer debug y modificar el script si

tiene algún error.

Page 6: Script presentacion

Pasos para la creacion de un script

1. Decidir la función que el script va a efectuar

Este es uno de los pasos

más importantes ya que

antes de crear el cómo

tenemos que crear el que,

es decir la función que

cumplirá el programa a

desarrollar

Page 7: Script presentacion

Pasos para la creacion de un script

2. Hacer una lista de los comandos que se introduciran en el Script

El paso siguiente después de haber

imaginado el programa es pensar en los

comandos con los cuales desarrollaremos el

como.

Hay una serie de comandos que se utilizan en un

script .

A continuación les presentamos los más

representativos:

Page 8: Script presentacion

Pasos para la creacion de un script

2. Hacer una lista de los comandos que se introduciran en el Script

El paso siguiente después de haber

imaginado el programa es pensar en los

comandos con los cuales desarrollaremos el

como.

Hay una serie de comandos que se utilizan en un

script .

A continuación les presentamos los más

representativos:

Page 9: Script presentacion

Comando echoEs uno de los comandos mas utilizados dentro de un script de shell, su función es la de mostrar en pantalla una cadena de caracteres.

Su  sintaxis es: 

echo [opciones] [cadena]

OPCIONES:

    -n   Suprime el caracter de nueva linea final

    -e   Activa la interpretación de los caracteres alternativos

         listados debajo

    -E   Desactiva la interpretación de secuencias de cadena

  Sin -E, las siguientes secuencias con reconocidas

    \\     barra inversa

    \b     retorno

 \f     salto de página

 \n     nueva línea

    \r     retorno de carro

\t     tabulación horizontal

\v     tabulación vertical

Page 10: Script presentacion

Comando echo

EJEMPLO:

 1. Comando echo

     echo \"La vida es Bella\"

   El comando mostrará: ”La vida es Bella”

2. Para usar el retorno

     echo -e \"La vida es \bBella\"

     El comando eliminará el espacio y se mostrará:

     ”La vida esBella”

3. Para usar el espacio de tabulación en el comando echo

     echo -e \"La\tvida\tes\tBella\"

     El comando mostrará:

     ”La     vida     es     Bella”

Page 11: Script presentacion

Comando read

El comando read es de mucha ayuda dentro del desarrollo de scripts que necesiten que el usuario introduzca algún tipo de parámetro o dato.

Durante la ejecución de un script, si este encuentra una línea de comando que tenga el comando read seguido de un nombre de variable, dicha ejecución se detendrá y en pantalla se mostrará el cursor parpadeando en espera de que se introduzca el valor de la variable, este valor a continuación sera almacenado por la shell como el valor de la variable.

Page 12: Script presentacion

Comando read

EJEMPLO:

#!/bin/bash

#uso de read

echo "Cuál es tu nombre?"

read  nombre

echo "Hola $nombre“

En este ejemplo se puede observar que al pedir el ingreso de la edad utilizamos read edad. Hay que fijarse bien que para que el shell entienda la orden y pueda mostrar la edad ingresada con el comando echo es necesario preceder a la variable edad de un signo de dinero ($), de esta forma $edad. 

Page 13: Script presentacion

Pasos para la creación de un script

3. Crear un nuevo archivo para el script

Elegir un editor de texto para la creación de    este archivo.

Elegir un nombre para el script evitando   nombres como backup.sh son nombres que se deben

evitar ya que estos tienen funciones específicas

dentro del shell.           Los archivos script pueden ser guardados en el

directorio home del usuario, pero también se los

puede colocar en el directorio ~/bin que se

encuentra como subdirectorio de home.    .

Page 14: Script presentacion

Pasos para la creación de un script

4. Identificar el shell que utilizara el script

 El usuario debe introducir #!/bin/ksh o #!/bin/bash en la primera línea del script. Es importante empezar la primera línea con "#!" ya que así el script no lo reconocerá como

comando a ser ejecutado.

Page 15: Script presentacion

Pasos para la creación de un script

5. Agregar comandos y comentarios

6. Guardar el archivo script

EJEMPLO:  #!\bin\bash   #Código que muestra información importante del terminal   #Este comando nos mostrará el directorio actual de  trabajo   echo \"Directorio actual:\"   pwd   #Limpiamos la pantalla   clc   echo \"Usuario actualmente en el sistema:\"   who

Page 16: Script presentacion

Pasos para la creación de un script

7. Hacer ejecutable el archivo script

1er método

Asignando permisos mediante el comando chmod

cambiamos de 664 a ..

2do método

Tipear bash en el prompt antes del nombre del archivo

$ bash nombre_script.sh

Page 17: Script presentacion

Como hacer debugging de un script

Un problema común al escribir scripts de shell es que el shell no interpreta el comando de la manera en la cual lo espera el usuario. El alumno puede utilizar los comandos  ksh o  bash con las opciones -x (echo - eco) y -v (verbose - "elocuente") para ayudar a identificar en qué parte del script se encuentran los problemas.

Page 18: Script presentacion

VARIABLES EN LOS SCRIPTS Una variable es un placeholder (marcador de posición) para la

información requerida por los procesos para que puedan funcionar apropiadamente. Una variable tiene un nombre y guarda un valor. Cambiar el valor de una variable es configurarla. Existen dos tipos de variables utilizados en scripts de shell, las variables de shell y las variables del entorno.

Las variables de shell son mantenidas por el shell y sólo son conocidas para el shell actual. Estas variables son variables locales. Las variables del entorno son variables conocidas para el shell actual y todos los shells hijos o subshells. Algunos ejemplos de variables del entorno predefinidas son:

    * El shell de login (SHELL)

    * El nombre de login (LOGNAME)

 * La ruta de búsqueda que se utiliza para buscar comandos    (PATH)

    * Las configuraciones de terminal (TERM)

Page 19: Script presentacion

Las variables locales se configuran utilizando el formato VARIABLE=valor. Por ejemplo, BACKUPDIR =/home/user2/myfiles configura la variable denominada BACKUPDIR como igual al valor de /home/user2/myfiles. Los nombres de las variables van en mayúscula por convención pero también pueden ir en minúscula. Utilice el comando echo para mostrar el valor de una variable. La figura ilustra cómo configurar y mostrar la variable BACKUPDIR. El signo de dólar antes de un nombre de variable instruye al shell para que utilice el valor de la variable. De otro modo, echo BACKUPDIR, sin el signo de dólar daría como resultado la cadena de texto BACKUPDIR, como se ilustra en el ejemplo.

Haga clic para modificar el estilo de texto del patrón

Segundo nivel Tercer nivel

Cuarto nivel Quinto nivel

Page 20: Script presentacion

Las variables también pueden configurarse para que sean igual al resultado de un comando. Por ejemplo, DATE=`date` asignaría el valor de la fecha actual a la variable DATE. Cuando ha de mostrarse una variable, los acentos graves (`) indican al shell que utilice la fecha actual en lugar de la palabra "date". Los acentos graves y otros caracteres de encomillado se trataron anteriormente en este capítulo.

La ventaja de una variable es que una vez configurada puede hacerse referencia a ella muchas veces a lo largo de un script. Si el valor de la variable se cambia entonces todas las veces que se hace referencia a ella se utilizará el nuevo valor y no hacen falta otras modificaciones.

Page 21: Script presentacion

Comandos condicionales LOS OPERADORES DISPONIBLES PARA SENTENCIAS

CONDICIONALES Y SUS SIGNIFICADOS

Operador Significado Equivalente Matematico

-eq Es igual a x == y-ge Mayor o igual

quex >= y

-gt Mayor que x > y-le Menor o igual

quex <= y

-lt Menor que x < y-ne No es igual a x != y

Page 22: Script presentacion

comandos condicionales Los comandos que llevan a cabo ciertas tareas basadas en si una condición tiene

éxito o falla se denominan comandos condicionales. Los tres comandos condicionales utilizados más frecuentemente son if, test, y case.

COMANDO if

La forma más simple de un comando condicional es el comando if.

El comando if es un comando de shell incorporado que permite probar una condición y luego cambiar el flujo de la ejecución de un script de shell basándose en el resultado de la prueba.

Existen tres formatos del comando if. El comando fi (if invertido) se coloca siempre al final de un condicional if.

El Formato del Comando if-then (si-entonces): if el comando tiene éxito

then 

ejecutar el/los comando(s)

fi

Page 23: Script presentacion

EJEMPLO

#!/bin/bash

x=3 y=9 if [ $x -lt $y ]   then      echo "x=$x es menor que y=$y" fi

 x=3 es menor que y=9

El Formato del Comando if-then-else (si-entonces-de lo contrario):

if el comando tiene éxitothenejecutar el/los comando(s)elseejecutar el/los comando(s)fi

Page 24: Script presentacion

EJEMPLO (Calculadora Básica)

#!/bin/bashecho "Ingrese el primer numero"read xecho "Ingrese el segundo numero"read yecho "¿Que operacion matematica desea hacer?" echo "1. Suma"echo "2. Resta"echo "3. Multiplicación"echo "Escoja una opción [1,2 or 3]? "read oper

if [ $oper -eq 1 ]then

echo "La suma es: " $(($x + $y))else

if [ $oper -eq 2 ]thenecho "La resta es: " $(($x - $y))elseif [ $oper -eq 3 ]thenecho "La multiplicacion es: " $(($x * $y))elseecho "Invalido argumento"fifi

fi

Page 25: Script presentacion

El Formato del Comando if-then-elif (else if)(si-entonces-de lo contrario si):if el comando tiene éxitothenejecutar el/los comando(s)

elif el comando tiene éxito then ejecutar el/los comando(s)

else ejecutar el/los comando(s)

fi

Page 26: Script presentacion

EJEMPLO(Comparar dos numeros)

#!/bin/bashecho " Digite el primer número"read primeroecho "Digite el segundo número"read segundo

if [ $primero -eq 0 ] && [ $segundo -eq 0 ]then

echo "Num1 y Num2 son cero"elif [ $primero -eq $segundo ]then

echo "Ambos numeros son iguales"elif [ $primero -gt $segundo ]then

echo "$primero es mayor que el $segundo"else

echo "$primero es menor que el $segundo"fi

Page 27: Script presentacion

EJEMPLO (Montar una particion)

#!/bin/bashecho "¿Desea montar una particion?. ¿S/n?"read xif [ $x = S ]thenecho "Es necesario instalar el programa pysdm.¿desea instalarlo?.¿S/n? "read y

if [ $y = S ]thensudo apt-get install pysdmecho "Elprograma pysdm esta a punto de iniciar.."sleep 3echo "Utilice el entorno grafico para montar la particion"sudo pysdmecho "Saliendo del programa.."sleep 3

echo "¿Desea reiniciar el sistema?. ¿S/n?"read zif [ $z = S ]thenrebootelse clearexitfi

else exitfi

else exitfi

Page 28: Script presentacion

Comando test

El comando condicional incorporado al shell test se utiliza a menudo para probar una o más condiciones que siguen al comando if.

El comando test evalúa una expresión, y si el resultado es verdadero, devuelve un estado de salida de cero. De otro modo el resultado es falso, y devuelve un estado de salida que no es cero.

La expresión compara normalmente dos números o dos cadenas para comprobar si los valores son idénticos. La expresión se utiliza también para probar el estado de un archivo.

Formato del Comando:

if test expresión o if [expresión]

then

ejecutar comando(s)

fi

Page 29: Script presentacion

En el ejemplo que figura a continuación, test evalúa la variable $answer para determinar si el usuario respondió "y" (de "yes" - sí) a la pregunta ( "¿Despejar la pantalla antes de mostrar el listado de archivos?"). De ser verdadera, se despeja la pantalla y se muestra el contenido del directorio actual. De ser falsa, se muestra el contenido del directorio actual pero no se despeja antes la pantalla.#!/bin/ksh 

echo "¿Despejar la pantalla antes de mostrar el listado de archivos?").  

echo " enter y for Yes or n for No:\c" 

read answer 

if test "$answer" = y 

then 

       clear;ls 

else 

       ls 

fi

El comando test se utiliza tan a menudo en los scripts de shell que los corchetes ([ ]) pueden utilizarse como alternativa a tipear "test". Por ejemplo, la línea de más arriba "if test "$answer" = y" también podría escribirse así: if [ $answer = y ].

Nota: el signo != (no igual) puede utilizarse para probar si una cadena no es igual a otra.

Page 30: Script presentacion

Comando case Una forma de realizar la misma acción sin escribir tantas lineas de condicionales elif y con ello disminuir el tamaño del guión

es la utilización de la sentencia case-in-esac. Esta sentencia permite vincular patrones de texto con conjuntos de comandos; cuando la variable de la sentencia coincide con alguno de los patrones, se ejecuta el conjunto de comandos asociados. La sintaxis de la sentencia case-in esac es como sigue.

Formato del Comando:

case valor de la variable in

value1 )

       Comando

       Comando

       ;;

value2 )

       Comando

       Comando

       ;;

*)

       Comando

       ;; esac

Page 31: Script presentacion

El valor de una variable de case se compara con value1, value2, etcétera, hasta hallar una coincidencia.

Cuando un valor coincide con la variable de case, los comandos que siguen a ese valor se ejecutan hasta llegar a los punto y coma dobles (;;). Luego el control se dirige a toda la línea directamente después del enunciado esac.

Si el valor de una variable de case no coincide, el programa ejecuta los comandos después del valor por defecto *) hasta que se llega a los punto y coma dobles o hasta esac.

EJEMPLO

#!/bin/bashecho "Diga si o no:"read VAR case "$VAR" insi) echo "Escribiste -si-"

;;no) echo "Escribiste -no-"

;;*) echo "Lo que escribió no se acepta"

;;esac

Observe que el carácter (*) utilizado en la última opción significa "patrón no contemplado" en este caso.

Page 32: Script presentacion

El valor de una variable de case se compara con value1, value2, etcétera, hasta hallar una coincidencia.

Cuando un valor coincide con la variable de case, los comandos que siguen a ese valor se ejecutan hasta llegar a los punto y coma dobles (;;). Luego el control se dirige a toda la línea directamente después del enunciado esac.

Si el valor de una variable de case no coincide, el programa ejecuta los comandos después del valor por defecto *) hasta que se llega a los punto y coma dobles o hasta esac.

EJEMPLO

#!/bin/bashecho "Diga si o no:"read VAR case "$VAR" insi) echo "Escribiste -si-"

;;no) echo "Escribiste -no-"

;;*) echo "Lo que escribió no se acepta"

;;esac

Observe que el carácter (*) utilizado en la última opción significa "patrón no contemplado" en este caso.

Page 33: Script presentacion

BUCLES

Se puede utilizar bucles para controlar el flujo de ejecución de un script. Un bucle repite una secuencia de instrucciones hasta satisfacer una condición predeterminada.

A menudo un script tiene que ver con llevar a cabo la misma operación o conjunto de operaciones de cada archivo en un directorio o lista, cada línea de un archivo, o cada palabra de una línea.

El shell proporciona tres construcciones de bucle para lograr este tipo de acción: el bucle for, el bucle while y el bucle until.

Page 34: Script presentacion

EL BUCLE FOR

El bucle for ejecuta una lista de comandos una vez para cada valor de variable de bucle.

Formato del Comando:

for variable in

list

do

Comandos

Done

El valor de la variable se cambia con cada pasada a través del bucle al siguiente valor en list. Cada vez que un valor es asignado, los comandos se ejecutan en el cuerpo del bucle. Cuando ya no quedan más valores en list, el bucle se termina.

Page 35: Script presentacion

EL BUCLE WHILE

El bucle while ejecuta repetidamente un grupo de comandos dentro del cuerpo de un bucle hasta que la condición de prueba de la expresión se hace falsa. En otras palabras, mientras la expresión sea verdadera, ejecuta estos comandos.

Formato del Comando:

while condición

do

Comandos

done

Page 36: Script presentacion

EL BUCLE UNTIL

El bucle until es muy similar al bucle while pero ejecuta una serie de comandos mientras un comando continúe fallando (estado de salida no-cero). Cuando el comando finalmente se ejecuta con éxito, el bucle se termina y la ejecución pasa al primer enunciado que sigue a la construcción done. La condición until se verifica en la parte superior del bucle, no en la inferior.

Formato del Comando:

until condición

do

Comandos

done

Page 37: Script presentacion

Script1: Factorial de un número ingresado por el usuario .

#!/bin/bash

echo "ingrese el numéro para hallar su factorial" read num n=$num fact=1

for (( i=1; i<=n; i++ )) do

fact=`expr $fact \* $i`

done echo "el factorial de $num es: $fact "

Page 38: Script presentacion

Script2: Verifica si un usuario está loggeado.

#!/bin/bash

echo "Ingrese l nombre de un usuario: " read name

while who | grep $name do echo "$name está loggeado" sleep 5 exit done echo "$name no está loggeado"

Page 39: Script presentacion

Script3: Indica si un usuario está loggeado .

#!bin/bash echo "ingrese un usuario" read user until who | grep $user do echo "el $user no esta loggeado" sleep 5 done echo "el $user esta loggeado"

Page 40: Script presentacion

Script4: ver que número es mayor, menor o igual.Script.sh num1 num2(asi se ejecuta el script).

#!/bin/bash if [ $2 -gt $3 ] then echo "$2 es mayor" elif [ $2 -eq $3 ] then echo "$2 = $3" else echo "$3 es mayor" fi

Page 41: Script presentacion

● #!/bin/bash● clear ● cd● pwd● echo "ingrese el path absoluto de la carpeta con el contenido que desea que se

respalde"● read path● while [ ! -d $path ]● do● clear● echo "$path no existe"● echo "ingrese el path absoluto de la carpeta con el contenido que desea que se

respalde una vez por semana"● read path● done●

Script5: Permite crear respaldos de un carpeta deseada en un dirección ingreseda por el usuario.

Page 42: Script presentacion

clear echo "ingrese el nombre de la carpeta donde se guardarán los resplados" read name echo "ingrese el path absoluto en donde quiere que se cree la carpeta respaldos" read ruta while [ ! -d $ruta ] do clear echo "$ruta no es válido" echo "ingrese el path absoluto en donde quiere que se cree la carpeta $name" read ruta done

Page 43: Script presentacion

● mkdir $ruta/$name● echo "ingrese el nombre del fichero donde se

almacenarán y del cual se realizará un compresión"● read fichero

● tar -cvf $ruta/$name/$fichero.tar $path/*● sudo apt-get install ncompress● compress -v $ruta/$fichero.tar $ruta/$name/$fichero.Z

● clear● echo "Se han creado los respaldos de $path"