Mostrando las entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Linux. Mostrar todas las entradas

SDK Digital Persona

 

Si eres dev y te interesa el desarrollo de aplicaciones biométricas con el SDK DigitalPersona, aquí te comparto unos enlaces que quizás puedan ser de utilidad para tus proyectos:

https://drive.google.com/file/d/1h4w-Z0jLfCmSkGXVUqJ5otGl7_cbwesj/view

https://drive.usercontent.google.com/download?id=1h4w-Z0jLfCmSkGXVUqJ5otGl7_cbwesj&export=download&authuser=0

https://forums.raspberrypi.com/viewtopic.php?t=5146

https://sdk.hidglobal.com/developer-center/digitalpersona-touchchip

https://commerce.hidglobal.com/

DS-DP-SDK-Linux-2021-01-14.pdf

https://github.com/paulotovo/digitalpersona

https://github.com/JuanNieto99/instalacion-sdk-digitalpersona

 

Cómo detectar e instalar dispositivos USB antiguos, como Cámaras Web, en Linux Debian 12 y superior

 

En el mundo de la tecnología, los dispositivos USB, como las cámaras web, han evolucionado rápidamente. Sin embargo, a veces necesitamos conectar dispositivos más antiguos, lo cual puede presentar ciertos desafíos, especialmente en sistemas Linux como Debian 12. Este artículo te guiará a través del proceso de detección y configuración de dispositivos USB antiguos, usando el ejemplo de una cámara web, y cómo asegurarte de que funcione correctamente en tu sistema Debian 12.

1. Conectando el Dispositivo USB y Verificando su Detección

El primer paso es asegurarte de que Debian detecte el dispositivo USB cuando lo conectas. Para ello, utilizaremos algunos comandos esenciales que te ayudarán a saber si el dispositivo ha sido reconocido.

a) Usa el comando lsusb:

El comando lsusb te permitirá listar todos los dispositivos USB conectados al sistema. Abre la terminal y escribe:

lsusb

Esto mostrará una lista de todos los dispositivos USB conectados. Si tu cámara web es reconocida, deberías ver algo que mencione el fabricante o el tipo de dispositivo, por ejemplo:

Bus 001 Device 002: ID 046d:0825 Logitech, Inc. Webcam C270

Si no ves tu dispositivo en la lista, prueba cambiar de puerto USB o verificar el cable.

b) Verifica dispositivos de video (/dev/video):

Para cámaras web, el sistema suele asignar un dispositivo de video. Usa el siguiente comando para verificar si tu cámara fue detectada como un dispositivo de video:

ls /dev/video*

Si el dispositivo fue detectado correctamente, verás algo como /dev/video0. Si no aparece, puede ser un indicador de que el sistema no ha cargado el controlador correcto.

2. Instalando Herramientas para Video y Controladores de Cámaras

En la mayoría de los casos, las cámaras web modernas y antiguas funcionan con el subsistema V4L2 (Video for Linux 2). Si no tienes las herramientas necesarias instaladas, puedes hacerlo fácilmente:

a) Instalar V4L2 (Video for Linux 2):

Para asegurarte de que tu sistema pueda manejar correctamente los dispositivos de video, instala las utilidades de V4L2:

sudo apt install v4l-utils

Este paquete incluye herramientas útiles para controlar dispositivos de video. Una vez instalado, puedes listar los dispositivos de video detectados usando:

v4l2-ctl –list-devices

Si tu cámara web aparece en la lista, el sistema ya la ha detectado correctamente.

b) Instalar controladores para cámaras antiguas:

Algunas cámaras USB más antiguas pueden no ser compatibles con el controlador genérico de Linux, uvcvideo, que gestiona la mayoría de las cámaras modernas. Verifica si el módulo uvcvideo está cargado:

lsmod | grep uvcvideo

Si no aparece, puedes cargarlo manualmente:

sudo modprobe uvcvideo

Si tu cámara es muy antigua y no es compatible con uvcvideo, podrías necesitar buscar controladores específicos para Linux. Investiga el modelo de tu cámara y busca controladores o soluciones en foros de la comunidad.

3. Solucionando Problemas de Detección

Si después de los pasos anteriores la cámara sigue sin ser reconocida, hay algunas cosas que puedes intentar:

a) Ver mensajes de error en el sistema (dmesg):

Cuando conectas un dispositivo USB, el kernel de Linux genera mensajes sobre lo que está ocurriendo con el hardware. Puedes revisar estos mensajes utilizando:

dmesg | grep -i usb

Esto mostrará cualquier mensaje relevante relacionado con dispositivos USB. Si ves mensajes de error o advertencias, podrías tener una pista sobre lo que está fallando.

b) Actualizar el sistema y controladores:

En algunas ocasiones, los problemas de compatibilidad se deben a controladores o kernel desactualizados. Actualiza tu sistema para asegurarte de que tienes las últimas versiones del software:

sudo apt update && sudo apt upgrade

4. Probar la Cámara con Software de Video

Si todo ha ido bien hasta este punto, deberías poder probar la cámara web. Una manera fácil de hacerlo es con el software Cheese, que está diseñado para tomar fotos y grabar video desde cámaras conectadas:

a) Instalar Cheese:

sudo apt install cheese

Luego de instalar, abre la aplicación Cheese desde el menú de aplicaciones o ejecuta:

cheese

Si Cheese detecta la cámara, deberías ver el video en pantalla. Si la cámara no aparece, podrías necesitar seguir investigando los controladores o probar con otro software, como VLC.

b) Usar VLC para probar el dispositivo de video:

Otra opción es probar el dispositivo de video con VLC. Abre VLC y selecciona «Dispositivo de captura» desde el menú. O bien, puedes ejecutarlo desde la terminal directamente:

vlc v4l2:///dev/video0

5. Conclusión

Conectar dispositivos USB antiguos, como cámaras web, a sistemas modernos como Debian 12 puede ser un desafío, pero siguiendo estos pasos es posible hacerlo funcionar. Verifica que el dispositivo esté correctamente detectado usando herramientas como lsusb y v4l2-ctl, asegúrate de que los controladores estén instalados y prueba el funcionamiento con software de video como Cheese o VLC. Si el dispositivo aún no es reconocido, considera buscar controladores adicionales o soporte en línea para tu modelo específico de cámara.

¡Espero que esta guía te haya sido útil para revivir tu cámara web antigua en Debian 12!

Comparativa entre btop y htop: ¿Cuál herramienta elegir para monitorización del sistema?

 

En el mundo de la administración de sistemas Linux, las herramientas de monitoreo de recursos juegan un papel crucial para supervisar el rendimiento del hardware y la eficiencia del sistema. Dos de las más populares son btop y htop. Ambas ofrecen funcionalidades avanzadas para ver el uso del CPU, la memoria y los procesos activos, pero difieren en diseño, funcionalidad y enfoque. A continuación, comparamos las ventajas y desventajas de cada una.

htop: El clásico visualizador de procesos

