Administración y gestion de sistemas Linux
Bloque 1: Linea de comandos avanzada
Manuel David Fernández Vaamonde
(page 1)
Linea de comandos avanzada
- Automatización de procesos
- Se tiende al shell scripting (programación del sistema)
(page 2)
Linea de comandos avanzada
- uniq -> Quita lineas duplicadas
- (-c) Numero de ocurrencias
- (-u) Solo línease únicas
- Ejercicios:
- 1) Fichero de nombres eliminando duplicados
- Ejercicios:
- 1) Ordena /etc/passwd
- 2) Ordena los dispositivos del sistema
(page 3)
Linea de comandos avanzada
- echo -> Saca una linea por pantalla
- (-n) No da un \n
- (-e) Habilita el escape
- Ejercicios:
- 1) Imprime: "mi path es /usr/..."
- head -> Saca el principio de un fichero de texto
- Ejercicios:
- 1) Saca las 5 primeras lineas de /etc/passwd ordenadas
(page 4)
Linea de comandos avanzada
- tail -> Saca las ultimas líneas de un fichero
- (-n) numero de líneas
- (-f) Imprime las que van llegando
- Ejercicios:
- 1) Saca las 5 primeras lineas de /etc/passwd ordenadas
- 2) Saca de un documento de la línea 5 a la 10
- grep -> Muestra líneas con ocurrencias
- (-c) Cuenta las líneas donde aparece la ocurrencia
- (-i) Ignora mayusculas
- Ejercicios:
- 1) ¿ Cuantas personas tienes bash como shell ?
(page 5)
Linea de comandos avanzada
- cut -> Extrae trozos de una línea de texto
- (-c) corta caracteres (LISTA)
- (-d) Da un delimitador para los campos (DELIMITADOR)
- (-f) Una lista de campos
- Ejercicios:
- 1) ¿ Personas que usan bash como shell ?
- 2) Grupo del sistema con el gid 100
(page 6)
Linea de comandos avanzada
- wc -> Cuenta caracteres, líneas, etc...
- (-c) Caracteres
- (-l) Lineas
- (-w) Cuenta palabras
- Ejercicios:
- 1) Numero de cuentas abiertas en el sistema
- 2) Numero de usuarios conectados en el sistema
- tr -> Traduce caracteres
- [Conjunto1][Conjunto2]
- (-d) Borra caracteres
- Ejercicios:
- 1) Pregunta 2 pero sin espacios
- 2) Presentación de ls en mayuscula
(page 7)
Linea de comandos avanzada.
- ^ Principio de linea
- $ Fin de linea
- . Un caracter
- r1r2 Expresion seguida de otra
- r1|r2 Una expresion o otra
- r* Se repite cero o mas veces
- r+ Se repite una o mas veces
- r? Se repite cero o una vez
- (r) Agrupadas
- [] rangos
(page 8)
Linea de comandos avanzada.
- egrep -> Grep con expresiones regulares
- Ejercicios:
- 1) Todos los usuarios que tengan bash
- 2) Todos los usuarios que tengan el gid 101
- 3) Todo lo sucedido en un log en Marzo
- 4) Todo lo sucedido en un log el 7 de Marzo
- 5) Todo lo sucedido en un log el 7 de Marzo a las 8
- egrep "^(Mar|mar) *3 21:.*$" auth.log
- 6) Todos los logins fallidos (auth.log)
- egrep "^(Mar|mar) *3 21:.*$" auth.log
(page 9)
Linea de comandos avanzada.
- Comandos:
- s/regexp/reemplazo/ Reemplazo
- y/fuente/destino Transliteración
- Ejercicios:
- 1) w traducido
- 2) Eliminar las x del fichero de password
(page 10)
Linea de comandos avanzada.AWK
- AWK (Aho, Kernigham, W...)
- Procesado de archivos línea a línea
- Por un lado se seleccionan que líneas y por otro las acciones que hacer con ellos.
- Acción y condición entre comas
- Primer condición despues acción entre llaves.
(page 11)
Linea de comandos avanzada.AWK
- Opciones generales sobre el comando sed:
- -F valor. Regula el separador de campos
- Condición de seleciones de línea:
- /regexp/ ( $0 ~ /regexp/ )
- $1 ~ /100/ Esta 100 en $1
- $1 ~ /^100$/ Exactamente 100
(page 12)
Linea de comandos avanzada. AWK
- Comandos
- print $1 (, espacio)
- if ( ) else ( )
- Condiciones:
- || OR
- && AND
- == Igualdad
- != Desigualdad
(page 13)
Linea de comandos avanzada. AWK
- Algunas variables predefinidas
- NF: Campos en esa linea
- RS: Separador de registros
- NR: Numero de línea que se esta procesando.
- Ejercicio:
- W sin las dos primeras líneas
- w | awk ' NR > 2 { print $0 }'
- Número de letras en cada línea
- w | awk -F "" '{ print NF }'
(page 14)
Linea de comandos avanzada. AWK
- BEGIN y END como identificadores de principio y fin de línea.
- Ejercicio:
- Emular el comando wc -c
- w | awk -F "" '{ total+=NF } END { print total }'
- Funciones predefinidas:
- length(s) -> longitud de la cadena
- tolower(s) -> A minusculas
- toupper(s) -> A mayusculas
- int(x) -> Trunca un resultado
- srand()-> inicializa aleatorio
- rand() -> Valor aleatorio entre 0 y 1
(page 15)
Linea de comandos avanzada. AWK
- Numero de personas conectadas en el sistema (con w)
- w | awk 'BEGIN { cont=0 } NR>2 { cont=cont+1 } END { print cont}'
- Mata todos los procesos de un tipo
- ps ax | awk '/top/ { comando="kill -9 "$1} /top/ { system(comando)}'
- Todos los fallos de login (auth.log)
- cat /var/log/auth.log | awk '/^.*FAILED\ LOGIN.*$/ {print $0}'
- Pasa todos los ficheros de un directorio de min. a may.
- ls | awk '{ cadena=toupper($1)} { bu="mv "$1" "cadena } { system(bu)}'
(page 16)
Programación de shell scripts
- Los scripts se inician con la línea:
- Las variables se nombran del siguiente modo:
- nombre, cuando se asignan o se operan
- $nombre, cuando se referencian
- Expansión de comandos:
- nombre=`...`
- $(( )) Aritmetica
- El comando se expande por toda la variable
- $0 -> Línea, $1,$2... -> argumentos
(page 17)
Programación de shell scripts
- Estructuras de control WHILE
do
(page 18)
Programación de shell scripts
- Estructuras de control.FOR
- Indices: seq comienzo paso final
- Ejercicio:
- mover todo un directorio a mayusculas
- Imprimir un ls pasado por un for.
(page 19)
Programación de shell scripts
- Estructuras de control.CASE
- case "$1" in
- etiqueta) ;;
- etiqueta) ;;
- *) (exit)
- esac
- Ejercicio:
- Redirige un fichero a la consola 12, con el comandos star y eliminalo con el stop
- Versión que cambie manusculas<->minusculas
(page 20)
Programación de shell scripts
- Estructura condicional IF:
else COMANDOS;
- Expresiones condicionales:
- test o []
- -a Es un fichero
- -d Es un directorio
- -w Es escribible
- -x Es ejecutable
- -r Es legible
(page 21)
Programación de shell scripts
- Condiciones con operadores
- ar1 -ne ar2
- ar1 -eq ar2
- ar1 -lt ar2
- ar1 -le ar2
- ar1 -gt ar2
- ar1 -ge ar2
- Ejercicios:
- Ejecutar distintas acciones si existe un fichero.
- Imprimir todos los ficheros mayores que una cantidad.
- Implementar un guardian de un proceso.
(page 22)
Programación de shell scripts
- Ejercicios:
- Ver logs predeterminado por el usuario.
- Visulizador de ficheros.
(page 23)