Saltar a contenido

Sistemas

Actualizando Zabbix 5.0 LTS a 6.0 LTS en Rocky Linux

Zabbix es un software de monitorización que permite monitorizar la red, servidores, entornos cloud, aplicaciones que puede ejecutarse en entornos on premise y en entornos cloud. Tiene como características escalabilidad ilimitada, monitorización distribuída, alta disponibilidad, es flexible y segura.

Es fácil de implementar y posee compatibilidad con MariaDB y PostgreSQL como sistema de gestión y tratamiento de datos. Es un proyecto open source bastante atractivo y con alta actividad tanto en IRC (Libera.chat) como en sus foros.

En este tutorial veremos cómo hacer la actualización con el siguiente esquema de servidor:

Puesta en marcha

Pre:

  • RockyLinux 8.5
  • MariaDB 10.3
  • Zabbix 5.0 LTS
  • NGINX

Post:

  • RockyLinux 8.5
  • MariaDB 10.5
  • Zabbix 6.0 LTS
  • NGINX

NOTA: Si podemos hacer snapshot del servidor, apagamos el servidor, lo hacemos e iniciamos el sistema.

  1. Deshabilitamos todos los User media tales como integraciones con Slack, Telegram, Email... para evitar avisos

  2. Apagamos los siguientes servicios:

sudo systemctl stop nginx.service
sudo systemctl stop zabbix-server.service
sudo systemctl stop zabbix-proxy.service # En caso de que tuvieras
sudo systemctl stop zabbix-agent.service 
sudo systemctl stop zabbix-agent2.service # Depende cuál uses
  1. Hacemos un backup de la base de datos y de otras configuraciones esenciales de Zabbix.
sudo mkdir /opt/zabbix-backup/
mysqldump -u root zabbix > dump.sql
sudo mv dump.sql /opt/zabbix-backup/dump.sql
sudo cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
sudo cp /etc/nginx/conf.d/zabbix.conf  /opt/zabbix-backup/
sudo cp -R /usr/share/zabbix/ /opt/zabbix-backup/
sudo cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/
  1. Apagamos la base de datos
sudo systemctl stop mariadb.service
  1. Instalamos el nuevo repositorio
sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
  1. Actualizamos los paquetes
sudo dnf upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-nginx-conf
  1. Comprobamos las configuraciones que tengamos en /etc/nginx/conf.d/ y aplicamos los cambios convenientes (Mejor que se respete la nueva y los cambios que se introduzcan sean los de los certificados por ejemplo)

  2. Eliminamos la versión anterior de MariaDB

    NOTA: Si no, no podrás instalarla porque da conflictos. Los archivos quedan guardados en /var/lib/mysql no se eliminan.

sudo dnf remove mariadb-server
  1. Desactivamos la rama 10.3 y activamos 10.5
sudo dnf -y module disable mariadb:10.3
sudo dnf -y module enable mariadb:10.5
  1. Instalamos la nueva versión
sudo dnf install mariadb-server

NOTA: Verás que es la 10.5 y no 10.3, si es así, mejor que vuelvas al paso anterior.

  1. Arrancamos el servidor
sudo systemctl enable --now mariadb.service
  1. Ejecutamos el upgrade:
sudo mysql_upgrade -u root -p

NOTA: ¿Por qué ejecutarlo con sudo? Porque si no, no podrá crear el archivo de información resultante: /var/lib/mysql/mysql_upgrade_info.

Veremos una salida como esta:

Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.gtid_slave_pos                               OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.index_stats                                  OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.roles_mapping                                OK
mysql.servers                                      OK
mysql.table_stats                                  OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.transaction_registry                         OK
mysql.user                                         OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
performance_schema
zabbix
zabbix.acknowledges                                OK
zabbix.actions                                     OK
zabbix.alerts                                      OK
zabbix.application_discovery                       OK
zabbix.application_prototype                       OK
zabbix.application_template                        OK
zabbix.applications                                OK
zabbix.auditlog                                    OK
zabbix.auditlog_details                            OK
zabbix.autoreg_host                                OK
zabbix.conditions                                  OK
zabbix.config                                      OK
zabbix.config_autoreg_tls                          OK
zabbix.corr_condition                              OK
zabbix.corr_condition_group                        OK
zabbix.corr_condition_tag                          OK
zabbix.corr_condition_tagpair                      OK
zabbix.corr_condition_tagvalue                     OK
zabbix.corr_operation                              OK
zabbix.correlation                                 OK
zabbix.dashboard                                   OK
zabbix.dashboard_user                              OK
zabbix.dashboard_usrgrp                            OK
zabbix.dbversion                                   OK
zabbix.dchecks                                     OK
zabbix.dhosts                                      OK
zabbix.drules                                      OK
zabbix.dservices                                   OK
zabbix.escalations                                 OK
zabbix.event_recovery                              OK
zabbix.event_suppress                              OK
zabbix.event_tag                                   OK
zabbix.events                                      OK
zabbix.expressions                                 OK
zabbix.functions                                   OK
zabbix.globalmacro                                 OK
zabbix.globalvars                                  OK
zabbix.graph_discovery                             OK
zabbix.graph_theme                                 OK
zabbix.graphs                                      OK
zabbix.graphs_items                                OK
zabbix.group_discovery                             OK
zabbix.group_prototype                             OK
zabbix.history                                     OK
zabbix.history_log                                 OK
zabbix.history_str                                 OK
zabbix.history_text                                OK
zabbix.history_uint                                OK
zabbix.host_discovery                              OK
zabbix.host_inventory                              OK
zabbix.host_tag                                    OK
zabbix.hostmacro                                   OK
zabbix.hosts                                       OK
zabbix.hosts_groups                                OK
zabbix.hosts_templates                             OK
zabbix.housekeeper                                 OK
zabbix.hstgrp                                      OK
zabbix.httpstep                                    OK
zabbix.httpstep_field                              OK
zabbix.httpstepitem                                OK
zabbix.httptest                                    OK
zabbix.httptest_field                              OK
zabbix.httptestitem                                OK
zabbix.icon_map                                    OK
zabbix.icon_mapping                                OK
zabbix.ids                                         OK
zabbix.images                                      OK
zabbix.interface                                   OK
zabbix.interface_discovery                         OK
zabbix.interface_snmp                              OK
zabbix.item_application_prototype                  OK
zabbix.item_condition                              OK
zabbix.item_discovery                              OK
zabbix.item_preproc                                OK
zabbix.item_rtdata                                 OK
zabbix.items                                       OK
zabbix.items_applications                          OK
zabbix.lld_macro_path                              OK
zabbix.lld_override                                OK
zabbix.lld_override_condition                      OK
zabbix.lld_override_opdiscover                     OK
zabbix.lld_override_operation                      OK
zabbix.lld_override_ophistory                      OK
zabbix.lld_override_opinventory                    OK
zabbix.lld_override_opperiod                       OK
zabbix.lld_override_opseverity                     OK
zabbix.lld_override_opstatus                       OK
zabbix.lld_override_optag                          OK
zabbix.lld_override_optemplate                     OK
zabbix.lld_override_optrends                       OK
zabbix.maintenance_tag                             OK
zabbix.maintenances                                OK
zabbix.maintenances_groups                         OK
zabbix.maintenances_hosts                          OK
zabbix.maintenances_windows                        OK
zabbix.mappings                                    OK
zabbix.media                                       OK
zabbix.media_type                                  OK
zabbix.media_type_message                          OK
zabbix.media_type_param                            OK
zabbix.module                                      OK
zabbix.opcommand                                   OK
zabbix.opcommand_grp                               OK
zabbix.opcommand_hst                               OK
zabbix.opconditions                                OK
zabbix.operations                                  OK
zabbix.opgroup                                     OK
zabbix.opinventory                                 OK
zabbix.opmessage                                   OK
zabbix.opmessage_grp                               OK
zabbix.opmessage_usr                               OK
zabbix.optemplate                                  OK
zabbix.problem                                     OK
zabbix.problem_tag                                 OK
zabbix.profiles                                    OK
zabbix.proxy_autoreg_host                          OK
zabbix.proxy_dhistory                              OK
zabbix.proxy_history                               OK
zabbix.regexps                                     OK
zabbix.rights                                      OK
zabbix.screen_user                                 OK
zabbix.screen_usrgrp                               OK
zabbix.screens                                     OK
zabbix.screens_items                               OK
zabbix.scripts                                     OK
zabbix.service_alarms                              OK
zabbix.services                                    OK
zabbix.services_links                              OK
zabbix.services_times                              OK
zabbix.sessions                                    OK
zabbix.slides                                      OK
zabbix.slideshow_user                              OK
zabbix.slideshow_usrgrp                            OK
zabbix.slideshows                                  OK
zabbix.sysmap_element_trigger                      OK
zabbix.sysmap_element_url                          OK
zabbix.sysmap_shape                                OK
zabbix.sysmap_url                                  OK
zabbix.sysmap_user                                 OK
zabbix.sysmap_usrgrp                               OK
zabbix.sysmaps                                     OK
zabbix.sysmaps_elements                            OK
zabbix.sysmaps_link_triggers                       OK
zabbix.sysmaps_links                               OK
zabbix.tag_filter                                  OK
zabbix.task                                        OK
zabbix.task_acknowledge                            OK
zabbix.task_check_now                              OK
zabbix.task_close_problem                          OK
zabbix.task_data                                   OK
zabbix.task_remote_command                         OK
zabbix.task_remote_command_result                  OK
zabbix.task_result                                 OK
zabbix.timeperiods                                 OK
zabbix.trends                                      OK
zabbix.trends_uint                                 OK
zabbix.trigger_depends                             OK
zabbix.trigger_discovery                           OK
zabbix.trigger_tag                                 OK
zabbix.triggers                                    OK
zabbix.users                                       OK
zabbix.users_groups                                OK
zabbix.usrgrp                                      OK
zabbix.valuemaps                                   OK
zabbix.widget                                      OK
zabbix.widget_field                                OK
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
  1. Iniciamos los servicios