htop: Una herramienta esencial para la monitorización y administración de  procesos en sistemas Linux - Administración de Sistemas

htop es una herramienta de monitoreo interactiva que reemplaza al comando básico top. Se lanzó en 2004 y se convirtió rápidamente en una herramienta preferida por su interfaz más accesible y sus opciones de personalización. Aquí algunos puntos clave:

Pros de htop:
  1. Interfaz amigable: htop mejora la experiencia de top al ofrecer una interfaz colorida y fácil de entender con gráficos para CPU y memoria.
  2. Navegación interactiva: Puedes desplazarte fácilmente entre los procesos y aplicar filtros para buscar tareas específicas.
  3. Acciones rápidas: Permite matar, renombrar o priorizar procesos directamente desde la interfaz, sin necesidad de comandos complicados.
  4. Ligero y eficiente: Consume pocos recursos, lo que lo hace ideal para sistemas con recursos limitados o para administradores que buscan un monitor ligero.
Contras de htop:
  1. Limitaciones en la personalización: Aunque htop tiene varias opciones de configuración, carece de la flexibilidad que otras herramientas modernas, como btop, ofrecen en términos de visualización y uso de datos.
  2. Soporte gráfico básico: Aunque su interfaz es clara, htop tiene menos opciones gráficas avanzadas comparado con herramientas más recientes.

btop: La evolución en la monitorización

Htop, conoce a Btop : r/linux

btop es una herramienta más reciente basada en bashtop, diseñada para ser visualmente atractiva y extremadamente funcional. Es conocida por su interfaz gráfica avanzada y la posibilidad de usar el ratón, algo inusual en este tipo de herramientas.

Pros de btop:
  1. Interfaz avanzada: Con gráficos detallados y personalizables, btop ofrece una experiencia visualmente mucho más rica que htop. Incluye estadísticas detalladas del uso de CPU, memoria, red y almacenamiento.
  2. Soporte para ratón: A diferencia de htop, puedes navegar completamente por la interfaz de btop usando el ratón, lo que hace la interacción más sencilla y rápida.
  3. Personalización completa: btop permite una personalización profunda del aspecto y la disposición de los gráficos y estadísticas, adaptándose a las necesidades del usuario.
  4. Integración con otras herramientas: Ofrece información más detallada sobre la red y los discos, integrando de manera eficiente estas métricas en la interfaz.
  5. Mejor gestión de recursos: Aunque btop es más gráfico que htop, está bien optimizado, y su consumo de recursos es competitivo, a pesar de la mayor cantidad de información que muestra.
Contras de btop:
  1. Complejidad inicial: Su riqueza de funciones puede resultar abrumadora para quienes buscan algo simple o están acostumbrados a htop. La curva de aprendizaje es un poco más pronunciada.
  2. Mayor consumo de recursos: Aunque está optimizado, su interfaz más compleja y sus gráficos avanzados pueden usar más memoria que htop, lo que podría ser una limitante en sistemas con pocos recursos.

¿Cuál elegir?

  • htop es ideal para administradores de sistemas que buscan una herramienta ligera, rápida de usar y fácil de entender, con un enfoque en procesos y rendimiento básico.
  • btop es más adecuado para aquellos que desean una experiencia visual mejorada, mayor personalización y datos más completos sobre la red, el almacenamiento y otros recursos del sistema.

En resumen, si estás buscando una herramienta tradicional, ligera y confiable, htop sigue siendo una excelente opción. Sin embargo, si prefieres una interfaz moderna, altamente gráfica y con mayor capacidad de personalización, btop es una alternativa más avanzada y visualmente atractiva.

Conclusión

Ambas herramientas son poderosas a su manera. La elección entre btop y htop dependerá de tus necesidades específicas y del entorno en el que estés trabajando. Para usuarios más experimentados y entornos que requieren una monitorización visual detallada, btop es una gran opción. Por otro lado, si prefieres una solución clásica y minimalista, htop cumplirá todas tus expectativas sin consumir demasiados recursos.

Tabby: Una Terminal Versátil y Multiplataforma para el Desarrollo

 

En el mundo del desarrollo, las terminales son herramientas imprescindibles, pero no todas ofrecen la flexibilidad y personalización que los desarrolladores modernos requieren. Tabby es una terminal de código abierto que ha ganado popularidad por ser altamente personalizable, multiplataforma y fácil de usar. En este artículo, exploraremos qué es Tabby, sus principales características, y por qué es una excelente opción para desarrolladores que buscan una experiencia de terminal avanzada.

¿Qué es Tabby?

Tabby es una terminal moderna y multiplataforma que está disponible para Windows, macOS y Linux. Su principal atractivo radica en su capacidad de personalización y su diseño amigable, que combina una interfaz visual atractiva con funcionalidades avanzadas. Al ser de código abierto, Tabby ofrece una plataforma transparente y flexible para aquellos que quieran adaptar su terminal a sus necesidades específicas.

El proyecto fue diseñado con la idea de mejorar la experiencia del usuario, permitiendo a los desarrolladores trabajar de manera más eficiente y productiva. A diferencia de muchas terminales clásicas que pueden ser intimidantes para los nuevos usuarios, Tabby ofrece una interfaz intuitiva y rica en características.

Características Clave de Tabby

  1. Multiplataforma: Una de las principales ventajas de Tabby es que está disponible para todos los sistemas operativos principales: Windows, macOS y Linux. Esto la convierte en una opción ideal para desarrolladores que necesitan trabajar en varios entornos sin perder consistencia.
  2. Altamente Personalizable: Tabby permite a los usuarios ajustar su entorno de terminal con temas, atajos de teclado personalizados, y la posibilidad de dividir ventanas. Los desarrolladores pueden personalizar cada aspecto visual de la terminal, desde los colores hasta la disposición de las pestañas y paneles.
  3. Soporte para SSH y Serial: Tabby incluye soporte integrado para conexiones SSH y seriales, lo que la hace ideal para la administración remota de servidores o dispositivos. Esto elimina la necesidad de instalar herramientas adicionales o abrir otras ventanas para estas tareas.
  4. Interfaz de Pestañas y Paneles: Tabby permite abrir varias pestañas y dividir la ventana en paneles, lo que es perfecto para multitareas. Cada pestaña puede ejecutar diferentes sesiones o comandos, permitiendo una mayor eficiencia al trabajar con múltiples proyectos o entornos de desarrollo al mismo tiempo.
  5. Extensiones: Al ser una terminal moderna, Tabby soporta la instalación de extensiones que agregan más funcionalidades. Esto incluye temas adicionales, soporte para más protocolos y funcionalidades especializadas, según las necesidades del usuario.
  6. Integración con SSH y Múltiples Shells: Además de su personalización, Tabby permite integrarse fácilmente con shells como Bash, Zsh, PowerShell, y más. También permite conectarse a servidores remotos utilizando SSH, lo cual es fundamental para administradores de sistemas y desarrolladores que gestionan servidores a distancia.

