Vous êtes sur la page 1sur 10

DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIN

Nombre: Bryan Martnez


NRC: 2358
Fecha: 24 mayo 2016
Laboratorio N 04
Tema:

Programacin en Shell Script


1. Objetivo
Capacitar al estudiante para
que utilice un lenguaje de
programacin utilizado en
entornos Linux, con el nico
propsito de automatizar el
funcionamiento del Sistema
Operativo.
2. Materiales/herramientas/equi
pos

PC / laptop computer
Virtual Box
Mquina Virtual
Ubuntu Desktop 14.04 LTS

3. Marco terico
3.1. Shell script
Shell script es un texto archivo que
contiene una secuencia de comandos.
Se llama un shell script, ya que combina
en un guion un solo archivo de una
secuencia de comandos que de otra
manera tendran que ser presentado al
sistema desde un teclado de uno a la
vez. La shell es intrprete de comandos
del sistema operativo y el conjunto de
comandos que se utiliza para

comunicarse con el sistema. Algunas


razones para usar shell script:
Puede obtener informacin de
usuario, archivos y almacenarlas
en la pantalla.
til para crear nuestros propios
comandos.
Para automatizar algunas tareas
cotidianas.
Parte del sistema de
administracin puede ser
automatizado.
3.2.

Tipos de Shell

C - shell (csh)
Los desarrolladores han escrito grandes
partes del sistema operativo Linux en
los lenguajes C y C++. Usando la sintaxis
de C como modelo, Bill Joy desarroll Cshell (csh). Ken Greer llevo a los
conceptos csh un paso adelante con un
nuevo shell, tcsh que los sistemas Linux
ofrecen ahora. Tcsh solucion
problemas en csh y aadi finalizacin
del comando, en el que el shell hace
conjeturas a medida que escribes,
sobre la base de la estructura y los
archivos del directorio de tu sistema.

Korn shell (ksh)


David Korn desarroll Korn shell (ksh).
Ksh es compatible con sh y bash.
Adems mejora el shell Bourne
aadiendo aritmtica de punto
flotante, control de tareas, comandos
aliasing y la terminacin de comandos.
Bourne shell (sh)
El Bourne shell (sh) es una de los
originales, desarrollados para
computadoras Unix por Stephen
Bourne. Ofrece caractersticas tales
como la entrada y la redireccin de la
salida, secuencias de comandos shell
con variables de cadena y enteros, y las
pruebas de estado y looping.
Bourne Again Shell (bash)
La popularidad de sh motiv a los
programadores a desarrollar un shell
que era compatible con ella, pero con
varias mejoras. Los sistemas Linux
todava ofrecen el shell sh, pero Bourne
Again Shell (bash), basada en sh se ha
convertido en el nuevo estndar de
forma predeterminada. Una
caracterstica atractiva de bash es su
capacidad para ejecutar scripts de shell
sh sin cambios. Los shell scripts son
complejos conjuntos de comandos que
automatizan las tareas de
programacin y mantenimiento; ser
capaz de volver a utilizar estos scripts
ahorra tiempo a los programadores. Las
comodidades que no estn presentes
con el shell original de Bourne incluyen
la terminacin de comandos y un
historial de comandos.

3.3. Estructura de un
programa en Shell script
Para crear un script vasta con editar un
fichero nuevo y en el nombre poner
[nombre_del_archivo].sh, ejemplo:
HolaMundo.sh
Una vez creado, empezamos a editarlo.
Se puede utilizar un editor de textos
grfico como gedit o un editor en
terminal como vim, nano o emacs.
En la primera lnea del script se debe
indicar que shell se va a usar
( /bin/bash/ , /usr/bin/perl , etc ).
#! /bin/bash
#! Se conoce con el nombre de Sha
Bang.
Se denomina sha-bang a la secuencia #!
con la que se inician los scripts. Su
funcin es indicarle al sistema que se
trata de un conjunto de comandos para
que sean interpretados. En realidad, es
un nmero mgico de dos bytes. El
nmero mgico es un marcador
especial para indicar el tipo de archivo,
en este caso, indica que se trata de un
script de shell ejecutable.
# Program:
# Author:
# Date:
El carcter # se utiliza para poner
comentarios, estas lneas proporcionan
la documentacin al programa.
Las lneas siguientes son el programa
de computadora, es decir los
comandos que se va a editar en el
script.
3.4. VIM
Vim es un editor de texto altamente
configurable construido para permitir la
edicin de texto eficiente. Es una

