Buscar en este blog

jueves, 4 de octubre de 2012

SCRIPTS BAJO LA SHELL DE LINUX!

 


UN SCRIPT ES UNA SERIE DE ORDENES QUE SERÁN EJECUTADAS SECUENCIALMENTE POR UN PROGRAMA INTÉRPRETE QUE SE ALMACENA EN UN ARCHIVO DE TEXTO PLANO Y CUYO USO FUNDAMENTAL RESULTA A LA HORA DE TENER QUE REALIZAR DIVERSAS TAREAS COMO SER LA COMBINACIÓN DE COMPONENTES, LA INTERACCIÓN CON EL USUARIO O CON EL SISTEMA OPERATIVO  EN CUESTIÓN. FACILITA LA AUTOMATIZACIÓN DE TAREAS A TRAVÉS DE LA CREACIÓN DE PEQUEÑAS UTILIDADES. SE LO EMPLEA MAYORMENTE A INSTANCIAS DE LA ADMINISTRACIÓN DE SISTEMAS UNIX.

 LOS SCRIPT CASI SIEMPRE SON ARCHIVOS INTERPRETADOS, ES DECIR, ES CAPAZ DE ANALIZAR Y EJECUTAR  OTROS PROGRAMAS QUE SE ENCUENTREN ESCRITOS EN UN LENGUAJE DE ALTO NIVEL.

COMO SE HACE UN SCRIPT

 COMO YA SABEMOS UN SCRIPT ES UN ARCHIVO SENCILLO QUE PODEMOS CREAR EN UN SIMPLE  BLOC DE NOTAS Y DENTRO DE EL ESCRIBIR COMANDOS QUE  SERAN INTERPRETADOS AL EJECUTARSE EL ARCHIVO.UNA VEZ CREADO LO MODIFICAMOS CON UN EDITOR DE TEXTO.

DENTRO DE EL:


 #! /BIN/BASH
 #SCRIPT  DE FUNCIONES MATEMATICAS BASICAS: CALCULADORA


 - LAS LÍNEAS QUE EMPIEZAN POR "#" SON COMENTARIOS QUE PERMITEN SABER QUE HACE EL SCRIPT.

- LA PRIMERA LÍNEA  #! /BIN/BASH ASEGURA QUE SE INTERPRETA COMO
  UN SCRIPT DE BASH, AUNQUE SE EJECUTE DESDE OTRO SHELL.

-AHORA YA SE COPIA EL CODIGO DEL SCRIPT QUE SE DESEE CREAR, A CONTINUACIÓN MOSTRAREMOS EJEMPLOS DE SCRIPTS.


PERMISOS NECESARIOS PARA EJECUTAR UN SCRIPT

 UNA VEZ CREADO EL SCRIPT ES NECESARIO DARLE PERMISOS PARA QUE SE PUEDA EJECUTAR, PODEMOS UTILIZAR CUALQUIERA DE LOS SIGUIENTES COMANDOS:

-CHMOD +X "NOMBRE DEL SCRIPT".
-CHMOD 755 "NOMBRE DEL SCRIPT".
-CHMOD UGO + X "NOMBRE DEL SCRIPT".
  
TENER EN CUENTA DIRECCION ABSOLUTA O RELATIVA DEL SCRIPT.

EJECUTAR UN SCRIPT

PUEDO UTILIZAR CUALQUIERA DE LAS SIGUIENTES  SINTAXIS  PARA EJECUTARLO:

- $BASH "NOMBRE DEL SCRIPT"
- $SH "NOMBRE DEL SCRIPT"
- ./   "NOMBRE DEL SCRIPT"   (EL "./" SIGNIFICA "DEL DIRECTORIO ACTUAL")



"SE PUEDE DETENER LA EJECUCIÓN DE CUALQUIERA DE ELLOS, MATANDO MANUALMENTE EL PROCESO WSCRIPT.EXE EN EL ADMINISTRADOR DE TAREAS, NO OBSTANTE EN ALGUNOS CASOS PUEDE HACERSE MUY DIFÍCIL"

SCRIPT CON VARIABLES

UNA VARIABLE ES UNA ASIGNACIÓN EN MEMORIA DONDE PODEMOS GUARDAR   Y REESCRIBIR CUALQUIER TIPO DE DATO.HAY VARIABLES DEFINIDAS POR EL PROGRAMADOR Y OTRAS QUE, POR SER DE USO MUY COMÚN, YA ESTÁN DEFINIDAS EN EL SISTEMA.
PARA RETORNAR SU VALOR NECESITAMOS ANTEPONER EL SIGNO $.
NO SE DEBE USAR CARACTERES ESPECIALES COMO ¿,*, ETC.