Usos y Aplicaciones de Tabby

Tabby es una excelente opción para diversos tipos de usuarios, desde desarrolladores de software hasta administradores de sistemas. Aquí algunos escenarios donde destaca su utilidad:

  • Desarrollo de Software: Los desarrolladores que trabajan en proyectos multiplataforma o colaboran con equipos que usan diferentes sistemas operativos encontrarán en Tabby una herramienta unificadora. Al poder personalizar la terminal para cada proyecto o lenguaje, Tabby facilita el trabajo en diferentes entornos sin tener que cambiar de herramienta.
  • Administración de Sistemas: Para los administradores que gestionan servidores remotos, el soporte integrado para SSH y la posibilidad de dividir la pantalla en varias sesiones simultáneas permite monitorear y administrar múltiples sistemas a la vez.
  • Usuarios Avanzados: Los usuarios avanzados que buscan maximizar la eficiencia en su flujo de trabajo disfrutarán de la capacidad de Tabby de manejar scripts complejos, automatización de tareas, y soporte para múltiples sesiones.

Comparación con Otras Terminales

En comparación con otras terminales populares como Hyper o Terminator, Tabby destaca por su equilibrio entre una interfaz amigable y sus funcionalidades avanzadas. Si bien otras terminales pueden ofrecer un mayor enfoque en diseño o rendimiento en áreas específicas, Tabby brilla por ser una opción sólida, equilibrada y con un amplio abanico de personalización.

Conclusión

Tabby se ha consolidado como una excelente opción para desarrolladores y administradores de sistemas que buscan una terminal moderna, potente y personalizable. Su compatibilidad con múltiples sistemas operativos, junto con su soporte para SSH y extensiones, la convierte en una herramienta versátil que puede adaptarse a casi cualquier flujo de trabajo. Ya sea que estés buscando una terminal que se vea bien o que puedas modificar según tus necesidades, Tabby ofrece una experiencia completa y eficiente.

Si eres un desarrollador o administrador de sistemas que busca una terminal poderosa, definitivamente vale la pena probar Tabby. Puedes descargarla directamente desde su sitio web aquí.

MBR vs. GPT – Comparación completa

 

MBR vs. GPT, ¿cuál elegir? Puede que te preguntes lo mismo cuando configures un Sistema Operativo en tu PC por primera vez. La selección del esquema de particiones depende totalmente del tipo de Sistema Operativo y del estado del hardware de tu equipo.

¿Cuál es la diferencia entre la partición MBR y GPT? Aquí tratamos de responder a esa pregunta, a la vez que ofrecemos una reseña que describe las características de ambos. Master Boot Record (MBR) y Tabla de partición GUID (GPT) son dos tipos de esquemas de partición para los discos duros, mientras que el segundo es más avanzado.

Aunque estos dos tienen la misma función, cada uno tiene su propia estructura de arranque, velocidad, capacidad, flexibilidad y requisitos. Este artículo ofrece una comprensión más amplia de MBR vs. GPT y los pros y los contras de los métodos de inicialización, conversión y recuperación de MBR/GPT.

MBR vs. GPT: ¿Cuál es la diferencia?

GPT, abreviatura de GUID Partition Table (tabla de particiones) es el nuevo estándar para la disposición de la tabla de particiones en un disco duro físico. El MBR, abreviatura de Master Boot Record, es el estándar más antiguo con la misma funcionalidad. Al particionar un disco duro o utilizar una herramienta de partición de disco, puedes elegir uno de estos dos métodos diferentes para la partición.

gestión de discos
  • En comparación, el MBR es más antiguo que el GPT. El MBR funciona mejor con los sistemas anteriores; en cuanto al GPT, es más compatible con los sistemas más avanzados y nuevos.
  • La ventaja de GPT es el enorme tamaño de la partición, el número de particiones y la capacidad de recuperación.
  • Además, las computadoras que funcionan con UEFI sólo pueden soportar GPT. Por no mencionar que Microsoft ha confirmado recientemente que el sistema Windows 11 sólo será compatible con GPT y UEFI. Por tanto, el disco GPT es uno de los elementos esenciales de Windows 11.

Aspectos más ventajosos de la GPT:

Tanto el MBR como el GPT pueden ser primarios o dinámicos. Sin embargo, un disco GPT ofrece más capacidad, compatibilidad con dispositivos modernos y mejor rendimiento. Estas son algunas de las ventajas de GPT en comparación con MBR:


MBR (Registro de arranque maestro)GTP (Tabla de Partición GUID)
Capacidad máxima de la partición2 TB9,4 ZB (cada ZB es 1.000 millones de TB)
Número máximo de particioneshasta 4 particiones primarias (o tres particiones primarias, una partición extendida y unidades lógicas ilimitadas)128 particiones primarias
Soporte de la Interfaz del FirmwareBIOSUEFI
Compatibilidad del Sistema OperativoWindows 7 e incluso sistemas más antiguos como Windows 95/98, Windows XP 32 bits, Windows 2000, Windows 2003 32 bitsSistemas más nuevos como Windows 8, 8.1 de 64 bits, 10, 11.
VelocidadMás lentoMás rápido
Tecnología más avanzadaFunciona con tecnología más avanzadaFunciona con tecnología y hardware menos avanzados
  • Capacidad de MBR vs. GPT: MBR sólo puede manejar 2 TB de espacio en el disco duro, mientras que GPT puede soportar discos de más de 2 TB (ayuda a los volúmenes de hasta 18 exabytes de tamaño).
  • Particiones MBR vs. GPT: El estilo de partición de disco MBR admite volúmenes de hasta 2 TB y cuatro particiones primarias por disco (o tres particiones primarias, una partición extendida y unidades lógicas ilimitadas). Pero la GPT no tiene límite de particiones. Con GPT, los sistemas operativos Windows pueden tener hasta 128 particiones en una unidad GPT sin necesidad de crear una partición extendida.
  • Recuperación MBR vs. GPT: Los discos con particiones GPT tienen un primario y una copia de seguridad redundantes. GPT mantiene los datos en varias áreas de la unidad una copia como copia de seguridad secundaria Tabla GPT para la recuperación. Al mismo tiempo, la desventaja del MBR es que almacena los datos en un solo lugar, sin hacer copias de seguridad, lo que aumenta la posibilidad de que se corrompan y de que el sistema falle.
  • Confiabilidad de MBR vs. GPT: El disco GPT proporciona más fiabilidad gracias a la replicación y a la protección de la tabla de particiones mediante la comprobación cíclica de redundancia (CRC). A diferencia de los discos con partición MBR, los datos críticos para el funcionamiento de la plataforma se encuentran en las particiones en lugar de en los sectores no particionados u ocultos.
  • Tecnología y compatibilidad MBR vs. GPT: GPT puede utilizar tecnologías de dispositivos más avanzadas, mientras que MBR es para sistemas menos evolucionados.
  • Interfaz MBR vs. GPT: Normalmente, MBR y BIOS (MBR + BIOS) y GPT y UEFI (GPT + UEFI) funcionan juntos. Este emparejamiento es obligatorio para algunos sistemas operativos (por ejemplo, Windows), mientras que es opcional para otros (por ejemplo, Linux).
  • Velocidad MBR vs. GPT: Por último, los procesos de arranque GPT y UEFI suelen ser más rápidos que los GPT.