versin mejorada del editor vi


distribuido con la mayora de sistemas
UNIX. Vim es perfecto para todo tipo de
edicin de texto, a partir de la
composicin de correo electrnico a la
edicin de los archivos de
configuracin.
Adems puede ser configurado para
trabajar de una manera muy sencilla,
llamado evim o Easy Vim. Existen
algunas variantes de Vim como:
jvim-canna
Este paquete permite la entrada de
Kanji (escritura japonesa) de la consola.
Depende de la libcanna1g biblioteca
No parece apoyar Perl, Python, Ruby, o
de scripting TCL.
vim-Athena
Compila con la interfaz grfica de
usuario Athena en lugar de GTK + o
Gnome.
Es compatible con Perl, Python, Ruby y
TCL secuencias de comandos.
vim-gnome
Compilado con una interfaz grfica de
usuario Gnome2
Depende de la libgnome2 biblioteca
Es compatible con Perl, Python, Ruby y
TCL secuencias de comandos.
vim-gtk
Compilado con la GUI GTK2
Se utiliza en entornos KDE / Kubuntucomo
Es compatible con Perl, Python, Ruby y
TCL secuencias de comandos.

vim-nox
Es una instalacin mnima vim y no
tiene una interfaz grfica de usuario.
Viene con soporte de ratn, pero no
hay soporte portapapeles, IIRC.
Es compatible con Perl, Python, Ruby y
TCL secuencias de comandos.
vim-tiny
Versin compacta, se incluye como el
vim defecto en las distribuciones de
Ubuntu y viene con muchas
caractersticas opcionales con
discapacidad (por ejemplo, de deshacer
multinivel).
No es compatible con Perl, Python,
Ruby, o de scripting TCL.
4. Procedimiento
Utilizando el editor de textos planos
para Linux VIM (VI IMPROVED), ingrese
los siguientes scripts, corrjalos de ser el
caso, ejectelos y analice sus
resultados.
4.1. Script 1: Porcentaje de
uso del CPU
#!/bin/bash
# PORCENTAJE DE USO DEL CPU,
REALIZA LA MEDICIN CADA 2
SEGUNDOS
echo "PORCENTAJE DE USO DEL
CPU"
sleep 2
top -d 2

4.3. Script 3: uso de


Memoria RAM
#!/bin/bash
#USO DE MEMORIA RAM, REALIZA LA
MEDICIN CADA 2 SEGUNDOS
echo "USO DE MEMORIA RAM"
watch -n 2 -d free m

Top: Este comando nos muestra toda


actividad de los procesos en ejecucin
(en tiempo real). As como una amplia
informacin sobre el sistema. Con la
opcin d retrasa la ejecucin
dependiendo del tiempo que se desee.
4.2. Script 2: Resumen del
Porcentaje de uso de CPU
por cada Ncleo
#! /bin/bash
# RESUMEN DEL PORCENTAJE DE USO
DEL CPU POR CADA NCLEO
echo "RESUMEN DE PORCENTAJE DE
USO POR CADA CPU"
watch mpstat -P ALL

Para realizar este ejercicio se necesit


instalar sysstat, usando este comando:
$sudo apt-get install sysstat.
Watch: es un comando con intervalos
de actualizacin por defecto cada 2
segundos.
Mpstst: ayuda a supervisar la utilizacin
del CPU en el sistema, la opcin P ALL
imprime cada utilizacin de la CPU de
procesadores en una sola pgina.

La opcin m en el comando free nos


muestra el uso de memoria RAM en
megabytes
Watch: comando con intervalos de
actualizacin, con la opcin n ayuda a
especificar el tiempo que se desee ya
que por defecto este comando es de
cada 2 segundos su actualizacin.
4.4. Resumen de procesos,
memoria, swap, E/S,
sistema y actividad del
CPU
#! /bin/bash
#RESUMEN DE PROCESOS, MEMORIA,
SWAP, E/S, SISTEMA Y ACTIVIDAD DEL
CPU
echo "RESUMEN DE PROCESOS,
MEMORIA, SWAP, E/S, SISTEMA Y
ACTIVIDADES
CPU"
watch -n 2 -d vmstat