sudo systemctl start zabbix-server.service
sudo systemctl start zabbix-proxy.service # En caso de que tuvieras
sudo systemctl start zabbix-agent.service 
sudo systemctl start zabbix-agent2.service # Depende cuál uses
sudo systemctl start nginx.service
  1. Ya deberías poder acceder al portal de login.

Recursos

  • Documentación oficial: Zabbix

Actualiza de Fedora 31 a Fedora 32

Si tienes Fedora 31 y estás tan desesperado por tener la nueva versión como yo, entonces te voy a guiar en esta senda oscura y pantanosa sobre cómo hacerlo.

Primeros pasos

Antes de ponernos hacer nada, actualizamos todo el sistema:

$ sudo dnf clean all
$ sudo dnf upgrade --refresh

Con estos procesos eliminamos paquetes viejos, informaciones que hayan en cache de los repositorios viejos...etc y actualizamos el software pendiente.

Reiniciamos el sistema por si tenemos algún kernel nuevo instalado:

$ sudo systemctl reboot

Instalamos este paquete:

$ sudo dnf install dnf-plugin-system-upgrade

Descargamos todos los nuevos paquetes de F32:

$ sudo dnf system-upgrade download --refresh --releasever=32 --allowerasing

Como Fedora 32 ha eliminado su soporte con Python 2.7, si no añades el parámetro --allowerasing y tienes GIMP instalado por ejemplo, te dará un error como este:

Problem: conflicting requests
  - nothing provides module(platform:f31) needed by module gimp:2.10:3120191106095052:f636be4b-0.x86_64
Error: 
 Problem: package python2-beautifulsoup4-4.9.0-1.fc31.noarch requires python2-lxml, but none of the providers can be installed
  - python2-lxml-4.4.0-1.fc31.x86_64 does not belong to a distupgrade repository
  - problem with installed package python2-beautifulsoup4-4.9.0-1.fc31.noarch
(try to add '--skip-broken' to skip uninstallable packages)

NOTA: ¿Por qué no usar --skip-broken? Porque se supone que Fedora 32 tiene todas las dependencias arregladas para que no se use Python 2.7, mantener instalado un paquete que ya no está mantenido es un problema de seguridad.

Una vez que lo ejecutemos nos aparecerá un mensaje como este:

Before you continue ensure that your system is fully upgraded by running "dnf --refresh upgrade". Do you want to continue [y/N]: 

Escribimos y y pulsamos Enter.

Se empezarán a refrescar los repositorios, nos avisará de que el módulo de GIMP u otro software que tenga Python 2.7 se eliminará y nos pide confirmación.

Total download size: 2.4 G
DNF will only download packages, install gpg keys, and check the transaction.
Is this ok [y/N]: 

Escribimos y y pulsamos Enter.

Este es un video ejemplo:

Cuando hayamos terminado ejecutamos: NOTA: El siguiente proceso va a demorarse bastante tiempo, tómate un café, una cerveza o haz palomitas. Si vas a actualizar un portátil, no te olvides de conectarlo a la corriente.

sudo dnf system-upgrade reboot

Adjunto algunas capturas de como va el proceso de instalación después de reiniciar el sistema. Yo al no utilizar plymouth ni decoros, es posible que veas más "bonita" la actualización.

Después de arrancar, comenzará a instalar actualizaciones:

Una vez que termine, te comunicará que reiniciará el sistema:

Este es el getor de arranque con el nuevo kernel instalado:

Y voilá ya tendremos SO:

Si experimentas algún problema, puedes revisar la sección de errores frecuentes de la documentación aquí.

Como clonar discos duros en Linux usando Clonezilla

Clonezilla es un proyecto de software libre muy conocido entre otras funciones como herramienta de clonación de dispositivos de almacenamiento como discos duros, memorias USB entre otros.

Este proyecto distribuye dos tipos de versiones, una live que nos permite hacer una copia de seguridad o una restauración en menos que canta un gallo, pero para una máquina.

Mientras que la versión para servidor permite hacer clonación de hasta 40 máquinas a la vez. Clonezilla cuenta con dos ramas de desarrollo, estable y de pruebas ambas cuentan con una imagen basada en Debian y otra en Ubuntu.

Características

  • Soporta un gran número de sistemas de archivos como EXT[2-4], Reiser[FS-4], XFS, JFS, BTRFS, F2F2, NTFS, LVM2...
  • Incluye el gestor de arranque tanto para MBR como GPT
  • Soporta arranque por UEFI y también por red
  • Permite clonar todo el disco o por particiones
  • Se puede almacenar el contenido de un disco, o partición en ficheros .img
  • y mucho más...

Lo malo

  • El dispositivo de almacenamiento de origen tiene que tener el mismo espacio que el dispositivo destino
  • No hay copia de seguridad incremental o diferencial (aún)
  • No se puede clonar en caliente (aún)
  • Y algunas cosas más que puedes ver en su página oficial.

¡Al lío!

En el siguiente vídeo vamos a ver como realizar la clonación completa de dos discos duros paso por paso.

Recursos

¿Cómo obtener ayuda en sistemas UNIX-like?

¿Qué pasa cuando tenemos algún problema con algún comando, no tenemos muy clara el parámetro que tendríamos que utilizar, saber bien si es realmente ese comando..etc?

Bien los sistemas UNIX-like como FreeBSD, Linux... por excelencia poseen una serie de herramientas como el comando man(1), info(1), help(1)... que vienen con el sistema operativo que podemos utilizarlos para salvarnos de un buen apuro. Si bien son conocidos estos sistemas son por su extensa y grande documentación otorgándoles muchísima profesionalidad y calidad.

man

El comando man(1) es un interfaz en modo texto escrito por John W. Eaton entre el 1990 y 1993. Este nos permite visualizar los manuales de los comandos y programas que tengamos instalados en el sistema. Por lo general suelen contener multitud de ejemplos, descripciones sobre lo qué hace el comando o programa así como también explica para qué sirve cada parámetro que queramos utilizar. Es como un biblia en verso. man(1) dispone de una base de datos dónde almacena las rutas de la documentación para facilitar un acceso casi instantáneo a los archivos, la configuración de ésta se encuentra en el directorio /etc/man_db.conf y para regenerarla o crearle se utiliza el comando mandb(8)

Su sintaxis más básica es la siguiente:

man [n] comando
* man es el nombre del comando
* n es el número de categoría que puede tener el programa en el sistema, ya que pueden haber dos comandos iguales y pueden despitarnos a la hora de obtener el manual correcto.
* comando nos permitirá visualizar el manual para este

Categorías

Nº cat Descripción
1 Ejecutables o comandos que tienen que ver con el shell
2 Llamadas al sistema que son funciones provistas por el kernel
3 Llamadas a librerías que son funciones dentro de las librerías de los programas
4 Ficheros especiales que suelen encontrarse en /dev
5 Formatos y convenciones de archivos como por ejemplo /etc/passwd
6 Juegos
7 Miscelánea que también incluye macro paquetes y sus convenciones como man(7), groff(7)
8 Comandos de administración del sistema que suele utilizar el usuario root
9 Rutinas del kernel que no son estándar

¿Cómo funciona man?