MBR vs. GPT: ¿Cuál es mejor para tus necesidades?

mbr vs gpt

Simplemente, la GPT es la mejor opción en muchos aspectos. Aunque el mundo avanza hacia tecnologías más avanzadas, la GPT, con la última compatibilidad tecnológica, supera al MBR. Si tu disco es de más de 2 TB, o si has decidido configurar un sistema operativo más reciente como Windows 11, Definitivamente, elige el GPT.

Con una segunda copia de seguridad y una mejor administración de las particiones, esta partición es más confiable y resistente a la corrupción.

Tener un arranque rápido es otra ventaja de la GPT. Los SSD funcionan de forma diferente a los HDD y son capaces de arrancar rápidamente. Aunque tanto GPT como MBR funcionan bien, para tener un arranque rápido de Windows, GPT es la mejor opción una vez más. Y porque requieres una Sistema basado en UEFIm para un arranque más rápido, y UEFI sólo funciona con el particionamiento GPT. Así que, una vez más, GPT parece la opción más lógica cuando se trata de MBR o GPT para SSD.

Dicho esto, todavía hay ocasiones en las que no tienes más remedio que optar por un MBR. Como si tuvieras un sistema operativo antiguo. O cuando el hardware de tu vieja computadora no puede ejecutar una versión más reciente de Windows. Sin embargo, hoy en día, los usuarios prefieren trabajar con sistemas de alta calidad, ya que los SSD son más compatibles con el último Windows. Así que, al final, todo depende de tus preferencias, de la antigüedad de tu hardware y de que trabajes con qué tipo de sistema operativo.

MBR vs. GPT: Cómo inicializar tu disco a MBR/GPT

Inicializar un MBR o GPT para SSD o HDD es un proceso sencillo que se puede administrar con la «Administración de discos» de Windows y el software disponible. Los pasos para inicializar el MBR/GPT con la Administración de discos son los siguientes:

  • Paso 1: Pulsa sobre el acceso directo Windows+R para abrir «Ejecutar
  • Paso 2: Tipo “msc” para iniciar la gestión de discos.
  • Paso 3: A continuación, se te pedirá que inicialices el disco duro recién añadido. Entonces, puedes elegir entre MBR o GPT.
volumen de disco

Cómo convertir GPT a MBR o MBR a GPT

Para convertir MBR en GPT o GPT en MBR, hay varias opciones disponibles. Puedes conocer la guía de conversión completa haciendo clic en los siguientes enlaces:

Consejos adicionales: Cómo recuperar datos de una partición MBR o GPT perdida

Wondershare Recoverit es uno de los programas más fiables disponibles para recuperar particiones GPT y MBR en caso de pérdida de datos o de diversos problemas relacionados. Puedes recuperar tus datos importantes con este software profesional de recuperación de particiones en tres sencillos pasos (Selecciona la partición perdida > Escanear > Recuperar).

selecciona escanear y recuperar

Proyecto: Web Report ML

 

WEBREPORT-ML es la continuación del proyecto REPORT-ML para la generación de reportes para la web en diversos formatos, como HTML, PDF, DocBook.

Este proyecto fue diseñado y desarrollado a finales del año 2003 como resultado de mi proyecto de grado en la facultad de Ingeniería de Sistemas.

CARACTERISTICAS DE WEBREPORT-ML

WEBREPORT-ML está conformado básicamente por dos componentes:

  • Elementos
  • Atributos

Elementos

Cada elemento de WEBREPORT-ML consta de una marca de comienzo, el contenido y una marca de fin.  Por ejemplo:

<titulo>Aquí se imprime el título del reporte</titulo>

Atributos

Un atributo es un mecanismo para agregar información descriptiva a un elemento. Por ejemplo:

<titulo  tipo-titulo=»texto» fuente-titulo=»Comic Sans MS» estilo-fuente-titulo=» » color-texto=»blue» alineacion-titulo=»center» decoracion-texto-titulo=» » ancho-titulo=» » saturacion-color-titulo=» »  color-borde=»blue» estilo-borde=» » tamaño-titulo=»18″>

    Reporte de Productos

  </titulo>

Es muy importante colocar los valores de los atributos entre comillas dobles.  En caso de no colocar las comillas dobles, el procesador le indicará que hubo un error.

ESTRUCTURA DE WEBREPORT-ML

Un reporte escrito en WEBREPORT-ML comienza y termina con la marca reporte, indicando que se trata de un reporte a realizar en el lenguaje.

<reporte>

Cuerpo del documento

</reporte>

Dentro del elemento reporte se encentran varios elementos primarios, tales como: 

  • descripcion
  • salida
  • conexion
  • consulta
  • titulo
  • cabecera
  • detalles
  • pie-de-pagina

Ejemplo:

<?xml version=»1.0″ encoding =»iso-8859-1″?>

<reporte>

  <conexion/>

  <consulta>

    Contenido de la consulta SQL

  </consulta>

  <margenes />

  <salida/>

  <titulo>

    Reporte de Productos

  </titulo>

  <descripcion>

    Contenido de la descripcion

  </descripcion>

  <cabecera>

    <fila>

      <campo> </campo>

    </fila>  

  </cabecera>

  <detalles>

    <fila>

      <campo/>

    </fila> 

  </detalles>

  <pie-de-pagina>

     <fila>

      <campo> </campo>

     </fila>

  </pie-de-pagina>

</reporte>

DESCRIPCIÓN DE LOS ELEMENTOS DEL LENGUAJE REPORT-ML

Elemento descripcion

El elemento descripcion  se utiliza para colocar una información descriptiva acerca de los que se trata el reporte.  Ejemplo:

<descripcion>

   Este es un reporte para los empleados de la compañía

</descripcion>

Elemento margenes

El elemento margenes se utiliza para especificar cada uno de los márgenes para el documento del reporte y consta de los siguientes atributos:

  • Atributo margen-superior
  • Atributo margen-inferior
  • Atributo margen-izquierdo
  • Atributo margen-derecho

Elemento salida

El elemento salida se utiliza para especificar el formato en el que se desea que se muestre el reporte, así como la ruta en donde se guardará el reporte.  Contiene los siguientes atributos:

  • Atributo formato
  • Atributo archivo

*Atributo formato

El atributo formato especifica el formato en el que se desea que se imprima el reporte.  Los tipos de formatos disponibles en WEBREPORT-ML son:

  • Html
  • PDF
  • DocBook

*Atributo archivo