Vmstat: informa las estadsticas de


memoria virtual y proporcionar
informacin sobre eventos del sistema.

Whatch: la opcin d ayuda a resaltar


las diferencias entre las sucesivas
actualizaciones.
4.5. Script 5: Resumen de
espacio en disco del equipo
#! /bin/bash
#RESUMEN DE ESPACIO EN DISCO DEL
EQUIPO
echo " RESUMEN DE ESPACIO EN DISCO
DEL EQUIPO
df -h

Ifconfig: configura una interfaz de red,


con la opcin a muestra todas las
interfaces actuales.
Cat muestra el directorio
/etc/resolv.conf, el resolv.conf es un
archivo de configuracin re resolucin.

Df: informa cuanto espacio libre en


disco est disponible, con la opcin h
ayuda con una visibilidad legible.
4.6. Script 7: Mostrar la(s)
direccin(es) ip(s) y dns del
equipo y su MAC

#! /bin/bash
#
CAMBIAR DIRECCIN IP DE UNA
MAQUINA
clear
echo "MOSTRAR LA{S) DIRECCIN(ES)
IP(s) Y DNS DEL EQUIPO"
ifconfig -a
cat /etc/resolv.conf
arp -a

Arp manipula el sistema de cach ARP,


la opcin a ayuda que el formato de
salida sea tipo BSD alternativo
4.7. Listar los usuarios
conectados al equipo
#!/bin/bash
#LISTAR LOS USUARIOS CONECTADOS
AL EQUIPO, REALIZA LA MEDICIN
CADA 2 SEGUNDOS
echo "LISTAR LOS USUARIOS
CONECTADOS AL EQUIPO"
watch -n 2 -d who -u

Who u muestra los usuarios


conectados actualmente, su terminal,
el tiempo que han estado conectados y
el nombre del host.

4.8. Muestra las conexiones


establecidas con otros
equipos, protocolos y
puertos utilizados
#! /bin/bash
#MUESTRAS LAS CONEXIONES
ESTABLECIDAS CON OTROS EQUIPOS Y
LOS PUERTOS UTILIZADOS
echo "CONEXIONES ESTABLECIDAS CON
OTROS EQUIPOS, PROTOCOLOS Y
PUERTOS UTILIZADOS"
netstat anutp

Ps aux muestra los procesos de todos


los usuarios en ejecucin. En forma
ordenada gracias al comando sort. Con
head -10 muestra los 10 primeros
procesos mientras que tail -10 muestra
los 10 ltimos procesos.
4.10. Cul es el resultado del
siguiente script

Netstat: muestra las conexiones de red,


tablas de enrutamiento, estadsticas de
la interfaz y la pertenencia de
multidifusin

#!/bin/bash
# PROCESOS DEL CPU EN PORCENTAJE
echo Procesos del CPU en forma
porcentual
ps -aux --sort -pcpu |head -10

4.9. Cul es el resultado del


siguiente script
#!/bin/bash
# PROCESOS DE LA MEMORIA EN
FORMA ORDENADA
echo Procesos de la memoria, en
forma ordenada mostrando los 10
primeros y los 10 ltimos procesos
ps aux --sort %mem |head -10
ps aux --sort %mem |tail -10

La opcin --sort pcpu ordena los


procesos del cpu con respecto al
porcentaje

a.
b.
c.
d.
e.
f.

g.

h.

i.

j.

k.

4.11. Pruebe las diversas


opciones del comando date:
date : muestra la hora y fecha
date +%a :nombre del da de la
semana abreviada
date +%A :nombre del da de la
semana completo
date +%B%A :nombre del mes y
da completo, unidos
date +%B-%A :nombre del mes y
da completo, con separador (-)
date +%B-%A-%d :nombre del
mes y da completo y numero
de da con separador (-)
date +%B-%A-%d-%Y :nombre
del mes y da completo, numero
de da y ao (4 dgitos), con
separador (-)
date +%B/%A/%d/%y :nombre
del mes y da completo, numero
de da y ao (2 dgitos), con
separador (/)
date +%d%m%y: nmero del
da, mes y ao (2 dgitos), sin
separacin
date +%d_%m_%y :nmero del
da, mes y ao (2 dgitos), con
separacin (_)
date +%d\ %m\ %y : nmero del
da, mes y ao (2 dgitos), con
espaciado el caracter (\) ayuda a
reconocer el espacio.