-LAS VARIABLES SE DEFINEN ASÍ:
SYNTAX: VARIABLE NAME=VALUE



-NO ES NECESARIO DECLARAR LAS VARIABLES DEL SISTEMA, TAMBIÉN LLAMADAS VARIABLES DE ENTORNO.
ALGUNAS DE ELLAS SON:BASH, PWD, USER, UID

 

USO DE COMILLAS

COMILLAS DOBLES: "SE USAN PARA CADENA DE TEXTO"

COMILLA INCLINADA: `PERMITEN EJECUTAR EL CONTENIDO Y QUE SU RESULTADO SEA DEVUELTO`.

COMILLA SIMPLE: 'PERMITE INGNORAR LO QUE ESTÉ DENTRO, DEPENDE DEL CONTEXTO PUEDE EJECUTAR COMANDOS'.



EXPRESIONES  CONDICIONALES

 SENTENCIA IF

 SENTENCIA CONDICIONAL IF SE UTILIZA PARA EJECUTAR UNAS U OTRAS INSTRUCCIONES, DEPENDIENDO DE UNA CONDICIÓN.SU SINTAXIS ES:

IF [CONDICIÓN ES VERDADERA]
THEN
HACER INSTRUCCIONES
ELSE
HACER OTRAS INSTRUCCIONES
FI
 

 

EXPRESIONES PARA LOS CONDICIONALES

 COMPARACIONES ARITMETICAS:

-LT      <
-GT     >
-LE     <=
-GE     >=
-EQ     ==
-NE     !=

 

COMPARACIONES DE ARCHIVOS



 -E   VERIFICA SI EL ARCHIVO EXISTE
 -D   VERIFICA SI EL DIRECTORIO EXISTE



 SENTENCIA FOR

ESTE COMANDO IMPLEMENTA UNA ESTRUCTURA REPETITIVA, EN LA CUAL UNA SECUENCIA DE COMANDOS SE EJECUTA UNA Y OTRA VEZ. SU SINTAXIS ES:


FOR VARIABLES IN {INICIO FIN INCREMENTO}

DO

INSTRUCCION1

INSTRUCCION2

DONE


ALGUNOS EJEMPLOS:

1. CREE UN SCRIPT QUE SEA INTERPRETADO POR BASH, QUE AL EJECUTARSE BUSQUE ENTRE SUS DIRECTORIOS, TODOS LOS ARCHIVOS, ORDENE LOS NOMBRES ALFABÉTICAMENTE Y LE CREE UN ARCHIVO DE TEXTO CON ESTA INFORMACIÓN:





 LO QUE HACE CADA LINEA DEL SCRIPT ES:

 -CON READ -P  LEE LAS LINEAS EN LAS QUE SE LE HACE LA SOLICITUD DE INGRESAR UNOS NOMBRES Y  LEE LA RESPUESTA DEL USUARIO Y LA GUARDA COMO LA VARIABLE QUE EN ESTE CASO ES "NOMBRECARPETA".

-CON MKDIR  CREO  DIRECTORIOS Y EL NOMBRE DE ESTE SERA EL INGRESADO EN NOMBRECARPETA.

-CON EL COMANDO CD VAMOS AL LUGAR DONDE ESTAMOS ESPECIFICANDO CON LA VARIABLE.

-CON TOUCH CREO UN ARCHIVO CUYO NOMBRE SERA EL DEFINIDO EN LA VARIABLE "NAMEARCHIVO".

-CON CD/HOME ME PARO EN EL HOME, CON PWD MIRO DONDE ESTOY PARADA.

-CON LS -R   ME ESTA LISTANDO LOS SUBDIRECTORIOS EN ORDEN ALFABETICO.

-CON LS -R >> $NOMBRECARPETA/$NAMEARCHIVO ME REDIRECCIONA EL RESULTADO DE ESE COMANDO AL LUGAR ESPECIFICADO EN LAS VARIABLES.



2. ESCRIBA UN SCRIPT QUE CREE SIN INTERVENCIÓN DEL EJECUTANTE 50 USUARIOS: USER1, USER2, USER3….USER50. A CADA UNO LE DEBE CREAR  UNA CARPETA LLAMADA TAREAS, CON UN ARCHIVO DENTRO LLAMADO  LISTADO. CREE TAMBIÉN UN SCRIPT QUE ELIMINE TODO LO CREADO POR  EL ANTERIOR SCRIPT.


FOR X IN {1..50..1}: INICIAL EL BUCLE FOR DE 1 HASTA 50, EN ESTE CASO  CREARA LA CANTIDAD DE USUARIOS ESPECIFICADOS EN EL CICLO.