El atributo archivo especifica la ruta en donde se desea guardar el reporte.  Es importante que el usuario especifique una ruta en donde se guardará su reporte para que al momento de terminar de exportar los datos al formato requerido, sabrá que el reporte se alojará precisamente en el lugar que él indicó.

Elemento conexion

El elemento conexion se utiliza para especificar los esquemas de conexión con la base de datos.  Contiene los siguientes atributos:

*Atributo conector

El atributo conector especifica el motor de la base de datos a utilizar.

Ejemplo:

conector=»sun.jdbc.odbc.JdbcOdbcDriver»

*Atributo url

El atributo url la ruta de la base de datos de la siguiente manera:

jdbc:odbc:Base_de_Datos

Elemento consulta

El elemento consulta  especifica el contenido de la consulta SQLque se va a utilizar para generar nuestro reporte.

Ejemplo:

<consulta>

            select * from tabla

</consulta>

Elemento titulo

El elemento titulo se utiliza para el título del reporte.

Elemento cabecera

El elemento cabecera se utiliza para los títulos de cada campo del reporte.  Contiene un elemento anidado fila el cual hace referencia a las filas deseadas por el usuario; ésta a su vez contiene un elemento anidado campo, que especifica el número de campos (columnas) que el usuario desea para esa fila. 

Ejemplo:

<cabecera>

 <fila>

  <campo tipo=”texto”>

    Nombre

  </campo>

  <campo tipo=”texto”>

    Apellido

  </campo>

  </fila>   

</cabecera>

Para el ejemplo anterior se mostrará, en una misma fila, varios campos con los títulos para el reporte y quedaría de la siguiente forma:

NombreApellido

Elemento detalles

El elemento detalles constituye uno de los elemento más importantes del reporte, pues es ahí en donde se especifican cada uno de los campos de la base de datos que se mostraran  en el reporte, así como también se realizan las fórmulas que se desean hacer para el reporte.  Las fórmulas deben codificarse en el lenguaje Java Script. Existen dos tipos de campos diferentes a los anteriormente descritos, que se utilizan en el detalle:

  • El tipo de campo bd
  • El tipo de campo formula

El tipo de campo bd, se utiliza para especificar cada uno de los campos de la base de datos que el usuario desea mostrar en el reporte.  Para este tipo de campo, existe un atributo llamado nombre, el cual especifica el nombre del campo de la base de datos a extraer para el reporte. Cada vez que el usuario especifique el tipo de campo bd debe especificar en el atributo nombre el nombre del campo de la base de datos.

Ejemplo:

<detalles>

 <fila>

  <campo tipo=”bd” nombre=”cedula”/>

  <campo tipo=”bd” nombre=”nombre”/>

  <campo tipo=”bd” nombre=”apellido”/>

 </fila>

</detalles>

El tipo de campo formula,se utiliza para las distintas fórmulas que se desean hacer para el reporte.

Ejemplo:

<detalles>

 <fila>

  <campo tipo=”formula”>

value = parseInt(query.get(«CANTIDAD»)) * parseInt(query.get(«PRECIO»));

  </campo>

 </fila>

</detalles>

*Atributo formato

El atributo formato especifica el formato numérico a utilizarse.  Este atributo hace parte del elemento anidado campo y se utiliza en caso de que se utilicen números y se les quiera aplicar algún tipo de formato.

Ejemplos de tipos de formato

  • $ #.##0,00
  • 00
  • 0000
  • ##0.0# %

Ejemplo:

<detalles>

 <fila>

<campo tipo=”bd” nombre=”Valor” formato=”$#.##0,00” />

 </fila>

</detalles>

Para el ejemplo anterior, se mostrarán todos los registros del campo Valor, correspondiente al valor unitario de X producto y se le aplica el tipo de formato $#.##0,00 así como el estilo de letra negrita.  El resultado de uno de los registros del campo valor, quedaría de la siguiente forma:  $ 2,052,000.00

Elemento pie-de-pagina

El elemento pie-de-pagina se utiliza para colocar algún contenido al final del reporte, como funciones para hallar el total de un determinado campo de la base de datos, ó el gran total de algún total hallado por medio de las fórmulas descritas en el detalles. Contiene un elemento anidado fila el cual hace referencia a las filas deseadas por el usuario; ésta a su vez contiene un elemento anidado campo, que especifica el número de campos (columnas) que el usuario desea para esa fila. 

Los tipos de campo utilizados en el pie-de-pagina son:

  • text
  • total

El campo total se utiliza única y exclusivamente en el elemento pie-de-pagina. Este tipo de campo especifica la función a llevar a cabo para hallar el total de un determinado campo de la base de datos ó para hallar un resultado total de cada uno de los resultados hallados en la fórmula escrita en el detalle. 

También existe un atributo que va de la mano con el tipo de campo total y es el atributo funcion, el cual se explica a continuación.

*Atributo funcion

El atributo funcion especifica la función a utilizarse en el pie-de-pagina y depende del tipo de campo total.  Los tipos de funciones disponibles para la el atributo funcion del pie-de-pagina son las siguientes:

  • suma, para hallar la suma
  • promedio, para hallar el promedio
  • mult, para hallar el producto
  • mayor, para hallar el máximo valor
  • menor, para hallar el mínimo valor
  • contar, para contar

Ejemplo :

<pie-de-pagina>

 <fila>

    <campo tipo=”total” funcion=”suma” nombre=”Cantidad” />

    <campo tipo=”total” funcion=”mayor” />

 </fila>

</pie-de-pagina>

Codificación

Si el usuario va a utilizar en el reporte caracteres propios del alfabeto español, tales como la letra ñ, tildes, etc, deberá incluir el siguiente atributo al principio de la creación del reporte:

encoding=»iso-8859-1″

Ejemplo:

<?xml version=»1.0″ encoding=»iso-8859-1″?>

<reporte>

Cuerpo del reporte

</reporte>

EJEMPLOS DE UTILIZACIÓN DE WEBREPORT-ML

Ejemplo 1:

<?xml version=»1.0″ encoding=»iso-8859-1″?>

<reporte>

  <conexion conector=»sun.jdbc.odbc.JdbcOdbcDriver» url=»jdbc:odbc:bd2″/>

  <consulta>

    select *

    from producto

  </consulta>

  <margenes margen-superior=»1.0″ margen-inferior=»1.0″ margen-derecho=»1.0″ margen-izquierdo=»1.0″ />

  <salida formato=»pdf» archivo=»c:\mireporte» />

  <titulo  tipo-titulo=»texto» fuente-titulo=»Comic Sans MS» estilo-fuente-titulo=» » color-texto=»blue» alineacion-titulo=»center» decoracion-texto-titulo=» » ancho-titulo=» » saturacion-color-titulo=» »  color-borde=»blue» estilo-borde=» » tamaño-titulo=»18″>

    Reporte de Productos

  </titulo>

  <descripcion>Este es mi primer reporte </descripcion>

  <cabecera>

    <fila>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Identificador</campo>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Nombre</campo>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Unidades En Existencia</campo>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Precio Unidad</campo>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Formula</campo>

    </fila>  

  </cabecera>

  <detalles>

    <fila>

      <campo tipo=»bd» formato=»0000″ nombre=»CODP»/>

      <campo tipo=»bd» formato=» » nombre=»NOMP»/>

      <campo tipo=»bd» formato=»0000″ nombre=»CANTIDAD»/>

      <campo tipo=»bd» formato=»$#,##0.00″ nombre=»PRECIO»/>

      <campo tipo=»formula»>

        value = parseInt(query.get(«CANTIDAD»)) * parseInt(query.get(«PRECIO»));

      </campo> 

    </fila> 

  </detalles>

  <pie-de-pagina>

     <fila>

      <campo color=»blue» alineacion=»center» tipo=»texto»>Fin del Reporte</campo>

     </fila>

  </pie-de-pagina>