4.12. Cul es el resultado del


siguiente comando:
date +"Date is %D %t Time is %T" : %D
muestra la fecha en formato
%m/%d/%y, %T la hora en formato
%H:%M:%S y %t es un tabulador.

4.13. Cul es el resultado del


siguiente comando:
date -s "10/05/2016 08:37:23": este
comando necesita permisos por lo que
se debe anteponer sudo entonces
quedara as: sudo date -s "10/05/2016
08:37:23", lo que muestra es una fecha
y hora ya establecida con ayuda de la
opcin s que es el string.

4.16. Realice un script para


leer dos nmeros enteros y
multiplicarlos mediante
sumas sucesivas.

4.14. Realice un script para


determinar el tamao de la
carpeta home
#!/bin/bash
echo "SCRIPT PARA DETERMINAR EL
TAMAO DE LA CARPETA HOME"
du -h /home -s

4.15. Realice un script para


modificar la fecha del
sistema.
#!/bin/bash
echo "LA FECHA ACTUAL ES:"
date
echo "LA FECHA MODIFICADA DEL
SISTEMA ES:"
sudo date 082014101995.22

#!/bin/bash
echo "MULTIPLICACION POR SUMA
SUCESIVA"
echo "INGRESE EL PRIMER NUMERO"
;read a
echo "INGRESE EL SEGUNDO NUMERO"
;read b
c=0
d=0
while [ $c -lt $b ];do
d=`expr $d + $a`
c=`expr $c + 1`
done
echo "EL RESULTADO DE $a * $b ES:
$d"

4.17. Realice un script para


determinar una IP basado
en la direccin MAC.
#!/bin/bash
echo "DISPOSITIVOS CONECTADOS CON
SUS RESPECTIVAS DIRECCIONES"
arp
echo "ESCRIBIR LA DIRECCION MAC
PARA DETERMINAR LA DIRECCION IP"
read mac
echo "LA DIRECCION IP DE LA
DIRECCION MAC ($mac) ES:"
arp -n |grep $mac

4.18. Realice un script para


apagar su PC
#!/bin/bash
echo "EL EQUIPO SE APAGARA"
shutdown now

4.19. Realice un script para


suspender durante 10
segundos su PC
#!/bin/bash
echo "EL EQUIPO SE SUSPENDERA POR
10 SEGUNDOS"
sleep 10

4.20. Realice un nico script


para desplegar el nombre
del host, del usuario, el
directorio actual, la versin
del Kernel, el tamao de
memoria RAM disponible y
utilizada, la capacidad de
disco duro.
#!/bin/bash
echo "NOMBRE DE HOST:" ;hostname
echo "NOMBRE DE USUARIO"; whoami
echo "DIRECTORIO ACTUAL"; pwd
echo "VERSION DE KERNEL"; uname -r
echo "TAMAO DE RAM, DISPONIBLE Y
USADA:" ; free -m
echo "CAPACIDAD DE DISCO DURO:" ;
du -s -m

Es necesario aprender los


comandos de ms uso en las
prcticas, pero a lo mejor no se
acuerda de una opcin,
comando que puede salvar es
man [comando].
6. Bibliografa
(s.f.). Obtenido de Tech Target:
http://searchenterpriselinux.techta
rget.com/definition/shell-script

5. Conclusiones
Como puede ser fcilmente
visto anteriormente, Vim es un
potente y flexible editor de
texto con un montn de
caractersticas que pueden ser
fcilmente aadidas a la
distribucin por defecto.
La semntica y sintaxis son muy
importantes al momento de
teclear los comandos.

(s.f.). Obtenido de TI Designs:


http://www.freeos.com/guides/lss
t/
(s.f.). Obtenido de Chron:
http://bit.ly/1spu62h
(s.f.). Obtenido de Vim:
http://www.vim.org/about.php
Velasco, S., & Martn, A. (s.f.). Obtenido de
http://pendientedemigracion.ucm.
es/info/aulasun/archivos/SCRIPTS.
pdf

Vous aimerez peut-être aussi