DO: HACE REFERENCIA A QUE SE EJECUTA EL CUERPO DEL BUCLE CUMPLIENDO LA CONDICION.
ECHO "CREANDO USUARIO USER$X": INDICA QUE AL MOMENTO DE  CREAR EL USUARIO APARECERA UN MENSAJE ANUNCIANDO QUE SE ESTA CREANDO UN USUARIO.
USERADD -M USER$X : PERMITE CREAR UN USUARIO CON EL COMANDO USERADD Y LA VARIABLE USER$X.
ECHO "CREANDO DIRECTORIO DE  USER$X":INDICA QUE AL MOMENTO DE  CREAR EL USUARIO APARECERA UN MENSAJE ANUNCIANDO QUE SE ESTA CREANDO SU DIRECTORIO.
MKDIR /HOME/USER$X/TAREAS :CREA UN DIRECTORIO LLAMADO TAREA PARA CADA USUARIO EN SU DIRECTORIO PERSONAL.
ECHO "CREANDO ARCHIVO DE  USER$X": INDICA QUE AL MOMENTO DE  CREAR EL USUARIO APARECERA UN MENSAJE ANUNCIANDO QUE SE ESTA CREANDO SU RESPECTIVO ARCHIVO.
TOUCH /HOME/USER$X/TAREAS/LISTADO:CREA UN ARCHIVO LLAMADO LISTADO PARA CADA USUARIO DENTRO DEL DIRECTORIO TAREA.
DONE : LE INDICA EL SCRIPT QUE DEJE DE EJECUTARSE DEBIDO A QUE LA CONDICION YA SE CUMPLIO CERRANDOSE ASI EL CICLO.



COMPROBAMOS QUE SE HAYAN CREADO LOS USUARIOS LISTANDO EL CONTENIDO DE HOME:


AHORA PARA BORRAR LOS 50 USUARIOS TAMBIEN EMPLEAMOS UN SCRIPT:



FOR X IN {1..50..1}: INICIAL EL BUCLE FOR DE 1 HASTA 50, EN ESTE CASO  CREARA LA CANTIDAD DE USUARIOS ESPECIFICADOS EN EL CICLO.

DO: HACE REFERENCIA A QUE SE EJECUTA EL CUERPO DEL BUCLE CUMPLIENDO LA CONDICION.
ECHO "BORRANDO  USUARIO USER$X": INDICA QUE AL MOMENTO DE  IR BORRANDO LOS  USUARIOS APARECERA UN MENSAJE ANUNCIANDO QUE SE ESTA BOTTANDO   UN USUARIO, EL DETERMINADO  POR LA VARIABLE $X.
 USERDEL -F -R USER$X. COMANDO  QUE PERMITE ELIMINAR LOS USUARIOS A MEDIDA QUE VA REDUCIENDO EL VALOR DE LA VARIABLE.

DONE : LE INDICA EL SCRIPT QUE DEJE DE EJECUTARSE DEBIDO A QUE LA CONDICION YA SE CUMPLIO CERRANDOSE ASI EL CICLO.




3. HAGA UN SCRIPT QUE DESPUÉS DE EJECUTARSE PIDA AL USUARIO 2 NÚMEROS Y DESPUÉS PRESENTE LA SUMA, LA RESTA, EL PRODUCTO Y LA DIVISIÓN.



#!/BIN/BASH: COMENTARIO QUE SE USA PARA INDICAR QUE SE ESTÁ TRABAJANDO CON EL BIN DEL SHELL DE LINUX

ECHO: SE USA PARA INDICAR  QUE MUESTRE LO QUE SE ENCUENTRA ENTRE COMILLAS DOBLES.

READ: LEE LOS DATOS QUE EL USUARIO HAYA INGRESADO

ECHO “SUMA = $(($NUM1+$NUM2))” :INDICA QUE MUESTRE LA SUMA DE LOS NÚMEROS INGRESADOS POR EL USUARIO, PERO QUE NO MUESTRE EL PROCESO PARA ELLO SE USA EL SIGNO $, Y LOS DOBLES PARÉNTESIS ES PARA QUE NO IMPORTE SI EL LA VARIABLE ESTA REPETIDA.IGUAL SE ALICA PARA EL RESTO DE OPERACIONES. 

4. CREE UN SCRIPT QUE MUESTRE UN MENSAJE CADA HORA EN TODAS  LAS TERMINALES O CONSOLAS QUE SE TENGAN ABIERTAS EN EL EQUIPO. EL MENSAJE DEBE DECIR : «ABSTÉNGASE DE HACER MAL USO DE LOS RECURSOS, ESTÁ SIENDO OBSERVADO».


 TODO LO QUE ESTA EN # SON COMENTARIOS PARA DAR UNA IDEA DE LO QUE ES EL SCRIPT Y  DONDE SE ENCUENTRA EL INTERPRETE DE COMANDO DE NUESTRO SISTEMA.

 CLEAR:PERMITE LIMPIAR LA PANTALLA DE LA TERMINAL.