</reporte>

Ejemplo 2:

<?xml version=»1.0″ encoding=»iso-8859-1″?>

<reporte>

  <conexion conector=»sun.jdbc.odbc.JdbcOdbcDriver» url=»jdbc:odbc:bd2″  />

  <consulta>

    select CODP, NOMP, NOMBRE, PRECIO, CANTIDAD

    from PRODUCTO inner join CATEGORIA

    on PRODUCTO.CODIGOC = CATEGORIA.CODIGOC

    order by CODP

  </consulta>

  <margenes margen-superior=»1.0″ margen-inferior=»1.0″ margen-derecho=»1.0″ margen-izquierdo=»1.0″ />

    <salida formato=»docbook» archivo=»c:\productos» />

    <titulo  tipo-titulo=»texto» fuente-titulo=»Comic Sans MS» estilo-fuente-titulo=» » color-texto=»green» alineacion-titulo=»center» decoracion-texto-titulo=» » ancho-titulo=» » saturacion-color-titulo=» »  color-borde=»blue» estilo-borde=»double» tamaño-titulo=»18″>

      Reporte de Productos

    </titulo>

    <descripcion>Este es mi primer reporte </descripcion>

    <cabecera>

      <fila>

        <campo color=»red» alineacion=»center» tipo=»texto»>Identificador</campo>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Nombre</campo>

        <campo color=»pink» alineacion=»center» tipo=»texto»>Unidades En Existencia</campo>

        <campo color=»yellow» alineacion=»center» tipo=»texto»>Precio Unidad</campo>

        <campo color=»black» alineacion=»center» tipo=»texto»>Categoria</campo>

        <campo color=»orange» alineacion=»center» tipo=»texto»>Formula</campo>

      </fila>  

    </cabecera>

    <detalles>

      <fila>

        <campo color-relleno=»ffffcc» color=»red» estilo=»italic» tipo=»bd» formato=»0000″ nombre=»CODP»/>

        <campo tipo=»bd» formato=» » nombre=»NOMP»/>

        <campo tipo=»bd» formato=»000″ nombre=»CANTIDAD»/>

        <campo tipo=»bd» formato=»$#,##0.00″ nombre=»PRECIO»/>

        <campo tipo=»bd» formato=» » nombre=»NOMBRE»/>

        <campo tipo=»formula» color-relleno=»yellow» color=»blue»>

          value = parseInt(query.get(«CANTIDAD»)) * parseInt(query.get(«PRECIO»));

        </campo> 

      </fila> 

    </detalles>

    <pie-de-pagina>

      <fila>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Inventario Total</campo>

        <campo tipo=»total» funcion=»suma» nombre=»CANTIDAD»/>

      </fila>

      <fila>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Precio Mayor</campo>

        <campo tipo=»total» formato=»$#,##0.00″ funcion=»mayor» nombre=»PRECIO»/>

      </fila>

    </pie-de-pagina>

</reporte>

Ejemplo 3:

<?xml version=»1.0″ encoding=»iso-8859-1″?>

<reporte>

  <conexion conector=»sun.jdbc.odbc.JdbcOdbcDriver» url=»jdbc:odbc:bd2″  />

  <consulta>

    select CODP, NOMP, NOMBRE, PRECIO, CANTIDAD

    from PRODUCTO inner join CATEGORIA

    on PRODUCTO.CODIGOC = CATEGORIA.CODIGOC

    order by CODP

  </consulta>

  <margenes margen-superior=»1.0″ margen-inferior=»1.0″ margen-derecho=»1.0″ margen-izquierdo=»1.0″ />

    <salida formato=»html» archivo=»c:\productos» />

    <titulo  tipo-titulo=»texto» fuente-titulo=»Comic Sans MS» estilo-fuente-titulo=» » color-texto=»green» alineacion-titulo=»center» decoracion-texto-titulo=» » ancho-titulo=» » saturacion-color-titulo=» »  color-borde=»blue» estilo-borde=»double» tamaño-titulo=»18″>

      Reporte de Productos

    </titulo>

    <descripcion>Este es mi primer reporte </descripcion>

    <cabecera>

      <fila>

        <campo color=»red» alineacion=»center» tipo=»texto»>Identificador</campo>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Nombre</campo>

        <campo color=»pink» alineacion=»center» tipo=»texto»>Unidades En Existencia</campo>

        <campo color=»yellow» alineacion=»center» tipo=»texto»>Precio Unidad</campo>

        <campo color=»black» alineacion=»center» tipo=»texto»>Categoria</campo>

        <campo color=»orange» alineacion=»center» tipo=»texto»>Formula</campo>

      </fila>  

    </cabecera>

    <detalles>

      <fila>

        <campo color-relleno=»ffffcc» color=»red» estilo=»italic» tipo=»bd» formato=»0000″ nombre=»CODP»/>

        <campo tipo=»bd» formato=» » nombre=»NOMP»/>

        <campo tipo=»bd» formato=»000″ nombre=»CANTIDAD»/>

        <campo tipo=»bd» formato=»$#,##0.00″ nombre=»PRECIO»/>

        <campo tipo=»bd» formato=» » nombre=»NOMBRE»/>

        <campo tipo=»formula» color-relleno=»yellow» color=»blue»>

          value = parseInt(query.get(«CANTIDAD»)) * parseInt(query.get(«PRECIO»));

        </campo> 

      </fila> 

    </detalles>

    <pie-de-pagina>

      <fila>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Inventario Total</campo>

        <campo tipo=»total» funcion=»suma» nombre=»CANTIDAD»/>

      </fila>

      <fila>

        <campo color=»blue» alineacion=»center» tipo=»texto»>Precio Mayor</campo>

        <campo tipo=»total» formato=»$#,##0.00″ funcion=»mayor» nombre=»PRECIO»/>

      </fila>

    </pie-de-pagina>

</reporte>

MODO DE INSTALACION

Para la instalar WEBREPORT-ML, el usuario deberá copiar la carpeta reportml que se encuentra el CD de instalación en el directorio Coligo Fuente, al disco duro y después crear un nuevo Context en el servidor de Apache TOMCAT, el alias debe ser /reportml y el documento base debe ser c:/reportml.

