A menudo suele suceder que insertamos un pen drive en una maquina windows y aceptamos que escanee en busca de errores. A partir de ahi nuestros archivos desaparecen. Scandisk hace una verificación de la estrtructura de archivos y si es inconsistente mueve todo a una carpeta 0000.found
y renombra los archivos.
una manera de recuperar eso archivos es con las facilidades que ofrece Linux para trabajar desde consola.
Aqui publico el script (incocncluso) a partir del cual se puede recuperar esos archivos:
#!/bin/bash
# buscar archivos pdf por meta datos
# for f in `file *|grep PDF| awk '{print $1 }'|tr -d :`; do
#buscar archivos word 2007
#for f in `file *|grep 2007+|grep Word|awk '{print $1 }'|tr -d :`; do
# buscar archivos PowerPoint
#for f in `file *|grep "Office PowerPoint"|awk '{print $1 }'|tr -d :`; do
# buscar archivos Word
#for f in `file *|grep "Office Word"|awk '{print $1 }'|tr -d :`; do
#buscar archivos Excel 2007
#for f in `file *|grep 2007+|grep Excel|awk '{print $1 }'|tr -d :`; do
#for f in `file *|grep JPEG|awk '{print $1 }'|tr -d :`; do
# buscar archivos Excel
#for f in `file *|grep "Microsoft Excel"|awk '{print $1 }'|tr -d :`; do
# buscar archivos word 10
#for f in `file *|grep "Microsoft Word 10"|awk '{print $1 }'|tr -d :`; do
# buscar archivos word 9
for f in `file *|grep "Microsoft Word 9"|awk '{print $1 }'|tr -d :`; do
NEWFILE=`echo $f | sed 's/.CHK$//'`
# renombrar los seleccionados
mv $f ../$NEWFILE.xls
done
sábado, 12 de noviembre de 2016
jueves, 9 de junio de 2016
The house of the rising sun
La versión de The House of the Rising Sun de The Animals sonaba nueva. Dave Marsh la describe como el "primer éxito de folk rock".
El escritor Ralph McLean, de la BBC, está de acuerdo con este planteamiento: "Es sin duda la primera canción folk rock", a la que calificó como "un sencillo revolucionario", agregó que "el rostro de la música moderna ha cambiado para siempre".
En algunas versiones, el tema se interpreta desde la perspectiva de una mujer que sigue a un apostador a Nueva Orleans y que termina prostituyéndose en La Casa del Sol Naciente y que aconseja, en fragmentos de la canción, no seguirle los pasos (Not to do what I have done). The Animals la interpretó desde la perspectiva de un hombre, jugador y borracho, que cuenta cómo esta casa es la perdición de varios, y cómo ha perdido su vida inmerso en pecado y miseria.
The Animals comenzó a interpretarla durante una gira de conciertos con Chuck Berry, con quien la utilizó como cierre para diferenciarse de las otras actuaciones que finalizaban con canciones rockeras.3 Generó una reacción sorprendente por parte de la audiencia, inicialmente reacia. El productor Mickie Most vio en esta versión un éxito en potencia.
Grabada en una sola toma el 18 de mayo de 1964, comienza con el famoso arpegio en la menor del guitarrista Hilton Valentine, que ha sido inspiración para muchos guitarristas. La destacada y particular ejecución vocal de Eric Burdon ha sido definida como "aulladora"," conmovedora", y "profunda y gravosa como el carbón del noreste inglés en la ciudad de Newcastle". Finalmente, el palpitante órgano de Alan Price completa el sonido de la canción.
Burdon diría tiempo después:
"Estábamos buscando una canción que captara la atención de la gente"
Lo lograron: House of the Rising Sun fue un verdadero éxito transatlántico, llegó al primer lugar en el Reino Unido (julio de 1964) y en los Estados Unidos (en septiembre, mes en que resultó ser el primer número 1 de la invasión británica que no era de The Beatles).
https://es.wikipedia.org/wiki/The_House_of_the_Rising_Sun
Hay una casa en Nueva Orleans,
la llaman "El Sol Naciente",
y ha sido la ruina de muchos pobres chicos.
Dios sabe que yo soy uno de ellos.
la llaman "El Sol Naciente",
y ha sido la ruina de muchos pobres chicos.
Dios sabe que yo soy uno de ellos.
Mi madre era sastre,
ella cosió mis nuevos pantalones vaqueros,
mi padre era un jugador,
ahí abajo en Nueva Orleans.
ella cosió mis nuevos pantalones vaqueros,
mi padre era un jugador,
ahí abajo en Nueva Orleans.
Ahora, lo único que necesita un jugador,
es una maleta y un maletero (de un coche).
Y el único momento en que está satisfecho
es cuando está en una borrachera.
es una maleta y un maletero (de un coche).
Y el único momento en que está satisfecho
es cuando está en una borrachera.
Oh madre, dile a tus hijos,
que no hagan lo que yo he hecho,
gastar sus vidas en pecado y miseria,
en la casa del sol naciente
que no hagan lo que yo he hecho,
gastar sus vidas en pecado y miseria,
en la casa del sol naciente
Bueno, tengo un pie en el andén,
el otro pie en el tren.
Voy de vuelta a Nueva Orleans,
a ponerme esa bola y esa cadena (de preso).
el otro pie en el tren.
Voy de vuelta a Nueva Orleans,
a ponerme esa bola y esa cadena (de preso).
Hay una casa en Nueva Orleans,
la llaman "el Sol Naciente",
y ha sido la ruina de muchos pobres chicos.
Y Dios, sé que yo soy uno de ellos.
la llaman "el Sol Naciente",
y ha sido la ruina de muchos pobres chicos.
Y Dios, sé que yo soy uno de ellos.
Etiquetas:
chuk berry,
folk rock,
house of the rising sun,
the animals
jueves, 7 de abril de 2016
Mikrotik Address list Limitar ancho de banda por archivos
Mikrotik dispone de la facilidad de crear listas de direcciones para manejar pool de direcciones IP.
Vamos a mejorar el script creado en esta entrada: http://jaskolowski.com.ar/2012/09/mikrotik-limitar-ancho-de-banda-por.html
generamos una nueva lista para evitar que los servidores de email caigan en la clase de bajo ancho de banda.
Para ello creamos la lista download y la lista Emails
Vamos a mejorar el script creado en esta entrada: http://jaskolowski.com.ar/2012/09/mikrotik-limitar-ancho-de-banda-por.html
generamos una nueva lista para evitar que los servidores de email caigan en la clase de bajo ancho de banda.
Para ello creamos la lista download y la lista Emails
# apr/06/2016 12:58:21 by RouterOS 5.20# software id = W5EY-LHT9#/ip firewall filter
add action=add-dst-to-address-list address-list=download \
Creamos una entrada en nuestro queue treeaddress-list-timeout=15m chain=forward content=.mpeg disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.mpg disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.dat disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.exe disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.msi disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.gz disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.bin disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.mp3 disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.zip disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.swf disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.deb disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24 \src-address-list=downloadadd action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.iso disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.avi disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.rm disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.bz2 disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.z disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.dropbox disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.psf disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=.vpx disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-dst-to-address-list address-list=download \address-list-timeout=15m chain=forward content=sphoto disabled=no \dst-address-list=!Emails protocol=tcp src-address=10.10.10.0/24add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: mail.google.com" disabled=no \src-address=172.217.28.37add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\156.56.172.28add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\65.55.77.28add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\65.55.85.12add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: hotmail.com" disabled=no src-address=\157.55.152.112add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: live.com" disabled=no src-address=\65.55.206.154add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: mail.google.com" disabled=no \src-address=172.217.28.5add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: crub.uncoma.edu.ar" disabled=no \src-address=170.210.81.23add action=add-src-to-address-list address-list=Emails address-list-timeout=\0s chain=forward comment="Email :: uncoma.edu.ar" disabled=no \src-address=170.210.81.106
# apr/07/2016 11:01:42 by RouterOS 5.20# software id = W5EY-LHT9#/queue treeadd burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \max-limit=0 name=download-files packet-mark=download-packet parent=\3QoS_down_Web priority=8 queue=default
miércoles, 9 de septiembre de 2015
Consejo Deliberante Bariloche - Migración a Software Libre
Municipalidad
de Bariloche
Contenido
MIGRACIÓN A SOFTWARE LIBRE EN EL CONSEJO MUNICIPAL DE LA CIUDAD DE BARILOCHE.
La Legislatura de
la provincia de Río Negro sanciono en el año 2012 la ley provincial
4747, la cual establece las políticas de incorporación y gestión
progresiva de Software Libre en el ámbito del Estado Provincial,
Poder Ejecutivo, Legislativo, Judicial, entes descentralizados y
empresas con
participación
estatal. Por tal motivo y siguiendo los lineamientos de la ley antes
mencionada, el Concejo Municipal de la localidad de San Carlos de
Bariloche adoptó el uso de Software Libre en el ámbito de este
organismo público municipal mediante la ordenanza 2338-CM-13. Con
este y otros
avances que se
están realizando en materia de cambios; la Provincia de Río Negro
se convierte en una de las pioneras junto con Buenos Aires y Santa Fe
en adoptar e impulsar la migración a Software Libre en la
administración publica.
LOS MOTIVOS PARA CAMBIAR A SOFTWARE LIBRE.
Los motivos para
llegar a esta decisión son varios, pero se destaca que el software
libre tiene un enorme potencial en lo que respecta al desarrollo y la
investigación del software en la sociedad. Tanto universidades,
empresas y particulares; son algunos de los que día a día trabajan
para optimizar las funciones de los distintos software para su uso
cotidiano, todo esto sin las
barreras que el
software privativo impone. Dentro de esto podemos destacar las
siguientes características:
-Independencia tecnológica:
Mediante el uso de
software libre, el estado deja de tener sus sistemas controlados por
una entidad externa (con frecuencia empresas extranjeras). De esta
forma rompe la dependencia tecnológica que lo tiene actualmente
atado y obtiene las libertades que el software libre otorga. Además
al migrar a este sistema, existirán requerimientos de aplicaciones
específicas que se deben realizar mediante la inversión en materia
tecnológica por parte de empresas nacionales y cooperativas que
comparten los principios de participación; solidaridad y desarrollo
para comunidad.
-Control de la información:
el uso del software
libre permite saber exactamente las funciones que realiza un
programa, qué tipo de información maneja y cómo lo hace. La
transparencia en estos aspectos garantiza la seguridad en el
tratamiento de los datos, lo que resulta esencial para un Estado;
como es resguardar su información. En el software propietario, este
principio de transparencia no está garantizado porque al no tener
acceso al código fuente de los programas, no se sabe con certeza si
posee funcionalidades que facilitarían el envío de los datos
privados a otros equipos u otros sistemas.
-Economía:
Además hoy en día
está la posibilidad de adquirir software libre sin necesidad de
realizar un gasto económico. Si bien la cuestión económica nunca
fue fijada como concepto inicial en lo que es el software libre, es
un hecho que en los sitios donde se utiliza este sistema se obtiene
una ventaja al no tener que abonar licencias de software. El ahorro
que puede conseguirse es
constante ya que no
se generan los gastos extras que existirían al tener que renovar o
actualizar las licencias en las distintas aplicaciones propietarias.
-Reutilización:
Otra de las ventajas
comparativas que tiene es que aquellos equipos que han sido
considerados obsoletos pueden volverse nuevamente funcionales con la
utilización de distribuciones livianas, pensadas por sus
desarrolladores para estos equipos; que poseen las mismas
prestaciones que en cuanto a software se refiere.
-Legalidad:
el Estado debe
preocuparse de dar alternativas que permitan romper la dependencia
tecnológica en la que nos encontramos, así como a los problemas que
de ello se derivan, como la situación de ilegalidad que implica
utilizar programas sin licencias. Esa alternativa de uso informático
es el denominado software libre. Llamado así precisamente porque se
basa en el
libre empleo de los
programas informáticos.
Referentes
Los referentes para
la realización, promulgación y posterior implementación de la
Ordenanza municipal son:
Autora: Concejal
Carmen Giménez (AFSP).
Colaboradores:
Mariángeles Dallavía, Limay Brouckaert y Richard Gavini
(Departamento de Informática y Digesto).
PROCESO DE MIGRACIÓN Y SOFTWARE UTILIZADO.
Una vez promulgada
la ordenanza municipal se comenzó con el proceso de migración; para
ello se llamo a licitación publica para seleccionar la empresa que
se encargaría de realizar el trabajo. Así fue que en el mes de
diciembre de 2013, Ramón Chiocconi, presidente del Consejo de
municipal de Bariloche, firmó un convenio con el grupo
precooperativo Coopetica para llevar adelante
todo lo necesario
para la migración a GNU-Trisquel (SO elegido) en ese organismo
público. El software elegido como Sistema Operativo para los equipos
fue la distribución GNU/Trisquel versión Toutatis 6.0 LTS; la cual
utiliza el sistema operativo GNU con el kernel Linux. Esta distro
esta incluida por la Free Software Foundation en la lista de
distribuciones GNU/Linux 100% libres disponibles en el website de
GNU, siguiendo el proceso de verificación para asegurar el
compromiso del equipo de desarrollo de Trisquel y su comunidad para
promover y distribuir tan solo software 100% libre. A continuación
especificare algunas de las características principales que la
destacan:
-Paquetes disponibles:
Para la gestión de
paquetes utiliza dpkg y como método de actualización usa APT. Fue
inicialmente desarrollada como una distribución basada en Debian
pero los repositorios se cambiaron por los de Ubuntu. El proyecto
hospeda sus propios repositorios, que derivan de los
"main" y
"universe" de Ubuntu, pero se ha eliminado todo el software
privativo; además de que se ha sustituido el kernel Linux original
por la versión sin firmware privativo llamada Linux-libre.
-Fácil utilización:
esta distribución
tiene varias versiones destinadas a distintos requerimientos pero la
principal que está diseñada para uso doméstico, incluye
herramientas de red, multimedia, software de diseño y ofimática,
así como algunos juegos. Además incluye una aplicación de media
center capaz de
reproducir DVD protegidos y la mayoría de los formatos de vídeo y
audio.
-Versiones estables:
desde la versión
Toutais no se realizan lanzamientos regulares STS; sino que se
centran solo en el desarrollo y liberación de versiones de soporte
extendido a largo plazo o LTS.
Algunos de los programas utilizados para la administración en el Concejo Municipal de Bariloche son:
-Navegadores web:
Abrowser (basado en Mozilla Firefox), Konqueror y Epiphany.
-Ofimática:
LibreOffice y OpenOffice (Por defecto).
-Complemento para
Youtube: utiliza HTML5 y el formato WebM ya que Adobe Flash es
propietario.
-Entorno de
escritorio: por defecto viene con GNOME y LXDE.
-Cliente de Correo
y Mensajería Instantánea: Evolution y pidgin.
-Cliente de
Escritorio remoto: Remmina.
-Visor de imágenes:
Gimp y gThumb.
-Reproducción
multimedia: Exaile Music player para reproducir audio y Totem para
los vídeos.
DIFICULTADES EN EL USO DE SOFTWARE LIBRE.
Las principales
dificultades que se presentaron fueron en torno a los siguientes
aspectos:
Compatibilidad de formatos:
esto problema se da
mayormente en los documentos de texto (generalmente creados con
OpenOffice y LibreOffice), ya que al tratar de abrirlos con
Microsoft Word da un mensaje de error o se pierden datos. Pero está
claro que si Microsoft Word creara sus documentos con un formato
abierto (o público) esto no sucedería.
Mayores costos de implantación (no directamente):
dado que el
software constituye "algo nuevo", ello supone afrontar un
costo de aprendizaje, de instalación, de migración, de
interoperabilidad, etc; cuya cuantía puede verse disminuida por
mayor facilidad en las instalaciones; además del uso de
emuladores cuando
se trata de aplicaciones especificas.
Rechazo por parte de los usuarios:
Al principio se
produce un rechazo y quejas por parte de los usuarios por no conocer
en profundidad el nuevo software instalado. Además de tener que
acostumbrarse a las funcionalidades y aspectos generales de los
programas que utilizan cotidianamente.
Problemas multimedia:
Poca estabilidad y
flexibilidad en el campo de multimedia y juegos.
Incompatibilidad con algunos equipos:
Menor
compatibilidad con el hardware; aunque esto se produjo en casos muy
particulares.
Aun así se
implemento con éxito y hoy Bariloche se encuentra como unas de las
ciudades pioneras en la implementación de distribuciones 100 %
libres en la Argentina; que demuestra una vez más que se puede
cambiar y conseguir las mismas funcionalidades por el camino de la
libertad de software.
Etiquetas:
bariloche,
consejo,
deliberante,
implantación,
libre,
migrar,
software
martes, 25 de agosto de 2015
Ubuntu server 14.04 LTS VirtualBox vdi imagen de 170MB
Ubuntu server dispone de la opción al momento de instalarse, en un host ubuntu, de optar por una instalación mínima para Máquina Virtual.
Cualquier imagen que uno quiera bajar de los mirrors oficiales de ubuntu pesa entre 1.8GB y 2.5GB.
Ante esta situación, he decidido publicar una imagen de disco virtual (vdi) de un sistema ubuntu server en su instalación básica. El tamaño del mismo, comprimido con 7zip es de 176MB. Obviamente algo más rápido y sencillo para descargarse.
El usuario administrador es "ubuntu" y la clave "ubuntu"
DESCARGAR
Para utilizarlo, lanzamos virtualbox y creamos una nueva VM
Hemos elegído "ubuntu14" por la versión del mismo pero es indistinto el nombre a usar.
Aceptamos las opciones por defecto hasta llegar a la opción de discos.
Aquí seleccionamos un disco existente y desde el icono de carpeta buscamos la imagen .vdi descargada y descomprimida.
NOTA:
Para tener ordenado el sistema de discos de virtualbox es aconsejable hacer lo siguiente:
a) La imagen descargada en formato 7z la descomprimimos.
b) al hacerlo seleccionamos extraerlo en el directorio creado por virtualbox en el paso anterior que en nuestro caso es "ubuntu14" y esta en nuestra carpeta personal/VirtualBox VMs/ubuntu14/
Seleccionamos la imagen que acabamos de extraer y creamos la VM
Una vez terminado iniciamos la nueva VM y en el login ponemos usario: ubuntu password: ubuntu
Es el único usuario y por tanto el administrador del sistema
Cualquier imagen que uno quiera bajar de los mirrors oficiales de ubuntu pesa entre 1.8GB y 2.5GB.
Ante esta situación, he decidido publicar una imagen de disco virtual (vdi) de un sistema ubuntu server en su instalación básica. El tamaño del mismo, comprimido con 7zip es de 176MB. Obviamente algo más rápido y sencillo para descargarse.
El usuario administrador es "ubuntu" y la clave "ubuntu"
DESCARGAR
Para utilizarlo, lanzamos virtualbox y creamos una nueva VM
Hemos elegído "ubuntu14" por la versión del mismo pero es indistinto el nombre a usar.
Aceptamos las opciones por defecto hasta llegar a la opción de discos.
Aquí seleccionamos un disco existente y desde el icono de carpeta buscamos la imagen .vdi descargada y descomprimida.
NOTA:
Para tener ordenado el sistema de discos de virtualbox es aconsejable hacer lo siguiente:
a) La imagen descargada en formato 7z la descomprimimos.
b) al hacerlo seleccionamos extraerlo en el directorio creado por virtualbox en el paso anterior que en nuestro caso es "ubuntu14" y esta en nuestra carpeta personal/VirtualBox VMs/ubuntu14/
Seleccionamos la imagen que acabamos de extraer y creamos la VM
Una vez terminado iniciamos la nueva VM y en el login ponemos usario: ubuntu password: ubuntu
Es el único usuario y por tanto el administrador del sistema
sábado, 15 de agosto de 2015
Convertir base de datos de texto a csv
Seguramente en los próximos años, cuando lea este post, terminaré lamentando mi ignorancia en el tema,
O, posiblemente, encuentre aquí la "chuleta" que me permita salir del paso.
Tarea número 1: aprender a usar sed. Claramente es la solución a este problema pero mi manejo del mismo es terriblemente básico.
Aquí el escenario:
Tengo un extracto de un sistema de biblioteca (OMP) que por las limitaciones del mismo no llega a cumplir las necesidades del momento (no se puede filtrar la salida por campos, no se puede seleccionar períodos, no se puede, no se puede, etc)
De este extracto, que termina siendo una página html con formato de base de datos semejante a vcf, tengo que obtener al menos un archivo csv.
Todo parece muy sencillo pero sin conocimiento no hay nigún programa ni conversor en linea que resuelva la necesidad.
Asi es que, de un archivo que tiene este formato:
la forma en que lo logré es la siguiente:
quitamos las lineas vacías:
Sacamos aquellos campos que generan conflicto y rompen el loop:
concatenamos los campos separandolos con el caracter "@"
Depuramos columnas con desprolijidades
______________________________________________________
Esto no es un tutorial de "copy&paste" sino una bitacora que puede servir de ayuda
Fuentes:
https://jinetedeldragon.wordpress.com/2009/06/22/sed-en-una-linea-sed-one-liners-parte-i/
O, posiblemente, encuentre aquí la "chuleta" que me permita salir del paso.
Tarea número 1: aprender a usar sed. Claramente es la solución a este problema pero mi manejo del mismo es terriblemente básico.
Aquí el escenario:
Tengo un extracto de un sistema de biblioteca (OMP) que por las limitaciones del mismo no llega a cumplir las necesidades del momento (no se puede filtrar la salida por campos, no se puede seleccionar períodos, no se puede, no se puede, etc)
De este extracto, que termina siendo una página html con formato de base de datos semejante a vcf, tengo que obtener al menos un archivo csv.
Todo parece muy sencillo pero sin conocimiento no hay nigún programa ni conversor en linea que resuelva la necesidad.
Asi es que, de un archivo que tiene este formato:
Tengo que obtener un archivo de campos separados por comas.TextoTL : 574.526.323 A327 Resultado 1 de 179Autor : Albariño, Ricardo JTítulo : Análisis de la fracción macrozoobentónica en un cuerpo lótico andinoOcultar DetallesInstitución : Universidad Nacional del Comahue, Centro Regional Universitario BarilocheCiudad : San Carlos de BarilocheAño : 1994Páginas : 66 pDescriptores : LIMNOLOGIA - PATAGONIA - TL -Grado Académico : TL.
la forma en que lo logré es la siguiente:
quitamos las lineas vacías:
cat graduados.txt |sed -e '/^$/d'>grad.txt
Sacamos aquellos campos que generan conflicto y rompen el loop:
grep -v Editorial grad.txt|grep -v Ciudad|grep -v Ocultar|grep -v Páginas>grad1.txt
concatenamos los campos separandolos con el caracter "@"
cat grad1.txt|sed '$!N;s/\n/@/;$!N;s/\n/@/;$!N;s/\n/@/;$!N;s/\n/@/;$!N;s/\n/@/;$!N;s/\n/@/;'>grad2.txt
Depuramos columnas con desprolijidades
cat sacar.txt |awk '{print $1,$2,$7}'Y ya tenemos nuestra base de datos para manippularla a placer y hacer estadísticas, etc,etc.
______________________________________________________
Esto no es un tutorial de "copy&paste" sino una bitacora que puede servir de ayuda
Fuentes:
https://jinetedeldragon.wordpress.com/2009/06/22/sed-en-una-linea-sed-one-liners-parte-i/
jueves, 9 de julio de 2015
HFSC. El secreto mejor guardado de Linux controlando el tráfico
La siguiente es una traducción a español del la introducción al script HFSC-SHAPE pubicado por Bradoaks en github
#!/bin/bash
# Como la gente de "bufferbloat" ha recientemente re-descubierto y / o más ampliamente
# publicitado, los algoritmos para evitar la congestión (como las que se encuentran en TCP) hacen
# Un gran trabajo permitiendo a los puntos finales de la red negociar las tasas de transferencia que
# Maximizan el uso de ancho de banda de un enlace sin penalizar indebidamente ningún stream.
# Esto permite a los bulk-stream utilizar el máximo disponible de Ancho de banda
# sin afectar la latencia del non-bulk (por ejemplo stream interactivo)
#
# En otras palabras, TCP le permite tener su pastel y comérselo también - a la vez Descargas
# rápidas y baja latencia, todo al mismo tiempo.
# Sin embargo, esto sólo funciona si los Algoritmos para evitar la congestión de TCP
# antes mencionada realmente funcionan. El método más fiable de señalización de
# Congestión es descartar paquetes. (Hay otras maneras, tales como ECN, pero
# Lamentablemente todavía no están en amplio uso.)
# Descartar paquetes para que la red funcione mejor es un poco contra-intuitivo.
# Pero, así es como funciona TCP. Y si uno se aprovecha de eso, puede hacer que
# TCP funcione muy bien.
# Descartar paquetes llama rapidamente la atención de TCP. El criterio de valoración del envío
# es revisado para evitar una mayor congestión de la red. En otras palabras, si la
# Descarga rápida se ralentiza se baja la velocidad de envío y, siempre y cuando no haya más congestión,
# El que envia aumenta gradualmente la velocidad de transferencia repitiendo el ciclo.
# Se puede dar una explicación más compleja que esta, pero el Punto principal es:
# descartar paquetes cuando hay congestión es bueno.
# control de tráfico es reducir la velocidad y / o descartar (o marcado ECN) paquetes.
# La cosa es que, es mucho mejor para la latencia simplemente descartar paquetes
# que frenarlos. Linux tiene un par de cotroladores de tráfico que no dudan
# en descartar paquetes. Uno de los más conocido es TBF "Token Bucket Filter".
# Normalmente se ralentizan paquetes a una tasa específica. Pero también acepta una opción
# de "límite" para especificar el número máximo de paquetes de Cola. Cuando se supera
# el límite, los paquetes se descartan.
# El Algoritmo "tail-drop" de TBF es en realidad uno de los peores tipos de (AQM)
# "Gestión de cola activa" que se puede hacer. sin embargo, este puede hacer
# Una gran diferencia. Aplicando solo TBF (con un límite lo suficientemente corto) puede hacer un
# enlace de alta latencia utilizable de nuevo en poco tiempo.
# La gran desventaja de TBF es que es un shaper "sin clases". Eso significa que
# No se puede dar prioridad a un flujo TCP sobre otro. Ahí es donde entra HTB, la
# Hierarchical Token Bucket. HTB utiliza el mismo algoritmo general como
# TBF al mismo tiempo que le permite filtrar el tráfico específico de colas de prioridad.
# Pero HTB tiene una gran debilidad: no tiene una buena y fácil forma de especificar un
# límite de Cola como sí TBF. Eso significa que, en comparación con TBF, HTB opta por
# ralentizar paquetes en lugar de descartarlos. lo cual no es bueno para la latencia.
# Así que ahora llegamos al secreto mejor guardado de Linux controlando el tráfico: el shaper HFSC.
# HFSC significa "Curva jerárquica Justa de Servicio". La implementación en Linux es tremendamente
# compleja, lo suficiente como para tener una pregunta de 9 páginas en serverfault
# ( http://serverfault.com/questions/105014/does-anyone-really-understand-how-hfsc-scheduling-in-linux-bsd-works ).
# No obstante, HFSC puede entenderse de una manera simplificada como HTB con límites.
# HFSC le permite clasificar el tráfico (como HTB, a diferencia de TBF), pero también puede
# descartar paquetes (a diferencia de HTB, como TBF).
# HFSC hace un gran trabajo al mantener una baja latencia. Con ella, es posible
# Saturar totalmente un enlace mientras se mantiene una sesión de trafico interactivo .
# Es el santo grial de la modulación del tráfico, y esta en los kernel existentes.
# Para obtener los mejores resultados, HFSC debe combinarse con SFQ (Stochatic
# Fairness Queueing) y opcionalmente un filtro de entrada. Si los tres se utilizan,
# Es posible mantener sesiones interactivas de baja latencia, incluso sin ningúna
# Priorización de tráfico. Si además añadimos priorización entonces maximizamos la
# Interactividad.
# Here's how it's done:
# set this to your internet-facing network interface:
WAN_INTERFACE=eth1
# set this to your local network interface:
LAN_INTERFACE=eth0
# how fast is your downlink?
MAX_DOWNRATE=2550kbit
# how close should we get to max down? e.g. 90%
USE_DOWNPERCENT=0.90
# how fast is your uplink?
MAX_UPRATE=1792kbit
# how close should we get to max up? e.g. 80%
USE_UPPERCENT=0.80
# what port do you want to prioritize? e.g. for ssh, use 22
INTERACTIVE_PORT=22
## now for the magic
# remove any existing qdiscs
/sbin/tc qdisc del dev $WAN_INTERFACE root 2> /dev/null
/sbin/tc qdisc del dev $WAN_INTERFACE ingress 2> /dev/null
/sbin/tc qdisc del dev $LAN_INTERFACE root 2> /dev/null
/sbin/tc qdisc del dev $LAN_INTERFACE ingress 2> /dev/null
# computations
MAX_UPNUM=`echo $MAX_UPRATE | sed 's/[^0-9]//g'`
MAX_UPBASE=`echo $MAX_UPRATE | sed 's/[0-9]//g'`
MAX_DOWNNUM=`echo $MAX_DOWNRATE | sed 's/[^0-9]//g'`
MAX_DOWNBASE=`echo $MAX_DOWNRATE | sed 's/[0-9]//g'`
NEAR_MAX_UPNUM=`echo "$MAX_UPNUM * $USE_UPPERCENT" | bc | xargs printf "%.0f"`
NEAR_MAX_UPRATE="${NEAR_MAX_UPNUM}${MAX_UPBASE}"
NEAR_MAX_DOWNNUM=`echo "$MAX_DOWNNUM * $USE_DOWNPERCENT" | bc | xargs printf "%.0f"`
NEAR_MAX_DOWNRATE="${NEAR_MAX_DOWNNUM}${MAX_DOWNBASE}"
HALF_MAXUPNUM=$(( $MAX_UPNUM / 2 ))
HALF_MAXUP="${HALF_MAXUPNUM}${MAX_UPBASE}"
HALF_MAXDOWNNUM=$(( $MAX_DOWNNUM / 2 ))
HALF_MAXDOWN="${HALF_MAXDOWNNUM}${MAX_DOWNBASE}"
# install HFSC under WAN to limit upload
/sbin/tc qdisc add dev $WAN_INTERFACE root handle 1: hfsc default 11
/sbin/tc class add dev $WAN_INTERFACE parent 1: classid 1:1 hfsc sc rate $NEAR_MAX_UPRATE ul rate $NEAR_MAX_UPRATE
/sbin/tc class add dev $WAN_INTERFACE parent 1:1 classid 1:10 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXUP ul rate $NEAR_MAX_UPRATE
/sbin/tc class add dev $WAN_INTERFACE parent 1:1 classid 1:11 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXUP ul rate $HALF_MAXUP
# prioritize interactive ports
/sbin/tc filter add dev $WAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid 1:10
/sbin/tc filter add dev $WAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid 1:10
# add SFQ
/sbin/tc qdisc add dev $WAN_INTERFACE parent 1:10 handle 30: sfq perturb 10
/sbin/tc qdisc add dev $WAN_INTERFACE parent 1:11 handle 40: sfq perturb 10
# install ingress filter to limit download to 97% max
MAX_DOWNRATE_INGRESSNUM=`echo "$MAX_DOWNNUM * 0.97" | bc | xargs printf "%.0f"`
MAX_DOWNRATE_INGRESS="${MAX_DOWNRATE_INGRESSNUM}${MAX_DOWNBASE}"
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $MAX_DOWNRATE_INGRESS burst 20k drop flowid :2
# install HFSC under LAN to limit download
/sbin/tc qdisc add dev $LAN_INTERFACE root handle 1: hfsc default 11
/sbin/tc class add dev $LAN_INTERFACE parent 1: classid 1:1 hfsc sc rate 1000mbit ul rate 1000mbit
/sbin/tc class add dev $LAN_INTERFACE parent 1:1 classid 1:10 hfsc sc umax 1540 dmax 5ms rate 900mbit ul rate 900mbit
/sbin/tc class add dev $LAN_INTERFACE parent 1:1 classid 1:11 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXDOWN ul rate $NEAR_MAX_DOWNRATE
# prioritize interactive ports
/sbin/tc filter add dev $LAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid 1:10
/sbin/tc filter add dev $LAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid 1:10
# add SFQ
/sbin/tc qdisc add dev $LAN_INTERFACE parent 1:10 handle 30: sfq perturb 10
/sbin/tc qdisc add dev $LAN_INTERFACE parent 1:11 handle 40: sfq perturb 10
#!/bin/bash
# Como la gente de "bufferbloat" ha recientemente re-descubierto y / o más ampliamente
# publicitado, los algoritmos para evitar la congestión (como las que se encuentran en TCP) hacen
# Un gran trabajo permitiendo a los puntos finales de la red negociar las tasas de transferencia que
# Maximizan el uso de ancho de banda de un enlace sin penalizar indebidamente ningún stream.
# Esto permite a los bulk-stream utilizar el máximo disponible de Ancho de banda
# sin afectar la latencia del non-bulk (por ejemplo stream interactivo)
#
# En otras palabras, TCP le permite tener su pastel y comérselo también - a la vez Descargas
# rápidas y baja latencia, todo al mismo tiempo.
# Sin embargo, esto sólo funciona si los Algoritmos para evitar la congestión de TCP
# antes mencionada realmente funcionan. El método más fiable de señalización de
# Congestión es descartar paquetes. (Hay otras maneras, tales como ECN, pero
# Lamentablemente todavía no están en amplio uso.)
# Descartar paquetes para que la red funcione mejor es un poco contra-intuitivo.
# Pero, así es como funciona TCP. Y si uno se aprovecha de eso, puede hacer que
# TCP funcione muy bien.
# Descartar paquetes llama rapidamente la atención de TCP. El criterio de valoración del envío
# es revisado para evitar una mayor congestión de la red. En otras palabras, si la
# Descarga rápida se ralentiza se baja la velocidad de envío y, siempre y cuando no haya más congestión,
# El que envia aumenta gradualmente la velocidad de transferencia repitiendo el ciclo.
# Se puede dar una explicación más compleja que esta, pero el Punto principal es:
# descartar paquetes cuando hay congestión es bueno.
# control de tráfico es reducir la velocidad y / o descartar (o marcado ECN) paquetes.
# La cosa es que, es mucho mejor para la latencia simplemente descartar paquetes
# que frenarlos. Linux tiene un par de cotroladores de tráfico que no dudan
# en descartar paquetes. Uno de los más conocido es TBF "Token Bucket Filter".
# Normalmente se ralentizan paquetes a una tasa específica. Pero también acepta una opción
# de "límite" para especificar el número máximo de paquetes de Cola. Cuando se supera
# el límite, los paquetes se descartan.
# El Algoritmo "tail-drop" de TBF es en realidad uno de los peores tipos de (AQM)
# "Gestión de cola activa" que se puede hacer. sin embargo, este puede hacer
# Una gran diferencia. Aplicando solo TBF (con un límite lo suficientemente corto) puede hacer un
# enlace de alta latencia utilizable de nuevo en poco tiempo.
# La gran desventaja de TBF es que es un shaper "sin clases". Eso significa que
# No se puede dar prioridad a un flujo TCP sobre otro. Ahí es donde entra HTB, la
# Hierarchical Token Bucket. HTB utiliza el mismo algoritmo general como
# TBF al mismo tiempo que le permite filtrar el tráfico específico de colas de prioridad.
# Pero HTB tiene una gran debilidad: no tiene una buena y fácil forma de especificar un
# límite de Cola como sí TBF. Eso significa que, en comparación con TBF, HTB opta por
# ralentizar paquetes en lugar de descartarlos. lo cual no es bueno para la latencia.
# Así que ahora llegamos al secreto mejor guardado de Linux controlando el tráfico: el shaper HFSC.
# HFSC significa "Curva jerárquica Justa de Servicio". La implementación en Linux es tremendamente
# compleja, lo suficiente como para tener una pregunta de 9 páginas en serverfault
# ( http://serverfault.com/questions/105014/does-anyone-really-understand-how-hfsc-scheduling-in-linux-bsd-works ).
# No obstante, HFSC puede entenderse de una manera simplificada como HTB con límites.
# HFSC le permite clasificar el tráfico (como HTB, a diferencia de TBF), pero también puede
# descartar paquetes (a diferencia de HTB, como TBF).
# HFSC hace un gran trabajo al mantener una baja latencia. Con ella, es posible
# Saturar totalmente un enlace mientras se mantiene una sesión de trafico interactivo .
# Es el santo grial de la modulación del tráfico, y esta en los kernel existentes.
# Para obtener los mejores resultados, HFSC debe combinarse con SFQ (Stochatic
# Fairness Queueing) y opcionalmente un filtro de entrada. Si los tres se utilizan,
# Es posible mantener sesiones interactivas de baja latencia, incluso sin ningúna
# Priorización de tráfico. Si además añadimos priorización entonces maximizamos la
# Interactividad.
# Here's how it's done:
# set this to your internet-facing network interface:
WAN_INTERFACE=eth1
# set this to your local network interface:
LAN_INTERFACE=eth0
# how fast is your downlink?
MAX_DOWNRATE=2550kbit
# how close should we get to max down? e.g. 90%
USE_DOWNPERCENT=0.90
# how fast is your uplink?
MAX_UPRATE=1792kbit
# how close should we get to max up? e.g. 80%
USE_UPPERCENT=0.80
# what port do you want to prioritize? e.g. for ssh, use 22
INTERACTIVE_PORT=22
## now for the magic
# remove any existing qdiscs
/sbin/tc qdisc del dev $WAN_INTERFACE root 2> /dev/null
/sbin/tc qdisc del dev $WAN_INTERFACE ingress 2> /dev/null
/sbin/tc qdisc del dev $LAN_INTERFACE root 2> /dev/null
/sbin/tc qdisc del dev $LAN_INTERFACE ingress 2> /dev/null
# computations
MAX_UPNUM=`echo $MAX_UPRATE | sed 's/[^0-9]//g'`
MAX_UPBASE=`echo $MAX_UPRATE | sed 's/[0-9]//g'`
MAX_DOWNNUM=`echo $MAX_DOWNRATE | sed 's/[^0-9]//g'`
MAX_DOWNBASE=`echo $MAX_DOWNRATE | sed 's/[0-9]//g'`
NEAR_MAX_UPNUM=`echo "$MAX_UPNUM * $USE_UPPERCENT" | bc | xargs printf "%.0f"`
NEAR_MAX_UPRATE="${NEAR_MAX_UPNUM}${MAX_UPBASE}"
NEAR_MAX_DOWNNUM=`echo "$MAX_DOWNNUM * $USE_DOWNPERCENT" | bc | xargs printf "%.0f"`
NEAR_MAX_DOWNRATE="${NEAR_MAX_DOWNNUM}${MAX_DOWNBASE}"
HALF_MAXUPNUM=$(( $MAX_UPNUM / 2 ))
HALF_MAXUP="${HALF_MAXUPNUM}${MAX_UPBASE}"
HALF_MAXDOWNNUM=$(( $MAX_DOWNNUM / 2 ))
HALF_MAXDOWN="${HALF_MAXDOWNNUM}${MAX_DOWNBASE}"
# install HFSC under WAN to limit upload
/sbin/tc qdisc add dev $WAN_INTERFACE root handle 1: hfsc default 11
/sbin/tc class add dev $WAN_INTERFACE parent 1: classid 1:1 hfsc sc rate $NEAR_MAX_UPRATE ul rate $NEAR_MAX_UPRATE
/sbin/tc class add dev $WAN_INTERFACE parent 1:1 classid 1:10 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXUP ul rate $NEAR_MAX_UPRATE
/sbin/tc class add dev $WAN_INTERFACE parent 1:1 classid 1:11 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXUP ul rate $HALF_MAXUP
# prioritize interactive ports
/sbin/tc filter add dev $WAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid 1:10
/sbin/tc filter add dev $WAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid 1:10
# add SFQ
/sbin/tc qdisc add dev $WAN_INTERFACE parent 1:10 handle 30: sfq perturb 10
/sbin/tc qdisc add dev $WAN_INTERFACE parent 1:11 handle 40: sfq perturb 10
# install ingress filter to limit download to 97% max
MAX_DOWNRATE_INGRESSNUM=`echo "$MAX_DOWNNUM * 0.97" | bc | xargs printf "%.0f"`
MAX_DOWNRATE_INGRESS="${MAX_DOWNRATE_INGRESSNUM}${MAX_DOWNBASE}"
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $MAX_DOWNRATE_INGRESS burst 20k drop flowid :2
# install HFSC under LAN to limit download
/sbin/tc qdisc add dev $LAN_INTERFACE root handle 1: hfsc default 11
/sbin/tc class add dev $LAN_INTERFACE parent 1: classid 1:1 hfsc sc rate 1000mbit ul rate 1000mbit
/sbin/tc class add dev $LAN_INTERFACE parent 1:1 classid 1:10 hfsc sc umax 1540 dmax 5ms rate 900mbit ul rate 900mbit
/sbin/tc class add dev $LAN_INTERFACE parent 1:1 classid 1:11 hfsc sc umax 1540 dmax 5ms rate $HALF_MAXDOWN ul rate $NEAR_MAX_DOWNRATE
# prioritize interactive ports
/sbin/tc filter add dev $LAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid 1:10
/sbin/tc filter add dev $LAN_INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid 1:10
# add SFQ
/sbin/tc qdisc add dev $LAN_INTERFACE parent 1:10 handle 30: sfq perturb 10
/sbin/tc qdisc add dev $LAN_INTERFACE parent 1:11 handle 40: sfq perturb 10
### End of Script
Nota:
podemos chequear las estadísticas del queue con:
watch -d -- '/sbin/tc -s qdisc'
Suscribirse a:
Entradas (Atom)








