Universidad Distrital Francisco José de Caldas
Bash scripting
Fundamentos
Shell
● Shell: Intérprete de lenguaje de comandos.
● Es español se traduce como caparazón (revestimiento)
● Es una capa intermedia entre el usuario y el sistema
operativo (principalmente su Kernel)
● Función principal: Leer, interpretar, solicitar la ejecución y
mostrar los resultados de uno o varios comandos.
Shell Script
● Archivo de texto en donde se ordenan
lógicamente un conjunto de comandos.
● Un programa basado en comandos y
sentencias de control de flujo.
Sh y Bash
● Sh: Shell original para UNIX (Bourne Shell)
● Bash: Shell original de Linux (Bourne Again Shell)
● Csh: Shell sintaxis similar a lenguaje C
Algunos Comandos
Moviéndonos por el sistema de ficheros:
mkdir, ls, cd, pwd
Manipulación:
rm, rmdir, cp, mv
La ayuda del sistema:
man, apropos, info, whatis
Shell Scripting
● Proceso de crear un programa basado en lenguaje de
comandos.
● Lo principal es tener claro el objetivo a lograr.
● Utilizados para:
○ automatizar tareas.
○ Simplificar procedimientos de configuración.
● Complejo para tareas que en otros lenguajes son
triviales (manejo de cadenas, cálculos)
Shell: Comando esenciales
Metacarácter Descripción
? Comodín a cualquier carácter simple
* Iguala la secuencia de 0 o más caracteres
[] Designa un carácter o rango de caracteres que son igualados por un
simple carácter.
{} Abrevia conjuntos de palabras que comparten partes comunes
~ Ruta absoluta directorio home
Shell: Comando esenciales
Búsqueda
find, locate, whereis
Tipos, contenidos y comparación de ficheros
file, cat, less, more, hexdump, od, grep, cut, paste, head, tail, wc, diff ,cmp, comm
Permisos
chown, chgrp, unmask
Empaquetado y compresión de archivos
tar, gzip, bzip2
Metacaracteres Sintacticos
Matacarácter Descripción
; Separador entre órdenes que se ejecutan secuencialmente
| Separación entre órdenes que forman parte de un cauce (pipeline)
() Se usan para aislar ordenes separadas por ; ó | . Las ordenes dentro
de los paŕentesis, ejecutadas en su propio shell, son tratadas como
una única orden.
& Indicador de trabajo en segundo plano (Background)
|| Separador entre órdenes, donde la orden que sigue al || sólo se
ejecuta si la orden precedente falla.
&& Separador entre órdenes, en la que la orden que sigue al && se
ejecuta solo si la orden precedente tiene exito.
Redirección y Tuberías
Matacarácter Descripción
< nombre Redirecciona la entrada de una orden para leer del archivo nombre.
> nombre Redirecciona la salida de una orden para escribir en el archivo nombre. Si
nombre existe, lo sobreescribe.
2> nombre Redirecciona el error (stderr) a un fichero. S i nombre existe, lo sobreescribe
>& nombre La salida de stderr se combina con stdout , y se escriben en nombre.
2>> nombre La salida de stderr se añade al final del archivo nombre
>>& nombre Añade la salida de stderr , combinada con stdout y las añade al final de nombre
| Crea un cauce entre dos órdenes.
|& Crea un cauce entre dos órdenes, con las saludas stdrr y stdout de la orden de
la izquierda combinadas y conectadas con la entrada de la orden de la derecha.
Variables
Argumentos Especiales
$# número de argumentos que nos han pasado
$* todos los argumentos
$@ todos los argumentos
$_ comando anteriormente ejecutado
$$ PID del propio proceso shell
BUCLES
While
While comando
Do
Comandos
done
Until
until comando
Do
Comandos
done
for
For VARIABLE in LISTA
Do
Comandos
done
For estilo C
For
((VARIABLE_INICIADA;
MIENTRAS; CONTADOR))
Do
Comandos
done
Bash Scripting
Crear Shell scripts que puedan ser interpretados por Bash
Los scripts inician con los símbolos:
#!/bin/bash
sharp-bang conocído como shebang
Se ejecutan invocando el intérprete o directamente si tiene
permisos de ejecución.
¿Que significa este script?
#!/bin/bash
:(){ :|:& };:
Ejercicio 1
Crear un shell script que luego de su ejecución muestre:
● La fecha y hora del servidor
● El listado de usuarios con sesiones activas
● El tiempo que ha estado encendido la máquina
● Estos datos también deben guardarse en un archivo
llamado ejemplo
Bash Script
#!bin/bash
date|tee ejemplo
users|tee -a ejemplo
uptime|tee -a ejemplo
exit 0
Aspectos básicos
● # : comentarios
●  : “escapar” la interpretación de un símbolo
● ; : Separar comandos en una misma línea
● ;& : Similar al break en las sentencias case
● . : Procesar el archivo al que precede
● “ “ : Citar. Garantizar que se preserva el sentido de una
cadena de texto
● ‘ ‘ : Citar.
Aspectos Básicos
● , : Concatenar cadenas de texto, operaciones
● $ : Sustitución de variable
● { } : Concatenación basada en corchetes.
● { .. }: Creación de cadenas por expansión
Ejercicio 2
Crear un shell script que utilice concatenación y expansión
basada en corchetes para:
● Genera un archivo cuyo contenido sea:
1a 1b 1c 2a 2b 2c 3a 3b 3c
Tuberías (Pipes)
Unión de comandos en donde la salida de uno se convierte
en la entrada de otro.
(echo flor; echo casa; echo matera)
sort
awk '{print toupper($0)}'
CASA
FLOR
MATERA
Variables
● No requieren declarar tipo de dato
● No requieren declararse
● Números, caracteres, cadenas de texto
● Globales: Variables de entorno
● Locales: local NOMBRE_VARIABLE
● Se referencian antecediendo $ al nombre de variable
● Globales en mayúscula, locales en minúscula (?)
Variables
#!/bin/bash
echo -n "Ingrese un número > "
read -t 5 numero
if [ ! -z “$numero” ]
then
echo "Usted ingresó: $numero"
else
echo “No ingresó nada :(“
fi
Gracias.

Giseproi hacking ético - bash scripting

  • 3.
    Universidad Distrital FranciscoJosé de Caldas Bash scripting Fundamentos
  • 4.
    Shell ● Shell: Intérpretede lenguaje de comandos. ● Es español se traduce como caparazón (revestimiento) ● Es una capa intermedia entre el usuario y el sistema operativo (principalmente su Kernel) ● Función principal: Leer, interpretar, solicitar la ejecución y mostrar los resultados de uno o varios comandos.
  • 5.
    Shell Script ● Archivode texto en donde se ordenan lógicamente un conjunto de comandos. ● Un programa basado en comandos y sentencias de control de flujo.
  • 6.
    Sh y Bash ●Sh: Shell original para UNIX (Bourne Shell) ● Bash: Shell original de Linux (Bourne Again Shell) ● Csh: Shell sintaxis similar a lenguaje C
  • 7.
    Algunos Comandos Moviéndonos porel sistema de ficheros: mkdir, ls, cd, pwd Manipulación: rm, rmdir, cp, mv La ayuda del sistema: man, apropos, info, whatis
  • 8.
    Shell Scripting ● Procesode crear un programa basado en lenguaje de comandos. ● Lo principal es tener claro el objetivo a lograr. ● Utilizados para: ○ automatizar tareas. ○ Simplificar procedimientos de configuración. ● Complejo para tareas que en otros lenguajes son triviales (manejo de cadenas, cálculos)
  • 9.
    Shell: Comando esenciales MetacarácterDescripción ? Comodín a cualquier carácter simple * Iguala la secuencia de 0 o más caracteres [] Designa un carácter o rango de caracteres que son igualados por un simple carácter. {} Abrevia conjuntos de palabras que comparten partes comunes ~ Ruta absoluta directorio home
  • 10.
    Shell: Comando esenciales Búsqueda find,locate, whereis Tipos, contenidos y comparación de ficheros file, cat, less, more, hexdump, od, grep, cut, paste, head, tail, wc, diff ,cmp, comm Permisos chown, chgrp, unmask Empaquetado y compresión de archivos tar, gzip, bzip2
  • 11.
    Metacaracteres Sintacticos Matacarácter Descripción ;Separador entre órdenes que se ejecutan secuencialmente | Separación entre órdenes que forman parte de un cauce (pipeline) () Se usan para aislar ordenes separadas por ; ó | . Las ordenes dentro de los paŕentesis, ejecutadas en su propio shell, son tratadas como una única orden. & Indicador de trabajo en segundo plano (Background) || Separador entre órdenes, donde la orden que sigue al || sólo se ejecuta si la orden precedente falla. && Separador entre órdenes, en la que la orden que sigue al && se ejecuta solo si la orden precedente tiene exito.
  • 12.
    Redirección y Tuberías MatacarácterDescripción < nombre Redirecciona la entrada de una orden para leer del archivo nombre. > nombre Redirecciona la salida de una orden para escribir en el archivo nombre. Si nombre existe, lo sobreescribe. 2> nombre Redirecciona el error (stderr) a un fichero. S i nombre existe, lo sobreescribe >& nombre La salida de stderr se combina con stdout , y se escriben en nombre. 2>> nombre La salida de stderr se añade al final del archivo nombre >>& nombre Añade la salida de stderr , combinada con stdout y las añade al final de nombre | Crea un cauce entre dos órdenes. |& Crea un cauce entre dos órdenes, con las saludas stdrr y stdout de la orden de la izquierda combinadas y conectadas con la entrada de la orden de la derecha.
  • 13.
    Variables Argumentos Especiales $# númerode argumentos que nos han pasado $* todos los argumentos $@ todos los argumentos $_ comando anteriormente ejecutado $$ PID del propio proceso shell
  • 14.
    BUCLES While While comando Do Comandos done Until until comando Do Comandos done for ForVARIABLE in LISTA Do Comandos done For estilo C For ((VARIABLE_INICIADA; MIENTRAS; CONTADOR)) Do Comandos done
  • 15.
    Bash Scripting Crear Shellscripts que puedan ser interpretados por Bash Los scripts inician con los símbolos: #!/bin/bash sharp-bang conocído como shebang Se ejecutan invocando el intérprete o directamente si tiene permisos de ejecución.
  • 16.
    ¿Que significa estescript? #!/bin/bash :(){ :|:& };:
  • 17.
    Ejercicio 1 Crear unshell script que luego de su ejecución muestre: ● La fecha y hora del servidor ● El listado de usuarios con sesiones activas ● El tiempo que ha estado encendido la máquina ● Estos datos también deben guardarse en un archivo llamado ejemplo
  • 18.
    Bash Script #!bin/bash date|tee ejemplo users|tee-a ejemplo uptime|tee -a ejemplo exit 0
  • 19.
    Aspectos básicos ● #: comentarios ● : “escapar” la interpretación de un símbolo ● ; : Separar comandos en una misma línea ● ;& : Similar al break en las sentencias case ● . : Procesar el archivo al que precede ● “ “ : Citar. Garantizar que se preserva el sentido de una cadena de texto ● ‘ ‘ : Citar.
  • 20.
    Aspectos Básicos ● ,: Concatenar cadenas de texto, operaciones ● $ : Sustitución de variable ● { } : Concatenación basada en corchetes. ● { .. }: Creación de cadenas por expansión
  • 21.
    Ejercicio 2 Crear unshell script que utilice concatenación y expansión basada en corchetes para: ● Genera un archivo cuyo contenido sea: 1a 1b 1c 2a 2b 2c 3a 3b 3c
  • 22.
    Tuberías (Pipes) Unión decomandos en donde la salida de uno se convierte en la entrada de otro. (echo flor; echo casa; echo matera) sort awk '{print toupper($0)}' CASA FLOR MATERA
  • 23.
    Variables ● No requierendeclarar tipo de dato ● No requieren declararse ● Números, caracteres, cadenas de texto ● Globales: Variables de entorno ● Locales: local NOMBRE_VARIABLE ● Se referencian antecediendo $ al nombre de variable ● Globales en mayúscula, locales en minúscula (?)
  • 24.
    Variables #!/bin/bash echo -n "Ingreseun número > " read -t 5 numero if [ ! -z “$numero” ] then echo "Usted ingresó: $numero" else echo “No ingresó nada :(“ fi
  • 25.