Para desinstalarlo, solo se elimina el Context del servidor y se borra el directorio de la raíz de C: .

Cabe recordar que dentro del directorio reportml  se encuentra el directorio waren el cual se encuentra el archivo WebReport.war. Para instalar este archivo, hay dos opciones:

OPCION 1:

1) Copiar el fichero war a TOMCAT / webapps

2) Arrancar el servidor

3) La instalación es automática y crea un nuevo directorio con los contenidos del war.

OPCION 2:

1) Crear la aplicación Web descomprimida en webapps siguiendo el formato estándar.

2) Añadir en TOMCAT / conf / server.xml un nuevo contexto que apunte a nuestro directorio:

<Context path=»/sob» docBase=»peter» debug=»0″ privileged=»true»>

</Context>

NOTA: En su momento este proyecto fue diseñado y desarrollado bajo windows, sin embargo, puede funcionar con sistemas operativos linux y macOs. Puedes acceder a todo el proyecto a través de su repositorio oficial en github: https://github.com/rrcyber/WebReportML/

Redimensionar particiones con GParted

Los discos duros modernos pueden almacenar grandes cantidades de información. Para utilizar eficazmente todo este espacio, puedes particionar las unidades de disco en áreas de almacenamiento separadas. Estas áreas de almacenamiento separadas le permiten organizar sus datos, mejorar el rendimiento del sistema e instalar y utilizar muchos sistemas operativos.





Moviendo espacio entre particiones

  • Cómo administrar particiones con GParted


Gracias a las capturas de pantalla que te ayudarán a utilizar eficazmente el disco duro. Comenzarás con tareas sencillas que te ayudarán a identificar unidades y particiones. A continuación, avanza hacia tareas que cubren los aspectos básicos de cómo aumentar, reducir, mover y copiar particiones sin pérdida de datos. Terminará con tareas avanzadas que utilizan los conceptos básicos para prepararse para nuevos sistemas operativos, migrar espacio entre particiones y compartir datos entre Windows, Linux y Mac OS X.



Siguiendo las tareas, desde las más básicas hasta las más avanzadas, este tutorial te proporcionará el conocimiento y las herramientas para Gestionar particiones con GParted.

 Mover espacio entre particiones


Puede ser frustrante quedarse sin espacio libre en una partición (por ejemplo, C:) cuando otra partición (por ejemplo, D:) tiene mucho. En esta receta cubrimos los pasos para migrar espacio libre de una partición a otra.

Preparación


Antes de realizar esta tarea, te recomendamos encarecidamente que hagas una copia de seguridad de tus datos. Esta tarea implica mover el inicio del límite de una partición, lo cual es una actividad de alto riesgo.

Cómo hacerlo...


    Selecciona la partición con mucho espacio libre.

    Disposición original del disco con una partición primaria completa a la izquierda seguida de una partición extendida que contiene una partición lógica con espacio libre.


    Elige la opción de menú Partición | Redimensionar/Mover y aparecerá una ventana Redimensionar/Mover.


    Haz clic en la parte izquierda de la partición y arrástrela hacia la derecha para que el espacio libre se reduzca a la mitad.

    Ventana Redimensionar/Mover con el espacio no asignado a la izquierda seguido de la partición comprimida


    Haz clic en Redimensionar/Mover para poner en cola la operación.


    Pulsa Aceptar para aceptar la advertencia de mover partición.

    Ventana de advertencia indicando que mover una partición puede hacer que el sistema operativo no arranque


    Selecciona la partición extendida.

    Disposición del disco mostrando una partición primaria completa seguida de una partición extendida que contiene espacio libre a la izquierda de una partición lógica


    Elige la opción de menú Partición | Redimensionar/Mover y se mostrará una ventana Redimensionar/Mover.


 Haz clic en el lado izquierdo de la partición y arrástrela hacia la derecha para que no quede espacio entre el límite exterior de la partición extendida y el límite interior de la partición lógica.

Ventana Redimensionar/Mover con espacio libre a la izquierda de la partición extendida y la partición lógica encajando perfectamente dentro de la partición extendida.


Haz clic en Redimensionar/Mover para poner en cola la operación.


Selecciona la partición que necesita más espacio libre:

Disposición del disco con una partición primaria completa a la izquierda, seguida de espacio sin asignar seguido de una partición extendida que contiene totalmente una partición lógica


Elige la opción de menú Partición | Redimensionar/Mover y se mostrará una ventana Redimensionar/Mover.


Haz clic en el lado derecho de la partición y arrástrela lo más a la derecha posible:


Ventana Redimensionar/Mover con la partición ocupando todo el espacio

Haz clic en Redimensionar/Mover para poner en cola la operación:


Disposición del disco con una partición primaria que ya no está llena a la izquierda, seguida de una cantidad muy pequeña de espacio sin asignar seguida de una partición extendida que contiene completamente una partición lógica

    Observa el espacio sin asignar entre sda1 y sda2. Este espacio, que puede ser de hasta 8 MiB, ocurre debido a tener particiones alineadas por cilindros y por MiB en el mismo dispositivo de disco. En este ejemplo, la partición sda1 se creó con alineación de cilindros para demostrar este hueco potencial.


Elige la opción de menú Editar | Aplicar todas las operaciones para aplicar las operaciones en cola, al disco.


Haz clic en Aplicar para aplicar las operaciones al disco.

Aplicando 




 Cómo funciona..

Para añadir espacio a una partición, debe haber espacio sin asignar inmediatamente adyacente a la partición. Para liberar este espacio, utilizamos muchas de las recetas tratadas anteriormente.


En primer lugar, hicimos que el espacio no asignado estuviera disponible reduciendo la partición lógica en la que había espacio libre. Como el espacio libre procedía de una partición lógica dentro de una partición extendida, y necesitábamos añadir el espacio a una partición primaria, tuvimos que editar tres particiones para lograr el objetivo deseado.


  • Aún hay más...


Como se mencionó en recetas anteriores, si redimensiona o mueve una partición que contiene un sistema de archivos NTFS, debe reiniciar Windows dos veces para permitir que Windows realice comprobaciones de consistencia del sistema de archivos.

Aumentar o mover una partición


Para crecer o mover una partición, debe haber espacio sin asignar disponible adyacente a la partición:


  • Cuando se amplía una partición lógica, el espacio no asignado debe estar dentro de la partición extendida.
  •  Cuando se amplía una partición primaria, el espacio no asignado no debe estar dentro de la partición extendida.


Puede mover el espacio no asignado dentro o fuera de una partición extendida redimensionando los límites de la partición extendida. 


Fuentes:

https://gparted.org/display-doc.php%3Fname%3Dmoving-space-between-partitions

Proyecto: Biometría en Java, mySQL y el SDK de DigitalPersona

 

