con clonezilla
http://diversidadyunpocodetodo.blogspot.com.es/2012/08/clonezilla-imagen-seguridad-linux-windows-particiones-disco-duro.html
jueves, 30 de enero de 2014
jueves, 16 de enero de 2014
Actualización de un linux debian
para actualizar tu sistema primeramente se debe de ejecutar en la consola
apt-get install builtessential para que puedan descargarse las bibliotecas necesarias, así como paquetes precompilados para que puedan funcionar la mayoría de las aplicaciones que vayas a ocupar en tu sistema Linux.
apt-get install builtessential para que puedan descargarse las bibliotecas necesarias, así como paquetes precompilados para que puedan funcionar la mayoría de las aplicaciones que vayas a ocupar en tu sistema Linux.
miércoles, 20 de noviembre de 2013
Clase 1 Seguridad Unix
/etc/passwd Version previa -> /etc/passwd-
/etc/shadow Version previa -> /etc/shadow-
/etc/passwd -> vipw
/shadow -> vipw -s
/etc/group -> vigr
hay otro archivo que casi no se usa
/etc/gshadow -> vigr -s
no es recomendable editar lors archivos, verifica la sintaxi y marca algun problema.
dependiendo de unix hay maneras de hacerlo.
/etc/passwd
Contiene 7 campos separadso por dos puntos:
curso:x:501:100:Curso de hardening:/home/curso:/bin/bash
\-1/:
gid 100 -> es el grupo inicial del usuario, solamente es 1 -> va mapeado en el passwd
hay una lista de grupos -> 33,80,1000,101 -> grupos complementarios.
Nota: subirá al moodle.
getent passwd -> podemos ver el contenido de passwd
group
shadow
gshadow
son parámetros
Investigar:
RTFM
RTFL
getent -> se conecta a LDAP, se pueden mapear en un directorio activo, junta lo que tengamos en passwd con getent, da una mayor oportunidad de hacerlo.
/etc/shadow
se recomientda que no tengan shadow por hardening.
dentro de shell
cat /etc/shells
se recomienda que el shell que tenga el listado de usuario este en el sig archivo.
/etc/shells -> aquí se listan todos.
hay progarmas que hacen auditorias, podemos haber escrito un eshell, pero si no esta en ése archivo las herramientas de auditoria marcará un error.
ej:
#/etc/shells:
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/nologin -> es un shell especializado para seguridad, si tenemos el binario los podemos usar para ver los logins, funciona para debian.
si no esta en el liunx que nos gusta puede estar en /bin/false
/etc/shadow
contiene 9 campos separados por dos puntos:
curso:$$$:16017:
en la parte de hash podemos ver en donde se guarda, podemos ver los tipos de valides que haya en la cuenta.
/etc/group
contiene 4 campos separados por dos punts
sudo:x:27:curso
\-1-/:2: 3:
id nombre de usuario
getent passwd congreso
se esta haciendo una consulta específico de ese usuario en el archivo passwd.
UID : identificador de usuario
GID: Identificador de grupo
UID y GID 0 reservados para root
nota: hay algunas compañias que utilizan freebsd, si editamos
tarea:
hay una base de datos MASTER passwd DB, en freebsd, pero tenemos que editar con otros comandos la basde de dats maestra, una vez que se edita, con el segundo comando podemos olver a generar los archivos de /etc/passwd
/etc/shadow .
Visualizar identificadores del usuario.
w en linux para visualizar los usuarios con sesión activa en el seistema.
identificacion de usuarios no autorizados
Permisos en UNIX
user, group others.
el la gsiguiente
sgt uid-o¡o --Ñ mode
/var/bla
chown u:g
.ññ--ñ
se refleja en las variables de entorno
sudo su -
ps -auxf
muestra la tabla de los procesos
hay dos formas con octal y con g+w
para agreegar al grupo la bandera de escritura.
escenario 2
solucion 1 :
se agregan al mismo grupo inicial
gid + chmod g+s
solucion 2:
cambio manual, que es un usuario que hace un chmod
/etc/shadow Version previa -> /etc/shadow-
/etc/passwd -> vipw
/shadow -> vipw -s
/etc/group -> vigr
hay otro archivo que casi no se usa
/etc/gshadow -> vigr -s
no es recomendable editar lors archivos, verifica la sintaxi y marca algun problema.
dependiendo de unix hay maneras de hacerlo.
/etc/passwd
Contiene 7 campos separadso por dos puntos:
curso:x:501:100:Curso de hardening:/home/curso:/bin/bash
\-1/:
gid 100 -> es el grupo inicial del usuario, solamente es 1 -> va mapeado en el passwd
hay una lista de grupos -> 33,80,1000,101 -> grupos complementarios.
Nota: subirá al moodle.
getent passwd -> podemos ver el contenido de passwd
group
shadow
gshadow
son parámetros
Investigar:
RTFM
RTFL
getent -> se conecta a LDAP, se pueden mapear en un directorio activo, junta lo que tengamos en passwd con getent, da una mayor oportunidad de hacerlo.
/etc/shadow
se recomientda que no tengan shadow por hardening.
dentro de shell
cat /etc/shells
se recomienda que el shell que tenga el listado de usuario este en el sig archivo.
/etc/shells -> aquí se listan todos.
hay progarmas que hacen auditorias, podemos haber escrito un eshell, pero si no esta en ése archivo las herramientas de auditoria marcará un error.
ej:
#/etc/shells:
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/nologin -> es un shell especializado para seguridad, si tenemos el binario los podemos usar para ver los logins, funciona para debian.
si no esta en el liunx que nos gusta puede estar en /bin/false
/etc/shadow
contiene 9 campos separados por dos puntos:
curso:$
en la parte de hash podemos ver en donde se guarda, podemos ver los tipos de valides que haya en la cuenta.
/etc/group
contiene 4 campos separados por dos punts
sudo:x:27:curso
\-1-/:2: 3:
id nombre de usuario
getent passwd congreso
se esta haciendo una consulta específico de ese usuario en el archivo passwd.
UID : identificador de usuario
GID: Identificador de grupo
UID y GID 0 reservados para root
nota: hay algunas compañias que utilizan freebsd, si editamos
tarea:
hay una base de datos MASTER passwd DB, en freebsd, pero tenemos que editar con otros comandos la basde de dats maestra, una vez que se edita, con el segundo comando podemos olver a generar los archivos de /etc/passwd
/etc/shadow .
Visualizar identificadores del usuario.
w en linux para visualizar los usuarios con sesión activa en el seistema.
identificacion de usuarios no autorizados
Permisos en UNIX
user, group others.
el la gsiguiente
sgt uid-o¡o --Ñ mode
/var/bla
chown u:g
.ññ--ñ
se refleja en las variables de entorno
sudo su -
ps -auxf
muestra la tabla de los procesos
hay dos formas con octal y con g+w
para agreegar al grupo la bandera de escritura.
escenario 2
solucion 1 :
se agregan al mismo grupo inicial
gid + chmod g+s
solucion 2:
cambio manual, que es un usuario que hace un chmod
martes, 22 de octubre de 2013
Servidores IIS
Tarea WebDAV
es un sistema de archivos que se basan en web.
es como un dropbox.
Marcamos todas hasta la parte de aplicaciones.
management service si
no hay forma de actualizar IIS.
Tarea: configuraremos un webdav
para mañana. Miércoles
pone en el servidor web da acceso a una carpteta o espacio, el acceso es através de un protocolo ewb.
levantamos el servicio IIS, y le daremos publicascion con webdav y será por HTTP.
Application Pool
nos da los servicios que podemos aplicar.
Cuando se ejecutaba IIS, habia errores,
habia 2 cuentas con privilegios, si se lograba vulnerar IIS, se podía tener acceso a todo.
microsoft hizo lo siguiente.
Cuando se levantaba IIS, se levantaban todos los módulos.
provocando vectores de ataque.
haciendo algo muy parecido a Apache.
Application Pools -> son espacios en memoria, que son instancias de IIS.
Applications pools tendrá permisos.
solo se podrá ver lo que tiene acceso con Opciones avanzadas de Defautl application Pool.
con eso podemos limitar los accesos del usuario, como si fuera una jaula, para que se puedan ejecutar con solo los permisos del usuario.
se puede hacer la autenticación desde active directory.
Anonymous Authentication -> no requiere nada
ASP.NET -> es para aplicaciones hechas en asp.
Basic Authentication ->
Digest Authentication ->
Nota si el cliente pide el sitio web, y utilizamos kerberos, no se interactua con el usuario, ya que solamente pide el ticket de servicio.
la authenticación básica funciona basicamente igual -> pero no es recomendable a menos de que tengamos un canal cifrado.
lo primero que mandaremos será el usuario y la contraseña.
si el candl está cifrado no hay problema, pero si no no hay problema.
Los documentos que se trataran de llamar desde el inicio será
default html
default.asp
index.htm
index.html
la información solamente se verá desde el servicdor web.
está hecho asi para poder depurar los errores localmente, nota: se puede hacer para que se vea desde cualquier lado.
habilitaremos la opción :
Enable, para poder ver la carpeta.
reiniciamos el servicio y ya
;P
nota, no hay que habilitar las peticiones de error.
podemos agregar nuestras propias páginas de error.
con IP Address and Domain Restrictions
podemos agregar reglas, las reglas se leeran desde arriba hacia abajo.
cuando hacemos aplicaciones .NET, instala un servidor IIS pequeño para poder desarrollar las aplicaciones.
Loggin, nos indica quien se conecto, etc..
+17.04.05.png)
con formato w3c B|
nos servirá para auditar, para análisis forense etc.
Podemos habilitar extensiones específicas para el servidor.
podemos filtrar solicitudes
con expresiones regulares, Ej:
si estan pidiendo una extensión con cierto archivo, podemos crear las reglas ..
se aplica para alguna extensión, para ciertas cadenas, Ej: malware, algo como camerunes(malware), podemos crear el arreglo específico.
Puede hacerse por acciones HTTP (post, request)..
Lo mejor para hacer filtrado es mejor hacer un web application firewall.
(investigar).
SSL Settings
podemos decirle al IIS, que no sea por windows por linux, si no un certificado, podemos aceptar certificados, que no acepten, que lo ignore o que requiera un certificado, eln lugar de estar poniendo contraseña, jalamos el certificado.
Cuando modificamos la configuración, generamos los sitios para el servidor.
Podemos aplicarle configuraciones al servidor
podemos mandar los certificados al CA para que nos certifique, crearemos un certificado de dominio.
el nombre del dominio debera estar aqui
hará los procesos de CA, y lo instalará
le tendremos que dar la solicitud a la CA para que lo firme
usamos los certificados para autenticar a los usuarios
Tarea par amñana, levantar IIS,
con webDAV.
Con el sitio habilitamos el webDAV para que ciertos sitios puedan accesder.
Provar con un cliente que tenga acceso al webDAV, una vez hecho eso , con el sitio en IIS, aplicar SSL
para que podamos conectarnos con el cliente via http,
buscar Map network dilur en el cliente
la opcion nos dice que nos podemos conectar a webDAV.
y pondremos la direccion del sitio.
https:....
que el cliente se valide por certificado.
agregar el usuario a un grupo de AD, que tiene configurado el acceso al IIS.
si no tiene el certificado no se podrá conectar.
GPO
nota: nunca habilitar ésta opción.
abrir la política del dominio.
la politica de allow log que esta dentro de policies , windows settings, security settings, en local policies en user rule..
no agregarla ya que un cliente no pueda agregarlo.
lo mejor es no probarlo en el mismo, si no en otro.
nota: deshabilitar el firewall, para que tengamos menos variables.
la tarea, necesita un tiempo,
es un sistema de archivos que se basan en web.
es como un dropbox.
Marcamos todas hasta la parte de aplicaciones.
management service si
no hay forma de actualizar IIS.
Tarea: configuraremos un webdav
para mañana. Miércoles
pone en el servidor web da acceso a una carpteta o espacio, el acceso es através de un protocolo ewb.
levantamos el servicio IIS, y le daremos publicascion con webdav y será por HTTP.
Application Pool
nos da los servicios que podemos aplicar.
Cuando se ejecutaba IIS, habia errores,
habia 2 cuentas con privilegios, si se lograba vulnerar IIS, se podía tener acceso a todo.
microsoft hizo lo siguiente.
Cuando se levantaba IIS, se levantaban todos los módulos.
provocando vectores de ataque.
haciendo algo muy parecido a Apache.
Application Pools -> son espacios en memoria, que son instancias de IIS.
Applications pools tendrá permisos.
solo se podrá ver lo que tiene acceso con Opciones avanzadas de Defautl application Pool.
con eso podemos limitar los accesos del usuario, como si fuera una jaula, para que se puedan ejecutar con solo los permisos del usuario.
se puede hacer la autenticación desde active directory.
Anonymous Authentication -> no requiere nada
ASP.NET -> es para aplicaciones hechas en asp.
Basic Authentication ->
Digest Authentication ->
Nota si el cliente pide el sitio web, y utilizamos kerberos, no se interactua con el usuario, ya que solamente pide el ticket de servicio.
la authenticación básica funciona basicamente igual -> pero no es recomendable a menos de que tengamos un canal cifrado.
lo primero que mandaremos será el usuario y la contraseña.
si el candl está cifrado no hay problema, pero si no no hay problema.
Los documentos que se trataran de llamar desde el inicio será
default html
default.asp
index.htm
index.html
la información solamente se verá desde el servicdor web.
está hecho asi para poder depurar los errores localmente, nota: se puede hacer para que se vea desde cualquier lado.
habilitaremos la opción :
Enable, para poder ver la carpeta.
reiniciamos el servicio y ya
;P
nota, no hay que habilitar las peticiones de error.
podemos agregar nuestras propias páginas de error.
con IP Address and Domain Restrictions
podemos agregar reglas, las reglas se leeran desde arriba hacia abajo.
cuando hacemos aplicaciones .NET, instala un servidor IIS pequeño para poder desarrollar las aplicaciones.
Loggin, nos indica quien se conecto, etc..
+17.04.05.png)
con formato w3c B|
nos servirá para auditar, para análisis forense etc.
Podemos habilitar extensiones específicas para el servidor.
podemos filtrar solicitudes
con expresiones regulares, Ej:
si estan pidiendo una extensión con cierto archivo, podemos crear las reglas ..
se aplica para alguna extensión, para ciertas cadenas, Ej: malware, algo como camerunes(malware), podemos crear el arreglo específico.
Puede hacerse por acciones HTTP (post, request)..
Lo mejor para hacer filtrado es mejor hacer un web application firewall.
(investigar).
SSL Settings
podemos decirle al IIS, que no sea por windows por linux, si no un certificado, podemos aceptar certificados, que no acepten, que lo ignore o que requiera un certificado, eln lugar de estar poniendo contraseña, jalamos el certificado.
Cuando modificamos la configuración, generamos los sitios para el servidor.
Podemos aplicarle configuraciones al servidor
podemos mandar los certificados al CA para que nos certifique, crearemos un certificado de dominio.
el nombre del dominio debera estar aqui
hará los procesos de CA, y lo instalará
le tendremos que dar la solicitud a la CA para que lo firme
usamos los certificados para autenticar a los usuarios
con webDAV.
Con el sitio habilitamos el webDAV para que ciertos sitios puedan accesder.
Provar con un cliente que tenga acceso al webDAV, una vez hecho eso , con el sitio en IIS, aplicar SSL
para que podamos conectarnos con el cliente via http,
buscar Map network dilur en el cliente
la opcion nos dice que nos podemos conectar a webDAV.
y pondremos la direccion del sitio.
https:....
que el cliente se valide por certificado.
agregar el usuario a un grupo de AD, que tiene configurado el acceso al IIS.
si no tiene el certificado no se podrá conectar.
GPO
nota: nunca habilitar ésta opción.
abrir la política del dominio.
la politica de allow log que esta dentro de policies , windows settings, security settings, en local policies en user rule..
no agregarla ya que un cliente no pueda agregarlo.
lo mejor es no probarlo en el mismo, si no en otro.
nota: deshabilitar el firewall, para que tengamos menos variables.
la tarea, necesita un tiempo,
miércoles, 9 de octubre de 2013
AWK
actualmnte en openBSD y Linux se utiliza GAWK, que es la variante de GNU.
esta en los libros de éstos autores.
Aho, Weinberger, Kernighan
Addison -Wesley
Sintáxis:
awk -f programa [-v var=valor][archivos(s)]
awk 'programa' [-v var=valor][archivo(s)]
si le queremos enviar una variable desde la línea de comandos es con -v var=valor de la variable..
Estructura de un programa
Los programas awk son una secuencia de enunciados PATRÓN-ACCIÓN.
patrón {acción}
patrón {acción}
Patrón : Condición que debe cumplir la línea
Acción: Para que se pueda ejecutar se debe cumplir la condición.
Evaluación Patrón -Acción
Ej:
p{a}, pero se puede encontrar otras variantes, donde solamente haya patrón.
* Si no se especifica la acción, la línea se imprime.
o
* Si no se especifica patrón, la acción corresponde a todas las líneas del archivo.
----------------- - > linea 1
-----------------
si la línea 1 coincide con el patrón se ejecuta la acción.
así se ejecuta para todas la líneas del archivo.
siendo programas que procesan línea por línea.
Nota: Exísten patrones especiales(requieren acción)
BEGIN : implica que se ejecutará todo lo que hay en la acción antes de leer el archivo de entrada.
Ej:
BEGIN{a}
END: necesita forzosamente tener una acción, cuando encuentre el end of file EOF, del archivo se va a la acción de END
Ej:
END{a}
otros patronces corresponde a expresiones regulares.
/expr_reg/ : Todas las expresiones regulares se ponen entre diagonales.
patrón1,patrón2 -> Son patrones de rango. Coincide con cada línea desde una que coincida con patrón1, hasta la siguiente línea que coincida con patrón2.
no necesariamente patrón, necesita tener evaluación, normalmente son para expresiones regulares.
Nota: Dentro de los patrones se pueden tener funciones.
Ej:
a==1{a} -> si la linea se encuentra un 1 se ejecuta {a}
o
ALogin/{a=1}
a==1{a} -> con ésto se podrá ejecutar el flujo del programa.
Nota: no se necesitan declarar las variables, en el momento en que se usan exísten.
también awk inicializa las variables a 0 o cadena vacía.
* Realiza conversión automática de tipos por lo que se dice que no hay tipos.
Ej:
a=1
b=2
c=a+b
awk, se encarga de hacer las conversiones numéricas. Pero sí :
d="hola" a
entonces cuando se termine :
d=hola1 -> no interesandole si es un número, concatenando las cadenas con números o caractéres.
Ejemplo:
Se le pueden pasar argumentos, que no se consideran para inicializar, si no los toma como argumentos.
awk -f prog.awk arch1 arch2
Variables especiales
ENVIRON
FILENAME
FNR
NR
-> el separador por default de registros es el cambio de línea.
RS
conceptos a conocer -> campo registro y archivo.
campo-> una agrupación de campo, nos da un registro.
una agrupación de registro - > nos da un archivo.
Ej:
login:OUID:GID:GEO:HOME:SHELL -> son 7 campos, que nos da en conjunto un archivo, que es el passwd.
awk trabaja mucho con esos conceptos.
siendo el separador de campos es el cambio de línea.
awk es a nivel bajo, permitiendo procesar archivos.
La primera variable es FILENAME
la segunda variable es: el numero de registros que se está trabajando pero del FILENAME.
entonces se necesita saber que registro se esta procesando de que archivo, pero también se puede guardar el número de registros. etc.
de manera que se puede saber que registros se han procesado.
NR -> va cambiando conforme se va leyendo.
RS -> es el separador de entrada de registros.
División de Líneas en Campos.
por omisión, un campo es una secuencia de caracteres que no contiene espacios ni tabuladores.
FS -> nos da el valor por omisión del separador de campos de entrada.
pero si quisieramos procesar el archivo /etc/passwd.
el separador de campos sería :
pero tenemos que decirselo antes de leer la línea si no no aplica.
OFS -> variable de separador de campos de salida, que por omisión es blanco.
NF -> nos arroja el número de campos de una línea.
Ej:
1 2 3
hola como estas
cuando leamos la línea, NF - nos arrojará 3 porque son 3 campos.
otras variables especiales:
$0 -> Toda la línea
$1 -> primer campo
$NF -> Último campo
Nota: en awk podemos trabajar redireccionamiento, pero no en la línea de comandos, si no dentro del código de awk. Son muy parecidos a los redireccionamientos de shell, excepto por algunas considereaciones, pero en el momento que hacemos un redireccionamiento, se abre una archivo.
Pero si no se cierra explícitamente el redireccionamiento, el archivo se quede abierto.
Ej:
"w" > "archivo"
close("w")
la primera vez, mientras no se haga el close, el redireccionamiento no es destructivo; después de que se haga el close se hace destructivo el redireccionamiento.
Salida de datos
Función print
print expresión
Cualquier cosa que "No sea una variable" o "intstrucción" se debe poner entre comillas.
awk 'BEGIN{print "hola mundo"}'
awk '{print $1}' nomina.dat
Función printf
(imprime el formato)
printf "formato", variables
awk '{printf "%10s %10.2f\n",$1,$3}' nomina.dat
Operadores
Operadores aritméticos: +-*/%^
Operadores de asignación: =, +=, -=,*=,/=,^=
Operadores de Incremento y decremento: ++, --
Operadores de coincidencia: ~, !~
Operadores de comparación : &&, || , !
Operadores de concatenación: Espacio_en_blanco
Expresiones de condición: expresión ? Si_V: Si_F
La expresion regular se debe poner entre diagonales:
/expr_reg/
Getline
Sirve para leer una línea de datos.
No altera el flujo del progra,a
sirve para leer las lineas de datos sin pasarsela a línea de comandos.
su salida exitos es 1
error ->
Getline
lee l siguiente linea del archivo de entrada, sin alterar el flujo del programa.
Afecta las variables $0, $n, NF, NR, FNR.
getline variable -> afecta a la variable, NR, FNR.
getline < "archivo" -> Se puede redireccionar la entradad desde un archivo, Afecta a $0, $n, NF
getline < "/dev/tty" -> lee del teclado, el genérico es tty
getline < "-" -> lee de la entrada estándar.
"comando" | getline -> Ejecuta el comando y envía la siguiente línea de la salida a getline. Afecta
a $0
Ejemplos:
para el archivo frutas2
busca con $0 la coincidencia con pera, si si es la obtiene si no, imrime "Num Linea", NR que es el número de registro de la línea.
despues imprime Linea, con el contenido de la línea actual $0
Ejemplo2:
Tomando como referencia /usr/bin/awk, que es el lugar donde esta el intérprete, podemos colocarlo hasta arriba del script para que sea interpretado inmediantamente al hacer ./
cuando ejecutamos w
simplemente, nos da 4 líneas.
Ej:
awk '<- enter="" p="">>BEGIN{
>"w" | getline
> print $0
>"w" | getline
> print $0
> "w" | getline
> print $0
> "w" | getline
> print $0
> "w" | getline
> print $0
>}'
con getline, solamente se obtiene la primera línea.
despues se ejecuta otra vez w, cuando hace getline se va por la segunda línea de entrada, no por la primera.
en la 4 se termino de leer la entrada de w, pero cuando se hace la 5ta ya no hay nada, por lo tanto repite la línea anterior.
lo que se debió hacer antes de la getline.
osea en la 4 , es hacer close a w
print $0 ; close("w")
->
Arreglo
Los arreglos no se declaran, se ceran automáticamente a medida que son necesitados.
* Los arreglos se enumeran a partir de 1.
* No hay problemas de memoria contigua ya que enrealidad son variables separadas.
* Los elementos no se almacenan en un orden determinado.
los arreglos se almacenan en direferentes lugares..:
|_|
|_|
|_|
No necesariamente estan contiguos, eso viene debido a que no se declaran, por lo tanto no hay reserva de memoria.
Lo crea cuando lo va a necesitar.
Los arreglos numéricos, se enumeran a partir de 1.
es decir:
N[1]
N[2]
.. N[n]
creandolos a partir de 1, pero no es completamente cierto.
por lo tanto cuando se hace un barrido de un arreglo, awk no acsegura que muestre los elementos ordenadamente.
eso depende del control :
for i= 1 in N
print N[i]
como no le estamos dando un orden al for, puede imprimir el arreglo en desorden.
Arreglos asociativos
Una característica de awk es que los índices pueden ser un número o una cadena de caracteres e incluso ambos.
:P
Ej: N[gato]
N[perro]
por lo tanto, todos los arreglos en awk son asociativos.
Función split
siempre regreesa elementos numéricos del arreglo.
split(cadena, arreglo[,separador])
a parte de los elementos separados, los pone en un arreglo.
Ej: awkromanos.awk
la función split regresa 10, si le asignáramos eso a una variable tendría 10, a parte de crear el arreglo con los elementos numéricos
$1 > 0 && $1 < 10 -> imprime números del primer campo
Nota: el lunes empieza
Tarea: acronimo.dat o acronimos.dat
otro es datos2 y acronimos.awk
cuando corramos tenemos que correrlo asi
awk -f acronimos.awk -f acronimos datos2 -> lo que tenemos que hacer es explicar qu ehace .
es la tarea para mañana
estudiar: examen viene de 2 partes,
el la parte teórica, saca a los alumnos, bla bla, si suena el cell baja punto a tosdos D:
esta en los libros de éstos autores.
Aho, Weinberger, Kernighan
Addison -Wesley
Sintáxis:
awk -f programa [-v var=valor][archivos(s)]
awk 'programa' [-v var=valor][archivo(s)]
si le queremos enviar una variable desde la línea de comandos es con -v var=valor de la variable..
Estructura de un programa
Los programas awk son una secuencia de enunciados PATRÓN-ACCIÓN.
patrón {acción}
patrón {acción}
Patrón : Condición que debe cumplir la línea
Acción: Para que se pueda ejecutar se debe cumplir la condición.
Evaluación Patrón -Acción
Ej:
p{a}, pero se puede encontrar otras variantes, donde solamente haya patrón.
* Si no se especifica la acción, la línea se imprime.
o
* Si no se especifica patrón, la acción corresponde a todas las líneas del archivo.
----------------- - > linea 1
-----------------
si la línea 1 coincide con el patrón se ejecuta la acción.
así se ejecuta para todas la líneas del archivo.
siendo programas que procesan línea por línea.
Nota: Exísten patrones especiales(requieren acción)
BEGIN : implica que se ejecutará todo lo que hay en la acción antes de leer el archivo de entrada.
Ej:
BEGIN{a}
END: necesita forzosamente tener una acción, cuando encuentre el end of file EOF, del archivo se va a la acción de END
Ej:
END{a}
otros patronces corresponde a expresiones regulares.
/expr_reg/ : Todas las expresiones regulares se ponen entre diagonales.
patrón1,patrón2 -> Son patrones de rango. Coincide con cada línea desde una que coincida con patrón1, hasta la siguiente línea que coincida con patrón2.
no necesariamente patrón, necesita tener evaluación, normalmente son para expresiones regulares.
Nota: Dentro de los patrones se pueden tener funciones.
Ej:
a==1{a} -> si la linea se encuentra un 1 se ejecuta {a}
o
ALogin/{a=1}
a==1{a} -> con ésto se podrá ejecutar el flujo del programa.
Nota: no se necesitan declarar las variables, en el momento en que se usan exísten.
también awk inicializa las variables a 0 o cadena vacía.
* Realiza conversión automática de tipos por lo que se dice que no hay tipos.
Ej:
a=1
b=2
c=a+b
awk, se encarga de hacer las conversiones numéricas. Pero sí :
d="hola" a
entonces cuando se termine :
d=hola1 -> no interesandole si es un número, concatenando las cadenas con números o caractéres.
Ejemplo:
Se le pueden pasar argumentos, que no se consideran para inicializar, si no los toma como argumentos.
awk -f prog.awk arch1 arch2
Variables especiales
ENVIRON
FILENAME
FNR
NR
-> el separador por default de registros es el cambio de línea.
RS
conceptos a conocer -> campo registro y archivo.
campo-> una agrupación de campo, nos da un registro.
una agrupación de registro - > nos da un archivo.
Ej:
login:OUID:GID:GEO:HOME:SHELL -> son 7 campos, que nos da en conjunto un archivo, que es el passwd.
awk trabaja mucho con esos conceptos.
siendo el separador de campos es el cambio de línea.
awk es a nivel bajo, permitiendo procesar archivos.
La primera variable es FILENAME
la segunda variable es: el numero de registros que se está trabajando pero del FILENAME.
entonces se necesita saber que registro se esta procesando de que archivo, pero también se puede guardar el número de registros. etc.
de manera que se puede saber que registros se han procesado.
NR -> va cambiando conforme se va leyendo.
RS -> es el separador de entrada de registros.
División de Líneas en Campos.
por omisión, un campo es una secuencia de caracteres que no contiene espacios ni tabuladores.
FS -> nos da el valor por omisión del separador de campos de entrada.
pero si quisieramos procesar el archivo /etc/passwd.
el separador de campos sería :
pero tenemos que decirselo antes de leer la línea si no no aplica.
OFS -> variable de separador de campos de salida, que por omisión es blanco.
NF -> nos arroja el número de campos de una línea.
Ej:
1 2 3
hola como estas
cuando leamos la línea, NF - nos arrojará 3 porque son 3 campos.
otras variables especiales:
$0 -> Toda la línea
$1 -> primer campo
$NF -> Último campo
Nota: en awk podemos trabajar redireccionamiento, pero no en la línea de comandos, si no dentro del código de awk. Son muy parecidos a los redireccionamientos de shell, excepto por algunas considereaciones, pero en el momento que hacemos un redireccionamiento, se abre una archivo.
Pero si no se cierra explícitamente el redireccionamiento, el archivo se quede abierto.
Ej:
"w" > "archivo"
close("w")
la primera vez, mientras no se haga el close, el redireccionamiento no es destructivo; después de que se haga el close se hace destructivo el redireccionamiento.
Salida de datos
Función print
print expresión
Cualquier cosa que "No sea una variable" o "intstrucción" se debe poner entre comillas.
awk 'BEGIN{print "hola mundo"}'
awk '{print $1}' nomina.dat
Función printf
(imprime el formato)
printf "formato", variables
awk '{printf "%10s %10.2f\n",$1,$3}' nomina.dat
Operadores
Operadores aritméticos: +-*/%^
Operadores de asignación: =, +=, -=,*=,/=,^=
Operadores de Incremento y decremento: ++, --
Operadores de coincidencia: ~, !~
Operadores de comparación : &&, || , !
Operadores de concatenación: Espacio_en_blanco
Expresiones de condición: expresión ? Si_V: Si_F
La expresion regular se debe poner entre diagonales:
/expr_reg/
Getline
Sirve para leer una línea de datos.
No altera el flujo del progra,a
sirve para leer las lineas de datos sin pasarsela a línea de comandos.
su salida exitos es 1
error ->
Getline
lee l siguiente linea del archivo de entrada, sin alterar el flujo del programa.
Afecta las variables $0, $n, NF, NR, FNR.
getline variable -> afecta a la variable, NR, FNR.
getline < "archivo" -> Se puede redireccionar la entradad desde un archivo, Afecta a $0, $n, NF
getline < "/dev/tty" -> lee del teclado, el genérico es tty
getline < "-" -> lee de la entrada estándar.
"comando" | getline -> Ejecuta el comando y envía la siguiente línea de la salida a getline. Afecta
a $0
Ejemplos:
para el archivo frutas2
busca con $0 la coincidencia con pera, si si es la obtiene si no, imrime "Num Linea", NR que es el número de registro de la línea.
despues imprime Linea, con el contenido de la línea actual $0
Ejemplo2:
Tomando como referencia /usr/bin/awk, que es el lugar donde esta el intérprete, podemos colocarlo hasta arriba del script para que sea interpretado inmediantamente al hacer ./
cuando ejecutamos w
simplemente, nos da 4 líneas.
Ej:
awk '<- enter="" p="">>BEGIN{
>"w" | getline
> print $0
>"w" | getline
> print $0
> "w" | getline
> print $0
> "w" | getline
> print $0
> "w" | getline
> print $0
>}'
con getline, solamente se obtiene la primera línea.
despues se ejecuta otra vez w, cuando hace getline se va por la segunda línea de entrada, no por la primera.
en la 4 se termino de leer la entrada de w, pero cuando se hace la 5ta ya no hay nada, por lo tanto repite la línea anterior.
lo que se debió hacer antes de la getline.
osea en la 4 , es hacer close a w
print $0 ; close("w")
->
Arreglo
Los arreglos no se declaran, se ceran automáticamente a medida que son necesitados.
* Los arreglos se enumeran a partir de 1.
* No hay problemas de memoria contigua ya que enrealidad son variables separadas.
* Los elementos no se almacenan en un orden determinado.
los arreglos se almacenan en direferentes lugares..:
|_|
|_|
|_|
No necesariamente estan contiguos, eso viene debido a que no se declaran, por lo tanto no hay reserva de memoria.
Lo crea cuando lo va a necesitar.
Los arreglos numéricos, se enumeran a partir de 1.
es decir:
N[1]
N[2]
.. N[n]
creandolos a partir de 1, pero no es completamente cierto.
por lo tanto cuando se hace un barrido de un arreglo, awk no acsegura que muestre los elementos ordenadamente.
eso depende del control :
for i= 1 in N
print N[i]
como no le estamos dando un orden al for, puede imprimir el arreglo en desorden.
Arreglos asociativos
Una característica de awk es que los índices pueden ser un número o una cadena de caracteres e incluso ambos.
:P
Ej: N[gato]
N[perro]
por lo tanto, todos los arreglos en awk son asociativos.
Función split
siempre regreesa elementos numéricos del arreglo.
split(cadena, arreglo[,separador])
a parte de los elementos separados, los pone en un arreglo.
Ej: awkromanos.awk
la función split regresa 10, si le asignáramos eso a una variable tendría 10, a parte de crear el arreglo con los elementos numéricos
$1 > 0 && $1 < 10 -> imprime números del primer campo
Nota: el lunes empieza
Tarea: acronimo.dat o acronimos.dat
otro es datos2 y acronimos.awk
cuando corramos tenemos que correrlo asi
awk -f acronimos.awk -f acronimos datos2 -> lo que tenemos que hacer es explicar qu ehace .
es la tarea para mañana
estudiar: examen viene de 2 partes,
el la parte teórica, saca a los alumnos, bla bla, si suena el cell baja punto a tosdos D:
martes, 8 de octubre de 2013
Sed Tutorial
SED
opera líea por línea por lo que no hay restricciones en cuanto al tamaño de los archivos.
no importa si el archivo tiene muchas líneas, solamente se ocupará en un momento el espacio en memoria, tiene ventajas.
Es un editor no interactivo, ya que funciona direfente.
Sed permite editar un archivo en modo linea de comandos sin interactuar con el archivo, le daremos comandos y al final nos regresará los resultados del archivo.
no modifica al archivo si no modifica a lo que se encuentra en memoria y lo mandará a la salida estándar.
La entrada estándar, puede ser un archivo, puede ser una línea, donde se tendrán n líneas.
habrá una entrada de memoria que tendrá una entrada de patrones.
habrá una entrada de memoria que se llamará espacio de retención, que será un tipo de buffer de almcenamiento.
se podrá tomar cualquier linea de la entrada estándar y se copiará al espacio de patrones, y después se editará la línea y se enviará a la entrada estándar, puede ser un archivo o la pantalla.
Si se tendrá que lmacenar el resultado para después aplicarlo se usará el espacio de retención, y después se podrá enviar al espacio de patrones.
Sed por omisión imprime todas las líneas.
independientemente si se les aplico o no un cambio.
sed -n -> que indica no impresión, indicando lo que imprimirá solamente.
sed -e -> permite dar varios comandos a ejecutar.
sed -f .> podemos darle un archivo con comandos .
VI -> es un editor orientado a pantalla, no es un editor orientado a línea.
ed y vi son los dos editores principales en UNIX.
ed es un editor orientado a línea.
exíste una version mejorada llamada -> ex
el editor vi, tiene un modo de operación que se conoce -ex
y todos los comandos que se pueden ejecutar en vi, son comandos basados en ed, que es un editor orientado a línea.
sed es un editor de flujo, pero muchos de sus comandos funcionan muy parecido a los editores orientados a línea de UNIX.
Ej:
en vi, se pueden hacer sustituciones de una palabra por otra palabra, esas sustituciones son del editor ex, y esas sustituciones las toma sed, para trabajar.
Instrucciones de sed
sintáxis -> [dirección1 [, dirección2]] función [argumentos]
si se aplica a dirección1, la función aplica a todas las líenas que cumplan la condición.
ej:
vi frutas
si queremos borra de la linea 1,3d
el 1 es la dirección 1 , dirección2, función
Hay funciones que no necesitan argumentos, hay funciones que si necesitan argumentos.
Si no se especifican direcciones, en caso de sed, que trabaja línea por línea, la función aplica a todas las líneas de entrada.
en el caso de vi, solamente aplica a la línea donde se encuentra el prompt
es más poderoso que vi, aunque vi, permite expresiones regulares.
¿Qué puede ser una dirección?
puede ser un número decimal, que indica la posición exacta de la línea.
$ -> implica la última línea del archivo
Ej:
:.,$d -> que implica desde donde te encuentras actualmente borra, hasta el final.
/regexp/ -> asi se escriben las expresiones regulares en sed.
Ej:
sed -n '/^man/,/^na/p'
manzana
uva
naranja
sandia
fresa
kiwi
guayaba
hola
/^man/ -> es la directiva1, la directiva2 es /^na/ , después la función, siendo que la función común es imprimir.
la cual imprimira hasta naranja.
siendo el archivo original:
manzana
uva
naranja
sandía
fresa
kiwi
guayaba
hola
Ej2: sed -n '4,$p' frutas
imprimira desde la línea 4 hasta el final
Consideraciones
si antes de la letra de la función se pone un signo de admiración !, se aplica a todas las
líneas que no cumplan con las direcciones en (csh\!)
exísten delimitadoras con @/usr/local/bin/perl@ para claridad en los comandos.
Ej:
sed -n '/col/=' frutas
sed -n '/^man/=' -> que nos imprimirá en que linea se encuentra la palabra que comienza en man
funciones para edición
en Unix sólo aceptan dirección1
a\ -> agregar
i\ -> insertar
c\ -> cambiar
le podemos poner al archivo las palabras en donde queramos y lo que querramos agregar mediante los comandos anteriores con sed.
Ej:
sed '/^man/a\ <- enter="" p="">> mango' frutas (osea al archivo)
y agrregará a la palabra que comienza con man, mango
insertar es antes y añadir es después.
cambiar -> sustituye toda la línea.
el siguiente comando es borrar
sed '1d' frutas
que borra la primera línea
sed '1,3d' frutas
borra desde la línea 1 hasta la 3
sed '$d' frutas -> borra la última línea, del archivo
s [sustituir] [dirección1[,dirección2]]s/patrón/reemplazo/banderas
sed 's/ipn/IPN/g' datos
traducirá el primero por el segundo para todo el archivo, si se le quita
sed 's/ipn/IPN/' datos -> solamente lo hará para la primera ocurrencia.
para poder reemplazar es con:
sed 's@/usr/local/bin/hello@/etc/hola@' archivo
con lo anterior cambiamos por linea de comandos sin modificar al archivo y lo traducimos.
Se puede utilizar la diagonal invertida
sed 's/:/\
>/2' columnas
el archivo original fue:
1:2:3:4
el archivo después de hacer lo anterior es:
1:2
3:4
con lo anterior coloca como columnas a partir del segundo campo
->
Nota: para AWK, habrán ejemplos en el moodle.
crearemos un archivo de texto, y con la siguiente búsqueda
sed 's/Seccion [1-9]\.[1-9]/(&)/' texto.txt
donde encuentra sección1.1 & vale seccion1.1, siendo el valor poniendolo en amperstand,
Ejemplo 2:
vamos a delimitar, abriendo un paréntesis para la primera delimitación
/(.*\):\(.*\)/\2:\1/
primero:segundo
siendo la primer ocurrencia -> primero, y la segunda ocurrencia -> segundo
lo que hará será sustituir inversamente lo que tenga el archivo
\2:\1/
por lo que se necesita delimitar muy bien el archivo, lo que se quiere es simplificar de una manera sencila el intercambio del contenido de los archivo, también funciona para vi.
Etiquetas
:etiqueta -> pone un marcador en el script de sed
t[etiqueta] -> Si el resultado de una sustictución es exitoso, salta a la línea marcada con etiqueta o en su defecto al final del script.
T[etiqueta]
Ej:
calificación.txt
podemos crear archivos con extensión.sed :
ejemplo.sed
que lo que hará
lo primero que hace es tomar la primera línea de entrada:
Nombre=
a partir de [dir1,[dir2]]funcion, pero lo que tenemos aquí son funciones agrupadas.
en vez de tener una sola funcion, tendremos un conjunto de instrucciones agrupadas para la directiva Nombre.
Coincide la primera línea con la directiva Nombre?, si entonces se sustituye el patron por si mismo.
el amperstand se simplifica con la coincidencia, no haciendo ningún cambio.
despues .. fue la sustitución exitosa?, entonces fue exitosa...despues viene t, que implica ir a la etiqueta.
temrminando el archivo, pero el archivo de entrada no ha terminado, tomando la siguiente linea del archivo de entrada.
entrando con Nombre, despues se verifica, si corresponde con el primer patrón, despues viene t, para verificar, pero como no lo fue se va a s/Nombre=.* Ex=.^/& Tarea=00, que sería la segunda línea.
t pregunta de nuevo si fue exitoso, si si lo fue se va hasta el final del archivo.
& -> implica que coicida con si mismo la ocurrencia.
awk y sed funcionna muy parecido.
resumiendo, para cada línea evaluamos un lenguaje, siguiendo un flujo de arriba hacia abajo, pero si controlamos las etiquetas, podemos controlar el flujo del programa, siendo un if escondido.
Para ejecutarlo:
sed -f ejemplo.sed calificacion.txt
mandandole el archivo.sed el archivo que procesaremos.
con el segundo ejemplo, en vez de irse al final del archivo con t, se va a la etiqueta hola
tr "\t" "#" < lista | sed 's/\(.*\)#\(.*\)/\2\(\1\)/'
tr - > cambia o elimina
lo que hace es voltear el archivo, añadimos los paréntesis.
o más bien voltear los campos y colocar entre paréntesis los nombres
ctrl M, indica que hay un caracter que esta haciendo ruido,
vi
lo podemos abrir :$s/^v^M//g
capturando el ctrl M y sustituirlo por nada, para todas las líneas
Uso del espacio de retención
Ejemplo3:
el gato es bonito
el perro es bello
copia el contenido del espacio de patrones al espacio de retención
h reemplaza coel gato es bonito
coincide la primera linea con la expre regular e la primera, ??
si coincide .. comenzando con h
h dice -> copiaras todo lo que esta en el espacio de patrones al espacio de retencion, teniendo lo mismo en el espacio de patrones con el espacio de retencion.
con s/ .* ... -> se sustituye, cualquier cosa, seguido de espacio, seguido de una subcadena es espacio loque sea
con la tercera linea...
en el espacio de patrones verfifica cualquier cosa hasta El, siendo la subcadena 2, seguido de lo que sea, es... bonito, es la subcadena 3 y se sustituirá por \2 GATO \3
quedando:
EL GATO es bonito
Nota: todo lo que se hace se opera en el espacio de patrones, solamente cuando agregamos o añadimos se utiliza el espacio de retención.
Hay ejemplos, que utiliza códigos en html, que quitaremos los tags o etiquetas, obteniendo la información que se muestra por el browsers.
y todo se ocupa con el espacio de patrones y el espacio de retención
opera líea por línea por lo que no hay restricciones en cuanto al tamaño de los archivos.
no importa si el archivo tiene muchas líneas, solamente se ocupará en un momento el espacio en memoria, tiene ventajas.
Es un editor no interactivo, ya que funciona direfente.
Sed permite editar un archivo en modo linea de comandos sin interactuar con el archivo, le daremos comandos y al final nos regresará los resultados del archivo.
no modifica al archivo si no modifica a lo que se encuentra en memoria y lo mandará a la salida estándar.
La entrada estándar, puede ser un archivo, puede ser una línea, donde se tendrán n líneas.
habrá una entrada de memoria que tendrá una entrada de patrones.
habrá una entrada de memoria que se llamará espacio de retención, que será un tipo de buffer de almcenamiento.
se podrá tomar cualquier linea de la entrada estándar y se copiará al espacio de patrones, y después se editará la línea y se enviará a la entrada estándar, puede ser un archivo o la pantalla.
Si se tendrá que lmacenar el resultado para después aplicarlo se usará el espacio de retención, y después se podrá enviar al espacio de patrones.
Sed por omisión imprime todas las líneas.
independientemente si se les aplico o no un cambio.
sed -n -> que indica no impresión, indicando lo que imprimirá solamente.
sed -e -> permite dar varios comandos a ejecutar.
sed -f .> podemos darle un archivo con comandos .
VI -> es un editor orientado a pantalla, no es un editor orientado a línea.
ed y vi son los dos editores principales en UNIX.
ed es un editor orientado a línea.
exíste una version mejorada llamada -> ex
el editor vi, tiene un modo de operación que se conoce -ex
y todos los comandos que se pueden ejecutar en vi, son comandos basados en ed, que es un editor orientado a línea.
sed es un editor de flujo, pero muchos de sus comandos funcionan muy parecido a los editores orientados a línea de UNIX.
Ej:
en vi, se pueden hacer sustituciones de una palabra por otra palabra, esas sustituciones son del editor ex, y esas sustituciones las toma sed, para trabajar.
Instrucciones de sed
sintáxis -> [dirección1 [, dirección2]] función [argumentos]
si se aplica a dirección1, la función aplica a todas las líenas que cumplan la condición.
ej:
vi frutas
si queremos borra de la linea 1,3d
el 1 es la dirección 1 , dirección2, función
Hay funciones que no necesitan argumentos, hay funciones que si necesitan argumentos.
Si no se especifican direcciones, en caso de sed, que trabaja línea por línea, la función aplica a todas las líneas de entrada.
en el caso de vi, solamente aplica a la línea donde se encuentra el prompt
es más poderoso que vi, aunque vi, permite expresiones regulares.
¿Qué puede ser una dirección?
puede ser un número decimal, que indica la posición exacta de la línea.
$ -> implica la última línea del archivo
Ej:
:.,$d -> que implica desde donde te encuentras actualmente borra, hasta el final.
/regexp/ -> asi se escriben las expresiones regulares en sed.
Ej:
sed -n '/^man/,/^na/p'
manzana
uva
naranja
sandia
fresa
kiwi
guayaba
hola
/^man/ -> es la directiva1, la directiva2 es /^na/ , después la función, siendo que la función común es imprimir.
la cual imprimira hasta naranja.
siendo el archivo original:
manzana
uva
naranja
sandía
fresa
kiwi
guayaba
hola
Ej2: sed -n '4,$p' frutas
imprimira desde la línea 4 hasta el final
Consideraciones
si antes de la letra de la función se pone un signo de admiración !, se aplica a todas las
líneas que no cumplan con las direcciones en (csh\!)
exísten delimitadoras con @/usr/local/bin/perl@ para claridad en los comandos.
Ej:
sed -n '/col/=' frutas
sed -n '/^man/=' -> que nos imprimirá en que linea se encuentra la palabra que comienza en man
funciones para edición
en Unix sólo aceptan dirección1
a\ -> agregar
i\ -> insertar
c\ -> cambiar
le podemos poner al archivo las palabras en donde queramos y lo que querramos agregar mediante los comandos anteriores con sed.
Ej:
sed '/^man/a\ <- enter="" p="">> mango' frutas (osea al archivo)
y agrregará a la palabra que comienza con man, mango
insertar es antes y añadir es después.
cambiar -> sustituye toda la línea.
el siguiente comando es borrar
sed '1d' frutas
que borra la primera línea
sed '1,3d' frutas
borra desde la línea 1 hasta la 3
sed '$d' frutas -> borra la última línea, del archivo
s [sustituir] [dirección1[,dirección2]]s/patrón/reemplazo/banderas
sed 's/ipn/IPN/g' datos
traducirá el primero por el segundo para todo el archivo, si se le quita
sed 's/ipn/IPN/' datos -> solamente lo hará para la primera ocurrencia.
para poder reemplazar es con:
sed 's@/usr/local/bin/hello@/etc/hola@' archivo
con lo anterior cambiamos por linea de comandos sin modificar al archivo y lo traducimos.
Se puede utilizar la diagonal invertida
sed 's/:/\
>/2' columnas
el archivo original fue:
1:2:3:4
el archivo después de hacer lo anterior es:
1:2
3:4
con lo anterior coloca como columnas a partir del segundo campo
->
Nota: para AWK, habrán ejemplos en el moodle.
crearemos un archivo de texto, y con la siguiente búsqueda
sed 's/Seccion [1-9]\.[1-9]/(&)/' texto.txt
donde encuentra sección1.1 & vale seccion1.1, siendo el valor poniendolo en amperstand,
Ejemplo 2:
vamos a delimitar, abriendo un paréntesis para la primera delimitación
/(.*\):\(.*\)/\2:\1/
primero:segundo
siendo la primer ocurrencia -> primero, y la segunda ocurrencia -> segundo
lo que hará será sustituir inversamente lo que tenga el archivo
\2:\1/
por lo que se necesita delimitar muy bien el archivo, lo que se quiere es simplificar de una manera sencila el intercambio del contenido de los archivo, también funciona para vi.
Etiquetas
:etiqueta -> pone un marcador en el script de sed
t[etiqueta] -> Si el resultado de una sustictución es exitoso, salta a la línea marcada con etiqueta o en su defecto al final del script.
T[etiqueta]
Ej:
calificación.txt
podemos crear archivos con extensión.sed :
ejemplo.sed
que lo que hará
lo primero que hace es tomar la primera línea de entrada:
Nombre=
a partir de [dir1,[dir2]]funcion, pero lo que tenemos aquí son funciones agrupadas.
en vez de tener una sola funcion, tendremos un conjunto de instrucciones agrupadas para la directiva Nombre.
Coincide la primera línea con la directiva Nombre?, si entonces se sustituye el patron por si mismo.
el amperstand se simplifica con la coincidencia, no haciendo ningún cambio.
despues .. fue la sustitución exitosa?, entonces fue exitosa...despues viene t, que implica ir a la etiqueta.
temrminando el archivo, pero el archivo de entrada no ha terminado, tomando la siguiente linea del archivo de entrada.
entrando con Nombre, despues se verifica, si corresponde con el primer patrón, despues viene t, para verificar, pero como no lo fue se va a s/Nombre=.* Ex=.^/& Tarea=00, que sería la segunda línea.
t pregunta de nuevo si fue exitoso, si si lo fue se va hasta el final del archivo.
& -> implica que coicida con si mismo la ocurrencia.
awk y sed funcionna muy parecido.
resumiendo, para cada línea evaluamos un lenguaje, siguiendo un flujo de arriba hacia abajo, pero si controlamos las etiquetas, podemos controlar el flujo del programa, siendo un if escondido.
Para ejecutarlo:
sed -f ejemplo.sed calificacion.txt
mandandole el archivo.sed el archivo que procesaremos.
con el segundo ejemplo, en vez de irse al final del archivo con t, se va a la etiqueta hola
tr "\t" "#" < lista | sed 's/\(.*\)#\(.*\)/\2\(\1\)/'
tr - > cambia o elimina
lo que hace es voltear el archivo, añadimos los paréntesis.
o más bien voltear los campos y colocar entre paréntesis los nombres
ctrl M, indica que hay un caracter que esta haciendo ruido,
vi
lo podemos abrir :$s/^v^M//g
capturando el ctrl M y sustituirlo por nada, para todas las líneas
Uso del espacio de retención
Ejemplo3:
el gato es bonito
el perro es bello
copia el contenido del espacio de patrones al espacio de retención
h reemplaza coel gato es bonito
coincide la primera linea con la expre regular e la primera, ??
si coincide .. comenzando con h
h dice -> copiaras todo lo que esta en el espacio de patrones al espacio de retencion, teniendo lo mismo en el espacio de patrones con el espacio de retencion.
con s/ .* ... -> se sustituye, cualquier cosa, seguido de espacio, seguido de una subcadena es espacio loque sea
con la tercera linea...
en el espacio de patrones verfifica cualquier cosa hasta El, siendo la subcadena 2, seguido de lo que sea, es... bonito, es la subcadena 3 y se sustituirá por \2 GATO \3
quedando:
EL GATO es bonito
Nota: todo lo que se hace se opera en el espacio de patrones, solamente cuando agregamos o añadimos se utiliza el espacio de retención.
Hay ejemplos, que utiliza códigos en html, que quitaremos los tags o etiquetas, obteniendo la información que se muestra por el browsers.
y todo se ocupa con el espacio de patrones y el espacio de retención
miércoles, 25 de septiembre de 2013
Martes 24/9/13
Hola a todos, éstos dos días del nuevo curso que nos han estado impartiendo en DGTIC, han sido hasta cierto punto retroactivos encuanto al conocimiento, ya que hemos estado viendo las características de las diferentes redes que exísten.
Nota personal: el examen es creo en martes de la semana que viene.
Hoy vimos VLSM, y también algunos conceptos relacionados con SOC, NOC y TAC, también algunos ataques de malware como Pharming
Las tareas que han dejado han sido respecto a problemas de subnetting, como cuantas direcciones se necesitan para tantos host.
El dia de mañana haremos el enrutamiento estático y dinámico con algunos protocolos de enrutamiento de Cisco, de hecho dejó tarea de ello, que llevaramos mañana, o que lo iban a subir, pero hasta ahorita no he visto nada en el modle, por ende solamente haré la tarea en latex que dejaron, aunqeu actualmente se esta tardando como 52 minutos la descarga del maldito MacTex....
creo que si lo haré a mano.
La parte genial del curso es que me aclaró una duda respecto a como utilizar los GW y los broadcast.
ya que yo tenía una conepción diferente de ello
Las otras tareas que tengo para la semana, son la de alrato que es hacer una referencia (Olguín), hacer un programa en assembler para arqui de compus.... terminar el algoritmo del círculo, que espero ahoritra me salga en python.... también el viernes que tengo examen de criptografía y tengo los 2 exámenes de certificación de cisco... por ende si tengo mucha tarea..
pero bueno, haré aqui la de SOC, TAC y NOC.
SOC.- según ésta referencia http://www.computerns.com/network-security, menciona que un SOC es un centro de monitoreo de actividades de seguridad en la red de un cliente, que estudia críticamente diferentes anomalías detectadas, identificadas .
Los Centro de Operaciones de Seguridad se enfocan en la seguridad y la estabilidad.
NOC.- El propósito de los NOC, según ésta referencia http://www.csoonline.com/article/216884/efficiency-through-noc-soc-convergence, son los que se encargan de asegurar, "power, ping and pipe", los cuales son medidos por los SLA's (Service Level Agreements),
Nota: los NOC y SOC, tienden a compartir operaciones estructurales similares, pero difieren en que el NOC, necesita personal que sea más expertos en redes, que en SOC, que necsita más expertos en seguridad de la información.
Pharming -> según éste link : http://www.techterms.com/definition/pharming
SCADA -> http://www.engineersgarage.com/articles/scada-systems
SCADA
Nota personal: el examen es creo en martes de la semana que viene.
Hoy vimos VLSM, y también algunos conceptos relacionados con SOC, NOC y TAC, también algunos ataques de malware como Pharming
Las tareas que han dejado han sido respecto a problemas de subnetting, como cuantas direcciones se necesitan para tantos host.
El dia de mañana haremos el enrutamiento estático y dinámico con algunos protocolos de enrutamiento de Cisco, de hecho dejó tarea de ello, que llevaramos mañana, o que lo iban a subir, pero hasta ahorita no he visto nada en el modle, por ende solamente haré la tarea en latex que dejaron, aunqeu actualmente se esta tardando como 52 minutos la descarga del maldito MacTex....
creo que si lo haré a mano.
La parte genial del curso es que me aclaró una duda respecto a como utilizar los GW y los broadcast.
ya que yo tenía una conepción diferente de ello
Las otras tareas que tengo para la semana, son la de alrato que es hacer una referencia (Olguín), hacer un programa en assembler para arqui de compus.... terminar el algoritmo del círculo, que espero ahoritra me salga en python.... también el viernes que tengo examen de criptografía y tengo los 2 exámenes de certificación de cisco... por ende si tengo mucha tarea..
pero bueno, haré aqui la de SOC, TAC y NOC.
SOC.- según ésta referencia http://www.computerns.com/network-security, menciona que un SOC es un centro de monitoreo de actividades de seguridad en la red de un cliente, que estudia críticamente diferentes anomalías detectadas, identificadas .
Los Centro de Operaciones de Seguridad se enfocan en la seguridad y la estabilidad.
NOC.- El propósito de los NOC, según ésta referencia http://www.csoonline.com/article/216884/efficiency-through-noc-soc-convergence, son los que se encargan de asegurar, "power, ping and pipe", los cuales son medidos por los SLA's (Service Level Agreements),
Nota: los NOC y SOC, tienden a compartir operaciones estructurales similares, pero difieren en que el NOC, necesita personal que sea más expertos en redes, que en SOC, que necsita más expertos en seguridad de la información.
Pharming -> según éste link : http://www.techterms.com/definition/pharming
SCADA -> http://www.engineersgarage.com/articles/scada-systems
The
first push was given by the 8 and 16 bit computers called
minicomputers. The second was the microprocessors, several years later.
Computers offered flexibility in programming and communicating with
field data acquisition units that was previously being done by hard
wired equipments. This was the dawn of SCADA. Many
organizations have been involved with the standardization of SCADA
systems since then, including the IEEE, American National Standards
Institute, Electric Power Research Institute, International
Electrotechnical Commission, DNP3 Users group etc.
Elements of SCADA Systems
SCADA
monitors, controls and alarms the plant and/or regional facilities’
operating systems from a centralized location. It includes the
communication of information between a SCADA central host computer, many
scattered units and/or Programmable Logic Controllers. For example, in a
water filtration plant, the remote units measure the pressure in pipes
and report the readings to the central computer located somewhere in the
control tower. In case of any anomaly, the SCADA system would alert the
main station of the problem apprising it of other details like the
severity of the anomaly and measurement values in an organized fashion.
The systems may vary from simple, like temperature reporting in a
building to complex like monitoring the traffic on many traffic lights.
The system consists of the following elements:
1. SCADA Master Station Computer Systems:
It is the repository of the real-time or near real-time reported data
collected from the remote terminal units connected to it. It is
generally standard computer hardware equipment and very few SCADA system
suppliers have ventured out to make their own computer equipment. A few
companies like IBM and CDC did try making hardware for it, but the
effort was short lived and commercial off-the-shelf computer products
continue to be the main stay. The back end SCADA software must be able
to repeatedly poll the RTUs for data values, should have software for
their retrieval, storage and processing. The processing may include unit
conversion, cataloguing into tables etc.
2. Human-Machine Interface:
This is the eye candy part on the host station. The values that have
been stored in the host computers are presented to the human operator in
an understandable and comprehensible form using HMIs. These may provide
trending, diagnostic or management information and detailed schematics
and animations representing the current states of the machines under its
control. Pictorial representation being more understandable to humans
is the preferred form in SCADA HMIs.
UTM
ttp://www.webopedia.com/TERM/U/Unified_Threat_Management.html
SCADA
Suscribirse a:
Entradas (Atom)
Entradas populares
-
cuando terminas de desempaquetar tu programa tienes que hacer ésto para ejecutar tu programa desde consola para UbuntuUsuarios con ap...
-
/etc/passwd Version previa -> /etc/passwd- /etc/shadow Version previa -> /etc/shadow- /et...
-
hola , ps me he topado con este programa y puedo decirles que el arp poisoning realmente funciona . ARP - Address Resolution Protocol (Proto...
-
Una nueva idea se me vino a la mente, porque no programar un kernel que pueda tener una interfaz gráfica inmediata junto con este, osea (par...
-
He encontrado una página muy buena para iniciadores en la programación ksh http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html ...
-
para poder escoger tu driver en tu linux , es necesario configurar el driver a utilizar para tu targeta de sonido para ello exíste alsamixer...
-
gracias a http://zasshi-slash.blogspot.mx/2009/08/convert-vob-to-wmv-with-ffmpeg-in-linux.html que encontré este code: ffmpeg -i filenam...
-
http://jefro.wordpress.com/free-embedded-linux-training/
-
Hola de nuevo, pues he aquí, como después de 1000 años. Estoy trabajando. pero me he encontrado con problemas constantemente, con detalles...
-
OSPF flashing cards para la tesis tiempo estimado de avance 15 dias http://www.cram.com/flashcards/1-cisco-icnd2-ospf-and-rip-1709125 ...
+16.53.23.png)
+17.02.22.png)
+17.03.53.png)
+17.04.56.png)
+17.06.39.png)
+17.07.43.png)
+17.10.33.png)
+17.14.46.png)
+17.15.20.png)
+17.17.48.png)
+17.25.19.png)
+17.29.43.png)
+15.14.43.png)
+15.19.53.png)
+16.16.54.png)
+15.22.11.png)
+15.59.46.png)
+16.16.15.png)
+16.16.41.png)
+16.55.16.png)