I="0": INICIALIZACION DEL CICLO WHILE, PERMITE QUE EJECUTE  UN CICLO EN UN TIEMPO DETERMINADO MIENTRAS LA CONDICION ES VERDADERA.
WHILE [ $I -LT 4]: EL CICLO WHILE UTILIZA LA CONDICION DE TERMINACION DE UN CIMANDO PARA CONTROLAR LA EJECUCION DE LOS COMANDOS DENTRO DEL  CICLO.ESTE CICLO CORRERA REPETIDAMENTE UN PEDAZO DE CODIGO MIENTRAS SU EXPRESION CONDICIONAL  SEA VERDADERA, ES DECIR, CORRERA CUANDO SE INICIALIZA LA VARIABLE I EN 0, LA MISMA QUE VA INCREMENTANDO EN 1 EN CADA CICLO Y EL LOOP  SE REALIZA SIEMPRE Y CUANDO I SEA MENRO QUE CUATRO.SIENDO LA ULTIMA PARTE DE LINEA LA CONDICION PARA QUE EL LOOP FUNCIONE.
 DO:PERMITE QUE EL ALGORITMO SE CUMPLA DE ACUERDO A LA CONDICION ESPECIFICADA.
ECHO "ABSTENGASE DE HACER MAL USO DE LOS RECURSOS, ESTA SIENDO OBSERVADO"": ENVIA E IMPRIME  EN CADA TERMINAL DICHO MENSAJE PARA QUE SEA VISUALIZADO POR EL USUARIO EN UN LAPSO DE TIEMPO DETERMINADO DE ACUERDO AL LOOP ESTABLECIDO.
SLEEP 5: ESPECIFICA EL TIEMPO EN EL QUE CADA CICLO SE EJECUTARA MOSTRANDO EN CADA TERMINAL DICHO MENSAJE (CADA 5 SEGUNDOS).
SH SCRIPT8:
DONE:CIERRA EL CICLO CUANDO DICHA CONDICION A DEJADO DE CUMPLIRSE.

5.HAGA UN SCRIPT EMPLEANDO CONDICIONAL(S) IF, PARA QUE SE LE PREGUNTE A UN USUARIO DOS NÚMEROS PARA OPERARLOS Y QUE SE LE PERMITA ELEGIR QUE TIPO DE OPERACIÓN QUIERE REALIZAR (+,-,*,%). 




ECHO: MUESTRA AL USUARIO EL MENSAJE QUE SE ENCUENTRA ENTRE COMILLAS
READ:LEE LOS DATOS INGRESADOS POR EL USUARIO (CADA READ ES UNA NUEVA VARIABLE AL MOMENTO DE EJECUCIÓN DEL SCRIPT)
  
IF [ $SIGNO = “+” ]: ME INDICA QUE SI EL USUARIO INGRESO EL SIGNO + EN LA VARIABLE SIGNO QUE EJECUTE UNA ACCIÓN.

THEN:ESTO SIGNIFICA ENTONCES, ES LO QUE PERMITE QUE SE EJECUTE LA LÍNEA ANTERIOR USANDO EL CONDICIONAL IF.

ECHO “SUMA= $(($NUM1+$NUM2))”:ESTA ES LA ACCIÓN A EJECUTAR CUANDO LA VARIABLE $SIGNO = +, ESTA DICE QUE MUESTRE SUMA Y EL RESULTADO DE LA OPERACIÓN DE LAS VARIABLES NUM1 Y NUM2, SIN MOSTRAR EL PROCEDIMIENTO, LO MISMO SE HACE CON LAS DEMAS OPERACIONES.


1 comentario:

  1. En época electoral se está efectuando una encuesta entre la ciudadanía apta para votar, elaborar un algoritmo que calcule e imprima el resultado de esta investigación. EL primer registro del archivo a procesar lo constituye la cantidad total de encuestados distribuidos por sexo (si es mujer representada por un 1, si es hombre por un 2), el resto de registros trae por el candidato A tantos potenciales electores de determinado sexo, por el candidato B otros tantos potenciales electores de determinado sexo y, por el candidato C de forma similar. Se requiere un reporte que imprima el resultado de mujeres aptas para votar por cada candidato es del tanto por ciento y de forma similar para hombres es de tanto por ciento para cada candidato.

    ME PUEDES AYUDAR CON ESTE PROGRAMITA

    ResponderEliminar