Hace un tiempo desarrollé un proyecto con Java y mySQL, el cual se basa en el registro y autenticación de usuarios a través del lector de huellas DigitalPersona 4500.

El proyecto está diseñado y desarrollado con Java, puede ser abierto a través de netbeans o eclipse. Funciona tanto en Windows como en Linux. El motor de base de datos es mySQL y utiliza el SDK de DigitalPersona.

Todo el proyecto está cargado en su repositorio oficial en github: https://github.com/rrcyber/Biometria

Scripts para actualizar automáticamente un servidor con Linux Debian

 

Me tomé la tarea de escribir 3 scripts para mejorar el proceso de actualización automática de un servidor con Linux Debian 11.

Cada uno de los script tiene la estructura similar a los demás, es por esa razón que te voy a explicar:

El script llamado «actualiza-servidor3.sh» realiza las siguientes actividades:

  1. Actualiza la lista de paquetes existentes en los repositorios de Debian 11.
  2. Actualiza los paquetes instalados a las últimas versiones disponibles.
  3. Elimina paquetes obsoletos y temporales.
  4. Comprueba si se requiere un reinicio del sistema, y en caso afirmativo, reinicia el servidor.

El script llamado «actualiza-servidor2.sh» realiza los mismos pasos que el anterior, pero también incluye algunas mejoras:

  1. Define variables globales para el archivo de registro ($LOGFILE) y la dirección de correo electrónico del destinatario ($EMAIL).
  2. Añade la fecha y la hora al archivo de registro antes de cada actualización.
  3. Redirige la salida de los comandos al archivo de registro (>> $LOGFILE 2>&1), para que se registren cualquier error o advertencia.
  4. Envía un correo electrónico de confirmación después de cada actualización.

Asegúrate de que el archivo tiene permisos de ejecución (chmod +x actualiza-servidor.sh).

El script llamado «actualiza-servidor1.sh» realiza los mismos pasos que el anterior, pero sin incluir la opción de enviar un correo electrónico de confirmación.

Para descargar los script, recuerda que están cargados en el repositorio oficial de github: https://github.com/rrcyber/scripts-administracion/tree/main/servidores

Script para detectar peticiones y conexiones en un servidor Linux

 

Hace un par de años escribí un pequeño código en shell-script, cuya única finalidad ha sido la de detectar peticiones y conexiones de direcciones ip externas e internas en la red de una empresa, hacia un servidor.

Este servidor pide como único requisito tener sistema operativo Linux (aún no se ha probado en Windows Server).

El script está publicado en github y se distribuye bajo licencia GNU General Public License v3.0.

Si deseas descargar el script puedes visitar el repositorio oficial: https://github.com/rrcyber/Anti-DDoS

Bomba fork

 

 

Una bomba fork es una forma de ataque del tipo denegación de servicio sobre un computador implementando una operación fork o alguna otra funcionalidad equivalente mediante la cual un proceso es capaz de autorreplicarse. La bomba fork es considerado un wabbit ya que no se autorreplica de la misma forma que los gusanos o los virus. Su efecto se basa en la suposición de que el número de programas y procesos que se ejecutan simultáneamente en un ordenador tiene un límite.

Una bomba fork funciona creando una gran cantidad de procesos muy rápidamente con el objetivo de saturar el espacio disponible en la lista de procesos mantenida por el sistema operativo del computador. Si la tabla de procesos se llega a saturar, entonces no se pueden iniciar nuevos programas hasta que no se cierre alguno. En el caso de que esto suceda, es muy poco probable que se pueda iniciar un programa útil ya que los procesos de la bomba estarán esperando para poder crear nuevos procesos a la primera oportunidad que se les conceda.

Las bombas fork no sólo ocupan espacio dentro de la lista de procesos, también consumen tiempo de proceso y memoria de la máquina donde se ejecutan. Como resultado de esto, los ordenadores se vuelven lentos e incluso se pueden volver inutilizables dada la falta de memoria y la imposibilidad de aprovechar el procesador.

Se puede prevenir?

La respuesta es si. Afortunadamente para el usuario final, ya existen soluciones antivirus que cuentan con una protección para este tipo de ataques, tales como Kaspersky Endpoint Security.

El firewall y el sandbox embebidos en esta solución son capaces de detectar cualquier tipo de ataque en tiempo real, gracias a la sincronización de sus motores de análisis de amenazas con la nube Kaspersky Security Network.

Algunos ejemplos

Código fuente de una bomba fork programada en Batch funcional en cualquier versión de Microsoft Windows:

%0|%0

O bien, una reacción más rápida:

:s
start "" %0
goto :s

Código fuente de una bomba fork programada en UNIX C o C++:

#include <unistd.h>

int main()
 {
  while(true)
 {
    fork();
 }
  return 0;
}

Bomba fork para bash de linux

:(){ :|:& };:

O de forma larga

#!/bin/bash
bomba(){
  bomba | bomba & 
}
bomba

En Perl:

fork while fork

En Python:

import os

while True:
     os.fork()

En Ruby:

def forkbomb
  loop { fork { forkbomb }  }
end; forkbomb

La evolución de los malware en Linux

 

Cuando el malware inició en los sistemas información, todos creímos que únicamente infectarían equipos con sistema operativo Windows, sin embargo, con el paso del tiempo estos códigos maliciosos han ido evolucionando a tal punto de infectar a cualquier sistema operativo de los que se encuentran actualmente en el mercado.

Ya no es necesario tener un equipo conectado a Internet, debido a que la infección puede llegar incluso si se conecta un dispositivo USB que sea «portador» de este tipo de códigos.

En estos últimos meses, investigadores de ciberseguridad han logrado detectar 3 tipos de malware diferentes, catalogados como peligrosos, casi que indetectables y que además pueden llegar dañar completamente los sistemas de información.

Orbit, este malware para Linux se diferencia de otras amenazas, debido a que roba información de diferentes comandos y procesos del sistema operativo. Posteriormente, el malware almacena la información robada en archivos específicos en la máquina, según revelaron los investigadores de la firma de automatización de seguridad Intezer. De hecho, el nombre del malware proviene de uno de los nombres de archivo para almacenar temporalmente la salida de los comandos ejecutados.

Orbit puede lograr la persistencia en una máquina o instalarse como un implante volátil, explicó Nicole Fishbein de Intezer en una publicación realizada la semana pasada.

OrBit no es el primer malware de Linux altamente evasivo que ha surgido recientemente, capaz de usar enfoques similares para comprometer completamente los dispositivos con puerta trasera.

Symbiote también usa la directiva LD_PRELOAD para cargarse en procesos en ejecución, actuando como un parásito en todo el sistema y sin dejar signos de infección.

BPFDoor, otro malware detectado recientemente que se dirige a los sistemas Linux, se camufla usando los nombres de los demonios comunes de Linux. Esto le ayudó a pasar desapercibido durante más de cinco años.

Artículo original: https://hackwise.mx/este-nuevo-y-sigiloso-malware-roba-datos-de-dispositivos-linux/