Seguramente que nos lo preguntemos por la cantidad de categorías que hay y sobre todo porque hay muchos comandos que posiblemente se encuentren repetidos. Bien, cuando nosotros llamamos a man(1) sin especificar una categoría, lo que hace es buscar en todas las categorías pero de forma consecutiva, es decir, 1 1p 8 2 3 3p 4 5 6 7 9 0p n lp o 1x 2x 3x 4x 5x 6x 7x 8x.

¿Qué secciones contiene cada manual?

Cada página de manual contiene una serie de secciones que nos permiten organizar la información de tal forma que no se mezcle y siendo bastante útil y práctica. También es verdad que muchas páginas de los manuales no contienen todas las secciones e incluso pueden que tengan secciones personalizadas como es el caso del comando info(1) que contiene una sección llamada COPYRIGHT y REPORTING BUGS.

Sección Descripción
NAME Nombre del programa, comando...
SYNOPSIS Sintaxis, parámetros y un poco cómo utilizar el comando
CONFIGURATION Apartado de configuración
DESCRIPTION En este apartado se explica qué hace el comando, finalidad...
OPTIONS Explicación intensiva de cada una de las opciones y parámetros del software
EXIT STATUS Número de salida de ejecución de un comando, script...
RETURN VALUE Tipo de valor que devuelve X cosa, generalmente suelen ser funciones
ERRORS Se explica por qué pueden producirse determinados errores controlados
ENVIRONMENT Variables de entorno
FILES Ficheros involucrados en el funcionamiento del comando o aplicación
VERSIONS Cambios añadidos en las versiones del software
CONFORMING TO Citando estándares o información en concreto
NOTES Información adicional
BUGS Aparta de información para reportar errores tipo Bugzilla
EXAMPLE Ejemplos de cómo habría que ejecutarse o configurarse determinado software
AUTHORS Responsables del diseño del programa
SEE ALSO Tipo README adicional

Preformateo en las secciones:

Según el man del comando man, en la sección de SYNOPSIS si o sí, debería hacer uso de un estándar de formato para diferenciar parámetros o argumentos obligatorios y que este, puede extenderse en el resto de secciones.

  • texto en negrita: Exactamente como se muestra
  • texto en cursiva: Reemplazar con un argumento apropiado
  • [-abc]: Cualquiera o todos los argumentos que se encuentren dentro de los corchetes son opcionales
  • -a|-b: Opciones delimitadas por el caracter | o que se no se pueden utilizar en conjunto
  • argumento: Argumento que se puede repetir
  • [expresion]: Toda la expresión que se encuentre dentro de unos corchetes pueden repetirse

Este tipo de formato se puede interpretar de una forma diferente devido al dispositivo que se esté utilizando, ya que hay intérpretes de comandos que no pueden reproducir un subrayado, palabras en cursiva...etc

¿Cómo manejar info?

Para interactuar con man(1), podemos hacer uso de las flechas direccionales, no obstante, en la siguiente tabla resumiremos un poco algunos atajos que nos servirán para empezar a manejarlo:

Atajo Descripción
h H Muestra la ayuda de navegación
q :q Q :Q ZZ Sale del man
j e Desplaza la información hacia arriba línea a línea
k Mueve la información hacia abajo línea a línea
d z f Desplaza unas cuántas líneas hacia arriba
b y Desplaza unas cuántas líneas hacia abajo
g w Comienzo de página
1,20,200... Corre el texto tantos caracteres se le comunique
/expresión Busca en el texto alguna coincidencia con lo escrito
n Permite volver a buscar una misma coincidencia con lo buscado con /

¿Dónde se encuentra la documentación?

En general, toda la documentación se encuentra en el directorio /usr/share/man, también puede encontrarse en /usr/local/share/man o en directorios ya facilitados por el propio software a la hora de compilarse o empaquetarse.

Encontrar información relacionada

Si no nos acordamos del comando podemos buscarlo mediante relación de coincidencias haciendo uso del parámetro -k

man -k download

ascii-xfr (1)        - upload/download files using the ASCII protocol
dnf.plugin.download (8) - DNF download Plugin
git-fetch (1)        - Download objects and refs from another repository
git-http-fetch (1)   - Download from a remote Git repository via HTTP
repotrack (1)        - track a package and its dependencies and download them
smbget (1)           - wget-like utility for download files over SMB
update-pciids (8)    - download new version of the PCI ID list
wget (1)             - The non-interactive network downloader.
XkbSetIndicatorMap (3) - Downloads the changes to the server based on modific...
yumdownloader (1)    - download RPM packages from Yum repositories

Regenerando la base de datos

Para regenerar la base de datos de man, simplemente ejecutaremos:

sudo mandb

Comando info

El comando info(1) desarrollado por la Free Software Foundation (FSF) nos provee un lector de documentación elaborada en formato info. Por lo generla, si ejecutamos info(1) a secas, nos saldrá como una especie de página con hipervínculos por dónde podemos navegar entre las diferentes páginas disponibles como si de una página Web en modo texto se tratase.

Si nos dirigimos a los vínculos que se encuentran subrayados y pulsamos enter, accedemos directamente a dicha página. Las páginas pueden contener un índice facilitando la navegación.

Para más información sobre el comando info, info info

Comandos con parámetro de ayuda

Por regla general, cada comando suele tener una pequeña ayuda que describe un poco para qué sirve cada parámetro en resumidas líneas.

Por ejemplo, veamos la salida del comando ls(1) NOTA: Recortaremos la salida del comando porque es muy largo

Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                               e.g., '--block-size=M'; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~

Como podemos ver nos da una breve explicación de lo que hace cada parámetro.

Si no hacen uso de --help, otros comandos también disponen de -h como dmesg(1): NOTA: También hemos recortado la salida de este comando debido al tamaño de su salida

Usage:
 dmesg [options]

Display or control the kernel ring buffer.

Options:
 -C, --clear                 clear the kernel ring buffer
 -c, --read-clear            read and clear all messages
 -D, --console-off           disable printing messages to console
 -E, --console-on            enable printing messages to console
 -F, --file <file>           use the file instead of the kernel log buffer
 -f, --facility <list>       restrict output to defined facilities
 -H, --human                 human readable output

Comando help

Este comando provee de información sobre comandos integrados en la shell como los condicionales, bucles, variables... veamos un ejemplo:

function: function name { COMMANDS ; } or name () { COMMANDS ; }
    Define shell function.

    Create a shell function named NAME.  When invoked as a simple command,
    NAME runs COMMANDs in the calling shell's context.  When NAME is invoked,
    the arguments are passed to the function as $1...$n, and the function's
    name is in $FUNCNAME.

    Exit Status:
    Returns success unless NAME is readonly.

Veamos otro:

variables: variables - Names and meanings of some shell variables
    Common shell variable names and usage.

    BASH_VERSION    Version information for this Bash.
    CDPATH  A colon-separated list of directories to search
            for directories given as arguments to `cd'.
    GLOBIGNORE  A colon-separated list of patterns describing filenames to
            be ignored by pathname expansion.
    HISTFILE    The name of the file where your command history is stored.
    HISTFILESIZE    The maximum number of lines this file can contain.
    HISTSIZE    The maximum number of history lines that a running

Como vemos en uno nos explica la sintaxis de una función (que veremos más adelante) y de las variables de entorno, con una salida recortada ya que esta es muy larga.

Y esto es todo compañer@s, no se olviden de que cada proyecto, software, aplicación, comandos...etc suelen tener a disposición al menos un pequeño manual de como utilizarse además de que dependiendo de su envergadura, puede estar sustentado por una comunidad que favorezca el intercambio de información y se impulsen más características, más documentación y más de todo.

¡Espero que les haya gustado!

Fuentes

  • man(1) pages
  • info(1) pages

¿Cómo solucionar el problema de Netflix y Vivaldi en Linux?

En el post anterior, estuvimos hablando sobre Vilvadi. Un navegador que se liberó en contraposición del rumbo que tomó Opera con su comunidad dando origen a su primera versión el 12 de abril del 2016.

Sin embargo, hemos tenido problemas al reproducir videos con Netflix o Atres Player porque al parecer hay un problema con los códecs. Fedora por ejemplo no incorpora códecs propietarios a menos que instales un repositorio adicional y los instales. No obstante, hemos hecho un sondeo por sus foros y hemos encontrado bastantes post que ocurrían en diferentes distribuciones de Linux. * Netflix and Vivaldi on Linux? * Netflix only works when Chrome is installed * Netflix videos doesn't work :( * Netflix don't find widevine and I'm pretty desperate now * Movie Sites Won't Play

...etc

¿Cómo solucionarlo?

Pues bien, uno de estos post, indicaban la instalación de una librería (libffmpeg.so) que viene dentro de un paquete que se obtiene de los repositorios de Ubuntu

Linux 32 Bits

wget -c http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-browser_67.0.3396.99-0ubuntu1_i386.deb
ar vx chromium-browser_67.0.3396.99-0ubuntu1_i386.deb
tar -xjvf data.tar.xz 
sudo cp usr/lib/chromium-browser/libffmpeg.so /opt/vivaldi/lib
rm -rf usr/

Linux 64 bits

wget -c http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-codecs-ffmpeg-extra_67.0.3396.99-0ubuntu1_amd64.deb
ar vx chromium-codecs-ffmpeg-extra_67.0.3396.99-0ubuntu1_amd64.deb
tar -xjvf data.tar.xz 
sudo cp usr/lib/chromium-browser/libffmpeg.so /opt/vivaldi/lib
rm -rf usr/

Reiniciamos el navegador y ¡ya tendría que estar solucionado! Hay otras alternativas como un script que sacó un usuario de la comunidad de Vivaldi llamado @ruario que es de donde hemos sacado la URL del paquete necesario.

¡Sin duda alguna le agradecemos el aporte desde Echemos un bitstazo!

¿Qué es la conversión de números?

En informática tendremos que enfrentarnos con varios problemas que requieren de soluciones distintas haciendo uso de la capacidad resolutiva para según que problemas con los que nos podamos encontrar en el ámbito de sistemas, haciendo uso de algoritmos para sacarnos de apuros en desarrollo Web, e incluso, haciendo un proceso de descartes en base a pruebas de rendimiento.

Aquí todo es posible, sin embargo, también debemos aprender las unidades básicas con la que las máquinas trabajan para enviar información a bajo nivel, obtener un color para nuestros desarrollos Web...etc Todo esto lo aprenderemos aquí.

Binario

Los números binarios son aquellos que están comprendidos entre 0 y 1 utilizando como base el 2. Esto representa la condición eléctrica, es decir, 0 es apagado y 1 es encendido.

Binario => Decimal BIN->DEC

Para convertir de binario a decimal tenemos dos formas de hacerlo.

  • Mediante el uso de una tabla exponencial
  • Tabla de exponentes

Mediante posición

Para convertir mediante posición, lo único que deberemos hacer, es saber en qué posición tenemos cada número y utilizar las potencias.

110101(2) => Decimal

((1*2⁵)+(1*2⁴)+(0*2³)+(1*2²)+(0*2¹)+(1*2⁰)) =
((1*2⁵)+(1*2⁴)+(1*2²)+(1*2⁰)) = 53(10)

53(10) es nuestro número decimal.

Tabla de exponentes

Dibujamos una tabla en relación al número que creemos que podamos obtener.

128 64 32 16 8 4 2 1
2⁷ 2⁶ 2⁵ 2⁴ 2⁰

Y en base al número que nos den, comenzamos a comparar de menor a mayor. Por ejemplo:

128 64 32 16 8 4 2 1
105 0 1 1 0 1 0 0 1

Binario => Hexadecimal

Tenemos que tener en cuenta la siguiente equivalencia:

Hexadecimal Binario
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Para convertir tan solo necesitaremos traducir cifra por cifra en base a esta tabla. Por ejemplo: 1010111101100100

1010 = A
1111 = F
0110 = 6
0100 = 4

Nuestro número es: AF64

Binario -> Octal

Tenemos que tener presente la siguiente equivalencia:

Decimal Binario
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

El octal solo hace uso de 3 bits, y no de 4 como el decimal o hexadecimal. Tomaremos los 3 primeros bits y los separamos para hacer la conversión.

1 010 010 111(2) = x(8)

1 010 111 => Vemos como el 1 está solo, por ello, le añadimos 2 ceros para normalizarlo.
001 010 111.

Nuestro número es: 127(8)

Decimal

Son números comprendidos entre 0 y 9, hacen uso de base 10. Estos se suelen utilizar mucho para representar la numeración IPv4, obtener un color para aplicarlo en desarrollo Web mediante la función rgb/rgba()...etc

Decimal => Binario DEC->BIN

Para convertir de binario a decimal tenemos dos formas de hacerlo.

  • Mediante división
  • Tabla exponencial

División

Para convertir de decimal a binario, simplemente tenemos que tener en cuenta el resto de la división, ignorar los decimales y continuar dividiendo el número del cociente hasta que ya no pueda dividirse más. Para reconstruir el número, se seleccionan de derecha a izquierda.

Por ejemplo:

362|2 = 0
181|2 = 1
 90|2 = 0
 45|2 = 1
 22|2 = 0
 11|2 = 1
  5|2 = 1
  2|2 = 0
  0|2 = 1

101101010

Tabla de exponentes

Dibujamos una tabla en relación al número que creemos que podamos obtener.

128 64 32 16 8 4 2 1
2⁷ 2⁶ 2⁵ 2⁴ 2⁰

Y en base al número que nos den, comenzamos a comparar de menor a mayor. Por ejemplo:

128 64 32 16 8 4 2 1
105 0 1 1 0 1 0 0 1

Decimal -> Hexadecimal

Dividimos el número entre 16 utilizamos el cociente para seguir dividiendo sin utilizar los decimales resultantes. Posteriormente, para obtener el resto, se multiplica el decimal obtenido de la división por 16 que es la base para obtener el resto.

Por ejemplo: 2937(10) -> x(16)

2937|16 = 183.5625 -> Resto = 0.5625*16 = 9
 183|16 = 11.4375 -> Re = 0.4375*16 = 7
  11|16 = 0.6875 -> Re = 0.6875*16 = B

Con lo que nuestro nº es: B79(16)

Decimal -> Octal

Se divide el número decimal entre 8, se desestiman los decimales, y el último número que ya no puede ser divisible se queda tal cual como resto formando parte del nº. Se lee de derecha hacia la izquierda.

210(10) = x(8)

210|8 = Resto =2
 26|8 = Re = 2
  3|8 = Re =3

Nuestro número es: 322.

Hexadecimal

Estos números son muy utilizados sobre todo cuando queremos manipular cierta información de archivos, contemplan un rango entre 0 y F, siendo F el número 15, hace uso de base 16.

Hexadecimal => Decimal

Para convertir de hexadecimal a decimal

Utilizamos las posiciones de los números y los multiplicamos por el resultado de su base.

B79(16) = x(12)

B*16² + 7*16¹ + 9*16⁰ =
11*256 + 7*16 + 9*1 =
2816+112+9 = 2937(10)

Hexadecimal => Binario

Tenemos que tener en cuenta la siguiente equivalencia:

Hexadecimal Binario
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Para convertir tan solo necesitaremos traducir cifra por cifra en base a esta tabla. Por ejemplo: A7F0

A = 1010
7 = 0111
F = 1111
0 = 0000

Nuestro número es: 1010011111110000

Hexadecimal -> Octal

Realizar este proceso de conversión no es un método directo. Primero hay que traducir de HEX->BIN y luego de BIN->OCT para obtener el valor.

E67(16) = x(8)

E(16) = 1110(2)
6(16) = 0110(2)
7(16) = 0111(2)

Nº convertido= 111001100111

Una vez obtenido el binario, lo pasamos a octal.

111001100111(2) = x(8)

111 001 100 111 = 7147(8)

Nuestro número es 7147(8)

Octal

Útil pero menos visto, nos permite obtener un número comprendido entre 0-7, hace uso de base 8.

Octal -> Decimal

Se tiene en cuenta la posición de la cifra, ya que luego se multiplica por su base, y a su vez, la base se multiplica por sí misma tantas veces tenga n en el exponente.

7147(8) = x(10)

7*8³ + 1*8² + 4*8¹ + 7*8⁰ = 3584 + 64 + 32 + 7

Nuestro número es: 3,687

Octal -> Binario

Básicamente utilizamos 3 bits por dígito, hay que tener en cuenta la siguiente equivalencia:

Tenemos que tener presente la siguiente equivalencia:

Decimal Binario
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

7420(8) -> x(2)

7 = 111
4 = 100
2 = 010
0 = 000

Nuestro número es: 111100010000(2)

Octal -> Hexadecimal

Como hemos dicho anteriormente, es un proceso que no se hace directo y hay que hacer uso del paso anterior para obtener el número hexadecimal.

7456(8) -> x(2)

7 = 111
4 = 100
5 = 101
6 = 110

Nº binario: 111100101110

Para obtener el número hexadecimal, bastará con separar 4 bits los dígitos del nº binario.

1111 0010 1110(2) -> x(16)

1111 = F
0010 = 2
1110 = E

Nuestro número es: F2E

Finalizando

¡Espero que aprendáis mucho! Al principio puede costar, pero con la práctica terminas haciendo las operaciones casi al instante.

¡Un saludo!

Fuentes

Detecta cambios en tus archivos con AIDE

Aide es un sistema avanzado de detección de intrusión que nos permite visualizar cambios en los archivos. Si una persona accede de forma ilegal a nuestro servidor y modifica un archivo que no tiene que tocar, este sistema de intrusión te lo detecta mediante el hash del archivo.

También permite revisar nuevos archivos creados, eliminados o modificados. Al realizar un escaneo a los archivos puede devolver diversos códigos de salida como errores de escritura, argumentos inválidos, funciones incompletas...etc El software no ocupa más que 200kb de espacio, y tiene un gran potencial, algo similar a mlocate.

Instalación en Fedora

sudo dnf install aide

Ejemplos de uso

En el siguiente apartado veremos los usos que podemos darle: * Comprobar versión * Generar la base de datos * Instalar la DB en el directorio estipulado en /etc/aide * Comprobando la integridad sin cambios * Comprobando la integridad con una modificación

Comprobar versión:

Podemos ver todas las opciones con las que se compiló y de dónde obtiene la configuración.

sudo aide --version
Aide 0.16

Compiled with the following options:

WITH_MMAP
WITH_PCRE
WITH_POSIX_ACL
WITH_SELINUX
WITH_XATTR
WITH_E2FSATTRS
WITH_LSTAT64
WITH_READDIR64
WITH_ZLIB
WITH_CURL
WITH_GCRYPT
WITH_AUDIT
CONFIG_FILE = "/etc/aide.conf"

Generar la base de datos

Depende del volumen de información que tengamos puede que tarde más o menos, hay que tener un poco de cuidado si estamos trabajando con elementos críticos en el sistema y tengamos un sistema no muy potente.

sudo aide --init
AIDE initialized database at /var/lib/aide/aide.db.new.gz

Number of entries:  11284

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.new.gz
  MD5      : dwWdkE+qrFulxJf6iEWJTQ==
  SHA1     : aK4Ao0mbmSmtCueAhyJnoJ4mdwI=
  RMD160   : TDxnNq5kYr1fmXXi8lAgCdsnfeA=
  TIGER    : nqgmBwvdbU4BrDrBS0pFdn9MIYPwd2q5
  SHA256   : QT3fev2WCQ+rDzvPMFU8ZgRgEXAd1pzd
             WLf95un9zeg=
  SHA512   : wCjWTKbQuKfNN/Y2Jytuq71waZrm24sr
             aQMShVvuYDS2DBRiT0G0WP146SuAkFV6
             lGqBitUYo+AgqvEPLuNXAQ==


End timestamp: 2019-01-16 18:56:44 +0000 (run time: 0m 7s)

Moviendo la base de datos

Este proceso es esencial a menos que modifiquemos la línea de dónde leerá la base de datos en el fichero de configuración o bien se lo indiquemos mediante parámetro.

sudo mv mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Comprobar la integridad de los archivos

Permite visualizar si hay o no cambios en la integridad de los archivos.

sudo aide --check
AIDE found NO differences between database and filesystem. Looks okay!!

Number of entries:  11284

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.gz
  MD5      : rK2m9AmpajAl1ft5hBUMNQ==
  SHA1     : 0gB7cMLYLFHjRs52/7EBp3+NeS4=
  RMD160   : AcDvvoKGwNGBJe4xN+GpQVjFF2k=
  TIGER    : VOjFoPFMk6Q6zuRZcPNkaHPPYOT5yG7F
  SHA256   : xCptxDZF+uw36xUP1F0pRgc+iQtAtCbO
             aJqaD2EzhHs=
  SHA512   : SEoScwAVxVPvCfC1ZSVLR+iTP2H/ZV1d
             hi+FZm1MzVQhrsL5yqTOPxLuitdzYnn6
             aZpV9FSangKVytif0MM2vQ==


End timestamp: 2019-01-16 19:02:40 +0000 (run time: 0m 5s)

Como puedes ver, no se observan cambios.

Prueba modificando uno de ellos

Si toqueteamos el fichero de /etc/krb5.conf que pertenece a una cosa rara llamada Kerberos, te devolverá una salida como esta indicando que ha habido un cambio en el archivo de configuración.

AIDE found differences between database and filesystem!!

Summary:
  Total number of entries:  11284
  Added entries:    0
  Removed entries:    0
  Changed entries:    1

---------------------------------------------------
Changed entries:
---------------------------------------------------

f   ...   i  . . : /etc/krb5.conf

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

File: /etc/krb5.conf
  Inode    : 12452018                         | 12717139


---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.gz
  MD5      : rK2m9AmpajAl1ft5hBUMNQ==
  SHA1     : 0gB7cMLYLFHjRs52/7EBp3+NeS4=
  RMD160   : AcDvvoKGwNGBJe4xN+GpQVjFF2k=
  TIGER    : VOjFoPFMk6Q6zuRZcPNkaHPPYOT5yG7F
  SHA256   : xCptxDZF+uw36xUP1F0pRgc+iQtAtCbO
             aJqaD2EzhHs=
  SHA512   : SEoScwAVxVPvCfC1ZSVLR+iTP2H/ZV1d
             hi+FZm1MzVQhrsL5yqTOPxLuitdzYnn6
             aZpV9FSangKVytif0MM2vQ==


End timestamp: 2019-01-16 19:05:15 +0000 (run time: 0m 2s)

Como vemos, no es un software muy "moderno", pero cumple su función.

¡Espero que le saquéis utilidad!

Entornos de escritorio y gestores de ventanas

Hoy en día es indispensable hacer uso de un servidor gráfico que nos permita visualizar páginas Web, escuchar música y ver películas o series entre otras cosas. Eso de estar con terminales y reproducción de contenido multimedia en formato ASCII como que no nos va mucho. Queremos visualizar el contenido cuánto más nítido y con calidad, se vive mejor.

Sin embargo, hasta hace relativamente poco, solo disponíamos de terminales de texto y programas elaborados en una interfaz MS-DOS como suelen comentar las personas más veteranas (ya que por mi edad, no pude vivirlo ni sentirlo). La historia fue que hasta que Xerox PARC (el centro de investigación del futuro para Xerox Corp.), no sacó su primer Xerox Alto en 1973, no se utilizaba ningún tipo de interfaz gráfica y mucho menos, existía el concepto del cursor del ratón. Posteriormente, hubo una guerra entre Apple y Microsoft que se disputaron a ver quién copiaba mejor la interfaz gráfica y el ratón inventado de Xerox.

Entornos de escritorio

Se denominan entornos de escritorio a un conjunto de software que contiene interfaz gráfica y que permita realizar múltiples tareas de una forma sencilla, fácil y productiva debido a su interacción amigable de cara al usuario.

Por ejemplo, ver los eventos de nuestro calendario sin tener que hacer uso de comandos o terminales de texto; visualizar el correo electrónico solo haciendo dos clics en el programa...

Haremos un breve repaso de los entornos de escritorio que existen en Linux y en BSD que podemos instalar, y en qué se diferencian principalmente.

CDE

Common Desktop Environment, fue un entorno gráfico para UNIX que fue desarrollado por empresas de gran hincampié tecnológico como HP, IBM, Novell y Sun (comprada por Oracle) viendo su primera versión en junio de 1993 de la mano de HP, IBM, SunSoft y USL(Unix System Laboratories). Estos elaboraron un proyecto en común repartiéndose las tareas para llevar a cabo diferentes objetivos hasta llegar a su primera versión del escritorio. Posteriormente, se fueron involucrando más empresas en su desarrollo. No obstante, estuvo unos años en el mercado hasta que GNOME y KDE les arrebató su posicionamiento.

GNOME

GNOME (GNU Network Object Model Environment) traducido al español como Entorno de Modelo de Objeto de Red GNU, un nombre no tan amigable como sus siglas fue desarrollado por Miguel de Icaza y Federico Mena el 15 de agosto de 1997 como alternativa a KDE (ahora Plasma) para sistemas operativos UNIX-like tipo BSD, Linux, o UNIX como esSolaris (antes SunOS).

Una de las características de GNOME es que hace uso de GTK+. Es un conjunto de bibliotecas multiplataforma para desarrollar interfaces gráficas para el usuario. Básicamente, define entre otras cosas el diseño de la ventana, los botones, introduce eventos, disparadores... como Qt en Plasma o Motif en CDE pero cada cual tiene sus diferencias.

Por otro lado, pretende ser un entorno de escritorio de fácil uso con poca personalización (sobre todo en la última versión 3.x) con el que se pueda trabajar desde el minuto 0.

Instalación

Desde los repositorios oficiales de cada distribución o sistema, hay distribuciones que requieren de pasos adicionales e incluso, configuraciones que no permitan la instalación de GNOME con el gestor de servicios systemd como es el caso de Gentoo, o también contemplan la instalación más básica de GNOME que sucede tanto en Gentoo como en Archlinux. Por ende, os recomendamos la documentación.: * Fedora: sudo dnf install @gnome-desktop * CentOS: sudo yum install @gnome-desktop * Archlinux: sudo pacman -S gnome gnome-extra * Gentoo (systemd): USE="-qt4 -qt5 -kde X gtk gnome systemd" sudo emerge --ask gnome-base/gnome" * Ubuntu: sudo apt-get install ubuntu-gnome-desktop * Debian: Se utiliza una herramienta llamada taskel(8) con interfaz ncurses que permite la instalación de un entorno. sudo apt-get install tasksel && sudo tasksel * openSUSE Leap 42.3: sudo zypper -n in patterns-openSUSE-gnome * FreeBSD: sudo pkg install gnome3

KDE (aka Plasma)

KDE fue el primer entorno de escritorio para sistemas UNIX-like que nació en octubre de 1996 de la mano de un programador alemán llamado Matthias Ettrich que buscaba básicamente una interfaz gráfica que unificáse todos los sistemas UNIX imitando el entorno de escritorio CDE.

Plasma se caracteriza a parte de hacer uso de la suite Qt de bibliotecas gráficas, de hacer un entorno muy completo y muy personalizado, en el se puede configurar todo lo que un usuario jamás pudo haber imaginado que podía llegar a configurar en un entorno, y sobre todo, haciendo uso de sus propias herramientas para hacerlo sin utilizar software a terceros tipo GNOME TweakTool, o teniendo conocimientos de JavaScript o CSS para modificar estilos y comportamientos como hacen las últimas versiones de GNOME.

Hoy en día, el software de Plasma es tan portable, que se puede hasta ejecutar en Windows y en dispositivos móviles.

Instalación

Desde los repositorios oficiales de cada distribución o sistema, hay distribuciones que requieren de pasos adicionales e incluso, configuraciones que no permitan la instalación de GNOME con el gestor de servicios systemd como es el caso de Gentoo, o también contemplan la instalación más básica de Plasma (KDE) que sucede tanto en Gentoo como en Archlinux. Por ende, os recomendamos la documentación: * Fedora: sudo dnf install @kde-desktop * CentOS: sudo yum install @kde-desktop * Archlinux: sudo pacman -S plasma * Gentoo (systemd): sudo emerge --ask kde-plasma/plasma-meta" * Ubuntu: sudo apt-get install kde-plasma-desktop * Debian: Se utiliza una herramienta llamada taskel(8) con interfaz ncurses que permite la instalación de un entorno. sudo apt-get install tasksel && sudo tasksel * openSUSE Leap 42.3: sudo zypper -n in patterns-openSUSE-kde * FreeBSD: sudo pkg install gnome3

MATE

MATE es un fork de GNOME que salió el 19 de agosto de 2011 como muestra del descontento de la nueva versión de GNOME 3 debido a que reducía muchísimo la personalización del entorno de escritorio, consumía mucho más, y tenía otro tipo de funcionalidades y características no muy transigentes. Este proyecto fue desarrollado por un desarrollador argenito de Archlinux llamado Germán Perugorría conocido en la comunidad del software libre como Perberos para continuar el desarrollo de este entorno de escritorio. Que por cierto, es el que nosotros utilizamos. El nombre proviene de la hierba Mate muy común en Argentina para tomar.

Este entorno liberó su última versión el 7 de febrero de 2018, con la satisfacción de haberse portado plenamente a la nueva suite de bibliotecas de GTK+ 3 y añadiendo más funcionalidades que no tenía sobre todo en Caja que en GNOME 3 se llama Nautilus.

Instalación

  • Fedora: sudo dnf install @mate-desktop
  • CentOS: sudo yum install epel-release && sudo yum install @mate-desktop
  • Archlinux: sudo pacman -S mate-desktop
  • Gentoo (systemd): sudo emerge --ask mate-base/mate"
  • Ubuntu: sudo apt-get install mate-desktop
  • Debian: Se utiliza una herramienta llamada taskel(8) con interfaz ncurses que permite la instalación de un entorno. sudo apt-get install tasksel && sudo tasksel
  • openSUSE Leap 42.3: sudo zypper -n in patterns-openSUSE-kde
  • FreeBSD: sudo pkg install gnome3

XFCE

XFCE se caracteriza por ser un entorno de escritorio muy liviano y ligero ya que ese eran sus dos objetivos cuando se desarrolló. La primera versión se liberó en 1996 de la mano de Olivier Fourdan. Este utiliza las bibliotecas de GTK+ para el desarrollo de sus programas gráficos.

Actualmente está comenzando a portar su software a GTK+ 3 llegando un poco tarde, ya que actualmente ya se está desarrollando GTK+ 4.

Instalación

Desde los repositorios oficiales de cada distribución o sistema, hay distribuciones que requieren de pasos adicionales e incluso, configuraciones que no permitan la instalación de XFCE con el gestor de servicios systemd como es el caso de Gentoo, o también contemplan la instalación más básica de XFCE que sucede tanto en Gentoo como en Archlinux. Por ende, os recomendamos la documentación: * Fedora: sudo dnf install @xfce-desktop * CentOS (require tener activado epel): sudo yum install epel-release && sudo yum install @xfce-desktop * Archlinux: sudo pacman -S plasma * Gentoo (systemd): sudo emerge --ask " * Ubuntu: sudo apt-get install xfce-desktop * Debian: Se utiliza una herramienta llamada taskel(8) con interfaz ncurses que permite la instalación de un entorno. sudo apt-get install tasksel && sudo tasksel * openSUSE: Hay que habilitarlo desde Factory * FreeBSD: sudo pkg install xfce

LXDE

Este fue un entorno de escritorio también como el anterior, cuyo objetivo era proveer a un PC de una suite de herramientas gráficas que permitieran trabajar consumiendo lo más mínimo de un ordenador. Su primera versión fue liberada en 2006 por Hong Jen Yee. Actualmente tiene su desarrollo parado, ya que se sustituyó por LXQt.

LXQt

Es la continuación del proyecto LXDE como entorno de escritorio. El anterior hacia uso de librerías GTK+, LXQT hace uso de Qt ya que al parecer al creador de LXDE no le terminó de convencer GTK+. Su objetivo y finalidad son el mismo que en LXDE.

Instalación

Desde los repositorios oficiales de cada distribución o sistema, hay distribuciones que requieren de pasos adicionales e incluso, configuraciones que no permitan la instalación de LXQt con el gestor de servicios systemd como es el caso de Gentoo, o también contemplan la instalación más básica de LXQt que sucede tanto en Gentoo como en Archlinux. Por ende, os recomendamos la documentación: * Fedora: sudo dnf install @lxqt-desktop * CentOS (require tener activado epel): sudo yum install epel-release && sudo yum install lxqt-* * Archlinux: sudo pacman -S lxqt * Gentoo (Requiere pasos adicionales): sudo emerge --ask lxqt-meta * Ubuntu: No disponible * Debian: Se utiliza una herramienta llamada taskel(8) con interfaz ncurses que permite la instalación de un entorno. sudo apt-get install tasksel && sudo tasksel * openSUSE Leap 42.3: sudo zypper in -y pattern lxqt * FreeBSD (Requiere pasos adicionales): sudo pkg install lxqt

Razor-Qt

Fue un entorno de escritorio desarrollado con las bibiliotecas Qt en 2010, no obstante, el equipo de Razor-Qt empezó a colaborar con el creador de LXDE originando el entorno anteriori dando origen a la primera versión en julio del 2014.

Sugar Desktop

Sugar es un entorno de escritorio que nació con el objetivo de crear una interfaz muy intuitiva para aquell@s niñ@s que no podían acceder a la tecnología puntera de países del primer mundo. Creada por Sugar Labs en mayo del 2016, como entorno para el proyecto OLPC (One Laptop Per Child) un proyecto en el que se le permite a los niños mediante un portátil de bajo costo enseñarles a incorporarse a la tecnología sin necesidad de tener grandes recursos pudo crecer y seguir manteníendose como una alternativa educativa también para l@s más peques de la casa.

Instalación

Desde los repositorios oficiales de cada distribución o sistema, hay distribuciones que requieren de pasos adicionales e incluso, configuraciones que no permitan la instalación de Sugar con el gestor de servicios systemd como es el caso de Gentoo, o también contemplan la instalación más básica de Sugar que sucede tanto en Gentoo como en Archlinux. Por ende, os recomendamos la documentación: * Fedora: sudo dnf install @sugar-desktop * CentOS: No disponible, al menos de manera oficial. * Archlinux: sudo pacman -S sugar * Gentoo: No disponible de manera oficial. * Ubuntu: sudo apt-get install sucrose * Debian: sudo apt-get install sucrose * openSUSE Leap 42.3: zypper ar http://download.opensuse.org/repositories/X11:/Sugar/openSUSE_13.1/ X11:Sugar && zypper refresh && zypper in sugar sugar-activities * FreeBSD: No disponible de forma oficial ni extra oficial.

Gestores de ventanas

Los gestores de ventanas es un conjunto mínimo de software que nos permite establecer una sesión gráfica con la que poder interactuar con elementos gráficos. Su consumo es muy pequeño al igual que sus prestaciones, pero, se puede llegar a ser muy productivo con ellos si se saben configurar y utilizar.

TWM

Tab Window Manager, es el gestor de ventanas más común en todo Linux. Fue desarrollado por Tom LaStrange desde 1987, el nombre original estaba basado en la siglas de su nombre Tom's Window Manager, pero el X Consortium lo adoptó y lo renombró en 1989. En TWM se pueden apilar las ventanas, las cuáles contienen título, e iconos para interactuar. Este gestor de ventana suele utilizarse con programas como un reloj analógico xclock(1), y también un emulador de terminal llamado xterm(1) entre otros.

Instalación

  • Fedora: sudo dnf install xorg-x11-twm
  • CentOS: No disponible, al menos de manera oficial.
  • Archlinux: sudo pacman -S xorg-twm
  • Gentoo: No disponible de manera oficial.
  • Ubuntu: sudo apt-get install twm
  • Debian: sudo apt-get install twm
  • openSUSE Leap 42.3:sudo zypper in twm
  • FreeBSD: pkg install twm

i3wm

i3wm o también conocido como i3, es un gestor de ventanas que no se superposiciona, simplemente se adapta una ventana con la otra sin superponerse. i3 nos permite gestionar ventanas en modo stack es decir, apiladas, o bien en modo de pestañas tab entre más características. En suma, soporta modo multi-pantalla, está reescrita desde 0 estando todo su código licenciado bajo términos BSD. Hay que destacar que tiene soporte UTF-8 y es muy fácil de configurar. Su primera versión fue escrita en C por Michael Stapelberg el 15 de marzo del 2009.

Instalación

  • Fedora: sudo dnf install i3
  • CentOS: sudo yum install epel-release && sudo yum install i3
  • Archlinux: sudo pacman -S i3-wm
  • Gentoo: sudo emerge --ask x11-wm/i3
  • Ubuntu: sudo apt-get install i3
  • Debian: sudo apt-get install i3
  • openSUSE Leap 42.3:sudo zypper in twm
  • FreeBSD: sudo pkg install x11-wm/i3

Fluxbox

Fluxbox es un gestor de ventanas creado por Henrik Kinnunen el 12 de septiembre de 2001. Es un wm muy sencillo y fácil de usar, bastante ligero en cuanto consumo y rendimiento. Está basado en un gestor de ventanas llamado Blackbox ya desmantenido. La última versión liberada es la 1.3.7 publicada el 8 de febrero de 2015.

Instalación

  • Fedora: sudo dnf install fluxbox
  • CentOS: sudo yum install epel-release && sudo yum install fluxbox
  • Archlinux: sudo pacman -S fluxbox
  • Gentoo: sudo emerge --ask x11-wm/fluxbox
  • Ubuntu: sudo apt-get install fluxbox
  • Debian: sudo apt-get install fluxbox
  • openSUSE Leap 42.3:sudo zypper in fluxbox
  • FreeBSD: sudo pkg install x11-wm/fluxbox

Openbox

Openbox es otro gestor de ventanas creado por Dana Jansens y Mikael Magnusson el 18 de septiembre de 2002. Este también derivó de sus inicios de Blackbox, sin embargo, ha sido reescrito totalmente desde la versión 3.0. Este gestor sacrifica entre otras cosas algunas funciones típicas como la barra de menú, lista de apps en ejecución o bordes redondeados en las ventanas. No obstante, posee herramientas de configuración del entorno bastane útiles para cambiar el fondo de pantalla, tema del gestor...etc, no obstante, el gestor de ventanas lleva sin desarrollarse desde el 1 de julio del 2015.

Instalación

  • Fedora: sudo dnf install openbox
  • CentOS: sudo yum install epel-release && sudo yum install openbox
  • Archlinux: sudo pacman -S openbox
  • Gentoo: sudo emerge --ask x11-wm/fluxbox
  • Ubuntu: sudo apt-get install openbox
  • Debian: sudo apt-get install openbox
  • openSUSE Leap 42.3:sudo zypper in openbox
  • FreeBSD: sudo pkg install x11-wm/openbox

Enlightenment

Es un gestor de ventanas con una gran cantidad de applets, módulos y aplicaciones que lo intentan convertir en un entorno de escritorio completo, la primera versión liberada fue en 1997 por Rasterman (Carsten Haitzler), mientras que la última versión liberada fue el 15 de marzo de 2018. Enlightenment lleva un desarrollo lento y denso que hace que el entorno sea un poco menos novedoso y no todos sus módulos y applets están bien recibidos según que distribuciones. Suelen faltar muchos de ellos, y algunas veces las compilaciones de los mismos no suelen llevar a resultados favorables. No obstante es una buena alternativa para aquellas personas que busquen un estado intermedio entre gestor y entorno, y resulta muy liviano y con una imagen un tanto futurista.

Instalación

  • Fedora: sudo dnf install enlightenment
  • CentOS: No disponible de forma oficial.
  • Archlinux: sudo pacman -S enlightenment
  • Gentoo: sudo emerge --ask enlightenment:0
  • Ubuntu: sudo apt-get install e17
  • Debian: sudo apt-get install e17
  • openSUSE Leap 42.3:sudo zypper in enlightenment
  • FreeBSD: sudo pkg install x11-wm/enlightenment

Awesome

Otro gestor de ventanas elaborado en C y en Lua, también es parecido a i3 en el que no es necesario hacer uso de ningún tipo de ratón y permite acoplar fácilmente las ventanas entre sí. La primera versión fue liberada el 18 de septiembre del 2007 por Julien Danjou, siendo un fork de dwm. En algunas distribuciones se encuentra disponible, pero desde el 25 de septiembre del 2016 se encuentra desmantenido.

wmii

Windows Manager Improved 2, es un gestor de ventanas que soporta el manejo de ventanas con ratón o teclado elaborado por Anselm R. Garbe y Kris Maglione y viendo la luz por primera vez el 1 de junio de 2005, tiene una filosofía minimalista de no ir más allá de 10,000 líneas de código. La última versión estable fue liberada el 1 de julio del 2017.

dwm

Es otro gestor de ventanas desarrollado por Anselm R. Garbe y liberándolo el 14 de julio de 2006. Es un wm muy minimalista pareciéndose a wmii, sin embargo, es mucho más simple que este último y está escrito en puro C para tener un rendimiento mucho más elevado además de añadir seguridad al código, pero este muy conocido gestor de ventanas se quedó en desarrollo al igual que wmii, el 1 de julio de 2017.

Fuentes

Foreman una manera de supervisar y gestionar tus servidores

Foreman es una plataforma Open Source que permite administrar y gestionar servidores tanto virtuales como físicos y que también ayuda a la hora de realizar tareas automatizadas de una forma muy interactiva y fácil de utilizar. En este entrega vamos a ver cómo podemos desplegar e instalar Foreman en CentOS 8.

Instalando Foreman en CentOS 8

Antes de proceder, es aconsejable tomar un snapshot de nuestra máquina si es virtual, o hacer una copia de seguridad si es física o también hacer ambas cosas.

Paso previo

Hacemos una copia del fichero /etc/hosts

# cp -va /etc/hosts /etc/hosts.instalando_foreman

Editamos el archivo /etc/hosts y añadimos una línea al final referenciando el hostname de nuestro servidor y la ip, guardamos el archivo. NOTA: Si no sabes cuál es el hostname, puedes usar el comando hostnamectl, este te devolverá mucha información, pero solo te interesa aquella que ponga "Static hostname". Y para la ip, identifica que tarjeta tienes con el comando ip addr que esté conectada y accesible a tu red interna.

NOTA 2: Utiliza como nombre de host minúsculas o te dará un error como este:

The hostname contains a capital letter.

This is not supported. Please modify the hostname to be all lowercase. If needed, change the hostname permanently via the
'hostname' or 'hostnamectl set-hostname' command
and editing the appropriate configuration file.
(e.g. on Red Hat systems /etc/sysconfig/network,
on Debian based systems /etc/hostname).

If 'hostname -f' still returns an unexpected result, check /etc/hosts and put
the hostname entry in the correct order, for example:

  1.2.3.4 hostname.example.com hostname

The fully qualified hostname must be the first entry on the line
Your system does not meet configuration criteria

Si tienes este problema, basta con aplicar estos cambios:

# cp -va /etc/hostname /etc/hostname.cambio_hostname

Editas el nombre del hostname que quieras:

# hostnamectl set-hostname $(cat /etc/hostname)

Modificas el nombre del host que hayas puesto en /etc/hosts que hace referencia a tu host actual, cierras sesión en tu servidor, te vuelves a loguear y prosigues con la instalación.

Ejemplo:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.122 myhostname.lan

Es importante este proceso o cuando realices el paso de la instalación de la plataforma te dará un error como este:

Unable to resolve forward DNS for your system blabla
Does not meet configuration criteria

Instalando el software necesario

Importamos la llave GPG de Foreman

# rpm --import https://yum.theforeman.org/releases/2.1/RPM-GPG-KEY-foreman

Instalamos los repositorios necesarios:

# dnf install -y https://yum.puppet.com/puppet-release-el-8.noarch.rpm 
# dnf install -y https://yum.theforeman.org/releases/2.1/el8/x86_64/foreman-release.rpm
# dnf install -y epel-release 

Editamos la configuración de los repositorios

# cp -va /etc/yum.repos.d/foreman.repo /etc/yum.repos.d/foreman.repo.cambiar_version
# cp -va /etc/yum.repos.d/foreman-plugins.repo /etc/yum.repos.d/foreman-plugins.repo.cambiar_version
# sed -ie 's/el7/el8/g' /etc/yum.repos.d/foreman.repo /etc/yum.repos.d/foreman-plugins.repo
# sed -ie 's/2.0/2.1/g' /etc/yum.repos.d/foreman.repo /etc/yum.repos.d/foreman-plugins.repo

NOTA: Esto hay que hacerlo, porque la comunidad de Foreman no automatizó este proceso haciendo uso de variables en su repositorio...

Instalamos el software de Foreman

# dnf check-update && dnf install -y foreman-installer

Lanzamos la instalación de la plataforma

NOTA: Este proceso se demorará un poco más o un poco menos dependiendo de tu hardware físico.

# foreman-installer

Veremos información quee va actualizándose en la termianl y cuando termine, nos devolverá un mensaje como este:

Preparing installation Done                                           
foreman-rake upgrade:run finished successfully!
  Success!
  * Foreman is running at https://myhostname.lan
      Initial credentials are admin / WoFc7UX2Ycm4WkXp
  * Foreman Proxy is running at https://myhostname.lan:8443
  The full log is at /var/log/foreman-installer/foreman.log

Ya podemos acceder a la interfaz web de forma local que aunque es un logro, no nos interesa porque gestionar un portal web desde un navegador como lynx o elinks no es especialmente plato de buen gusto, por lo que, haremos la gestión desde nuestro equipo, pero antes hay que habilitar el acceso en el cortafuegos en el servidor. Por defecto una vez instalado, se crea un servicio llamado foreman.service que se habilita en el arranque sin que tengamos que hacer nada.

# firewall-cmd --add-port 443/tcp --permanent
# firewall-cmd --add-port 8443/tcp --permanent
# firewall-cmd --reload

Accedemos desde nuestro equipo por IP, si tienes un servidor DNS que ya te resuelve el hostname, pues accede a través de él.

https://192.168.1.172 (en mi caso)

Certificado inválido

Vemos que el certificado es inválido, esto suele ocurrir en los despliegues de los servicios que necesiten obligatoriamente un certificado SSL. Estos generan un certificado autofirmado haciendo mención al hostname, aunque intentes crear una entrada en tu /etc/hosts de tu máquina dónde gestionarás Foreman y hagas la traducción, como no hay ninguna entidad que pueda avalar la autoridad este certificado seguirá siendo invalido.

Certificado inválido

Pero si tienes un certificado validado con Let's Encrypt por ejemplo lo puedes gestionar más adelante.

Nos saltamos la validación y accedemos al portal:

Foreman Login

Insertamos las credenciales que nos devolvió la terminal una vez se instaló y vemos el inicio de la aplicación web y veremos este panel principal o dashboard bastante vistoso que podemos personalizar como queramos (dentro de lo que nos deje claro).

Panel principal

En él podemos ver los equipos registrados, su estado, los últimos eventos, gráficas... te recomiendo que la primera cosa que hagas sea cambiar la contraseña de tu usuario, accede a la parte superior derecha de la pantalla dónde dice "My Account", y aquí edites la contraseña:

Cambiar contraseña

Espero que os haya gustado este tutorial, en las siguientes entregas veremos como ir añadiendo hosts a nuestro inventario y cómo podemos trabajar con ellos.

Instalar NetBSD 8.0

NetBSD a pesar de ser muy poco conocido, es uno de los sistemas operativos más portables en cuánto a plataformas se refie de todo el mundo. Es tan portable que incluso llega a funcionar en una tostadora como podemos ver en la siguiente imagen.

Tostadora, imagen obtenida de https://www.flickr.com/photos/daveykun/99162805

NetBSD surgió de hecho con esa idea, poder llegar a todos las arquitecturas posibles y así lo han demostrado. Sus orígenes se remotan en 1993, cuando Chris Demetriou, Theo de Raadt, Adam Glass y Charles M. Hannum formaron el proyecto NetBSD con el fin de proveer este magnífico sistema derivado de la versión original UCB 4.3BSD y 386BSD. Posteriormente, para poder sumar más personas al proyecto, portaron código fuente de la versión 4.4BSD-Lite.

¿En qué plataformas corre NetBSD?

NetBSD puede correr en un total de 15 arquitecuras diferentes como SPARC, SPARC64, AMD/Intel (32/64 bits), ARM, PowerPC entre otras más que puedes encontrar en esta lista de aquí.

Primeros pasos

Antes de empezar, tenemos que saber qué tipo de CPU estamos utilizando, si es ARM, x86, x86_64... y descargar la imagen que corresponda con nuestra arquitectura, comprobar la suma de verificación del archivo para curarnos en salud, y luego generar la imagen autoarrancable pues en caso de ser un USB, suele ir bien Unetbootin o la herramienta de discos de GNOME.

Pantalla de arranque

Interfaz de instalación

Como podemos ver la interfaz de la instalación en modo no gráfico pero intuitivo, se pueden utilizar atajos de teclado que aparecen en el lado izquierdo de las opciones que nos aparecen.

Pantalla de instalación de NetBSD

Pasos

Vamos a simplificar la instalación y explicar lo necesario por cada punto. 1. Seleccionar el idioma del teclado 2. Instalar NetBSD en el disco duro y aceptar que la geometría es correcta * IMPORTANTE: NO MODIFICAR LA GEOMETRÍA DEL DISCO, o podrás desecharlo a la basura. 3. Procederemos a editar la tabla de particiones MBR y no hacer uso de todo el disco, así nos acostumbraremos a particionar estos sistemas. 4. Escogemos el espacio libre del disco duro, y creamos una sola partición del tipo NetBSD y marcando los flags activa, instalar

Particionando * ¿Por qué una?: Los sistemas BSD por defecto utilizan un sistema de particiones "poco común". Se escoge una sola partición primaria, y posteriormente se dividen en subparticiones llamados slices, hay que escoger bien las particiones y sus tamaños porque luego no se podrán modificar. ** 5. Instalamos el código de arranque MBR 6. Establecemos el tamaño de las particiones de NetBSD, lo que en Linux sería /var, /home, /... nosotros utilizaremos / y swap.

Esquema de ejemplo

  1. Le asignamos un nombre a la etiqueta que llevará el disco duro
  2. Confirmamos su instalación
  3. Utilizamos la consola BIOS, no vamos ha hacer uso de puertos COM
  4. Instalación completa
  5. CD-ROM / DVD / install image media

    Instalación de NetBSD al disco duro, copiando archivos 12. Configuración de elementos adicionales, en este apartado podemos asignarle contraseña al usuario root, configurar el huso horario, shell de root...

    Resumen de configuración adicional 13. Si no tenemos nada más que añadir, podemos finalizar la instalación

Arranque

Una vez que lo tengamos instalado, y efectuemos el reinicio, podemos ver como sale el gestor de arranque de NetBSD en la siguiente imagen:

Gestor de arranque

Cuando nos logueemos, veremos un mensaje de bienvenida del equipo de NetBSD

Bienvenida

¡Ya tendremos NetBSD corriendo en nuestro sistema!

Referencias