Planeta Sysadmin

de sysadmins para sysadmins

June 12, 2019

joseangelfernandez.es

BIG COMPUTE 6 – El héroe para nuestros problemas de computación masiva

Un año más se ha celebrado en Madrid una nueva edición del Global Azure Bootcamp. Este año el reto científico ha estado auspiciado por el Instituto de Astrofísica de Canarias (IAC). El objetivo era “examinar los datos de la misión TESS (“Transiting Exoplanet Survey Satellite”), que fue lanzada en 2018 para la búsqueda de exoplanetas alrededor de las estrellas. El satélite está continuamente obteniendo imágenes de las estrellas con el único objetivo de buscar cambios en la intensidad de luz al pasar los planetas por delante de las mismas”

A día de hoy se llevan analizadas 18.825.867 de muestras, un equivalente a 1.254.089 horas de computación ejecutadas sobre más de 17.000 cores. Desde España se aportó el granito de arena siendo los terceros a nivel mundial en el ranking por países. Los resultados fueron prometedores, al menos dos posibles exoplanetas fueron detectados, actualmente siguen investigando los resultados.

Como en otras ocasiones, Iria y yo nos animamos a presentar una sesión. Este año la temática ha estado relacionado con la computación masiva y cómo Azure es una plataforma ideal para vuestras necesidades de HPC o Big Compute.

Si te la perdisteis, ya la tienes disponible para verla bajo demanda.

Big Compute 6 – El héroe para nuestros problemas de computación masiva

by jafernandez at June 12, 2019 07:12 PM

El coste del ancho de banda en Azure, un pequeño desconocido

El otro día, en una conversación interna, saltaron unas cuántas dudas de qué tráfico se cobraba o no en Azure según el origen, el destino y el tipo de conectividad de la que se disponía. Inicialmente pensé que era algo que tenía bastante claro pero tras ver el resumen que hizo mi compañero José Guardia (@msjosegm) creo que tiene mucho más detrás de lo que inicialmente pensaba.

A continuación, tenéis un listado de todos los puntos que tenéis que tener en cuenta cuando tengáis que realizar una estimación de los costes de ancho de banda en Azure:

  • Tráfico que sea de ingreso a Azure desde Internet, una conexión VPN, una conexión ExpressRoute u otro servicio de Azure: gratuito.
  • Tráfico que sea entre recursos conectados dentro de la misma red virtual: gratuito
  • Tráfico que fluya entre un VNet Peering ya sea regional o entre diferentes regiones: tiene coste tanto de salida como de entrada.
  • Tráfico que sea saliente de la red virtual hacia Internet: tiene coste de salida
  • Tráfico que sea saliente de la red virtual hacia una IP pública de la misma región de Azure: gratuito
  • Tráfico que sea saliente de la red virtual hacia una IP pública de otra región de Azure: tiene coste de salida
  • Tráfico que sea saliente de la red virtual a través de una conexión VPN: tiene coste de salida
  • Tráfico que sea saliente de la red virtual a través de una conexión de ExpressRoute en su categoría metered: tiene coste de salida
  • Tráfico que sea saliente de la red virtual a través de una conexión de ExpressRoute en su categoría unmetered: gratuito
  • Tráfico entre servicios de Azure dentro de la misma región: gratuito
  • Tráfico entre servicios de Azure en diferentes regiones: tiene coste de salida
  • Tráfico entre servicios de Azure desplegados en Availability Zone en una red virtual: dentro de la misma AZ es gratuito pero entre AZ tiene coste de entrada y salida.

Como veis, no tan sencillo como inicialmente parecía. Si seguía la máxima de todo lo entrante es gratuito y solo se factura lo saliente, recordad las excepciones a la regla que en este caso son varias.

by jafernandez at June 12, 2019 06:58 PM

soyadmin.com

SSH: Listar archivos modificados en las últimas 24hs

Para ver que archivos fueron modificados en las últimas 24 hs, ya sea a modo de seguridad, para verificar que archivos se «tocaron» en cierto momento o para segurizar algun proceso, existe el comando find y su subcategoría «-mtime»

Buscando en el manual de find veremos:

# man find
-mtime n    File's data was last modified n*24 hours ago.  See the comments for -atime to understand how rounding affects the interpretation of file modification times.

Entonces por ejemplo deseamos buscar dentro de un directorio llamado «admin» y que nos liste solo los archivos modificados en las últimas 25 hs,concatenando el find + mtime podemos hacerlo:

# find /admin -type f -mtime -1

Acá buscamos en el directorio «admin» solo los archivos (-type f) y que fueron modificados dentro de las 24hs (-mtime -1).

by Mauro at June 12, 2019 01:56 PM

June 11, 2019

soyadmin.com

Nmon, un sistema de monitorización que no puede faltarte en Centos 6 y 7

Nmon (Nigel’s Monitor) es un sistema de monitorización desarrollado para AIX, el cual fue adaptado y funcionalizado para que pueda ser utilizado en Linux, convirtiéndose en una herramienta casi indispensable para todo sysadmin.
Nmon nos permite mostrar en pantalla diferentes indicadores del estado de nuestro sistema, ya sea en tiempo real o bien guardando los datos en un archivo para luego ser mostrado en modo de graficación.

Nmon nos trae y recaba estos datos:

    Uso de CPU
    Uso de memoria
    Estadísticas del kernel y de la cola de ejecución de procesos
    I/O, transferencias, y tasas de lectura/escritura de los discos
    Espacio libre en file systems
    I/O, transferencias, y tasas de lectura/escritura de las interfaces de red
    Paginado de memoria
    Network File System (NFS)

INSTALACIÓN:

Lo primero que hay que hacer es instalar el Repositorio EPEL, tal como lo explicamos AQUÍ.

Si ya contamos con EPEL o lo instalamos, procedemos a instalar NMON

# yum install nmon

COMO SE USA:

# nmon

Acá debemos elegir que deseamos monitorear tecleando:
c = Muestra los detalles de los CPU físicos.
r = Lista de recursos (Resources) del distema incluyendo la velocidad de los CPU en MHz.
k = Muestra las estadísticas del Kernel y otros datos.
l = muestra un histórico del performance del CPU en %.
d = Muestra información de los discos en uso como son: tipo de discos, tamaño, espacio libre, grupos de volúmenes, adaptador, entre otros.
n = Muestra información de las interfaces de red como MTU, errores, velocidad de transmisión o recepción, entre otros.
m = Presenta el estado de la memoria, tanto de la memoria física como del swap o area de intercambio.
j = Muestra detalles del o de los sistemas de archivos que se encuentren presentes.
t = Muestra una lista de los procesos con mayor uso de recursos.

by Mauro at June 11, 2019 02:47 PM

June 10, 2019

RooTeando

Entrevista En Diferido 11: Samuel Blázquez

Hoy comenzamos una entrevista a Samuel, del podcast Yo Virtualizador (https://www.ivoox.com/podcast-yovirtualizador_sq_f1563806_1.html), persona con conocimientos en múltiples áreas; Linux,Windows,redes,sistemas,servidores,hardware y mucho mas. Usuario de Linux y fan de Telegram.

Antes de todo, gracias por participar y apoyar este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

Entrevista en Diferido: ¿Te podrías presentar en unas ...

June 10, 2019 11:17 PM

soyadmin.com

Comandos básicos de Mysql vía SSH

Chequear usuario y password de una base de datos:

# mysql -u username -p

Crear Base de Datos dentro del servidor de Mysql:

# mysql
mysql> create database [databasename];

Listar Bases de Datos dentro del servidor de Mysql:

# mysql
mysql> show databases;

Usar o seleccionar una Base de datos dentro del servidor de Mysql:

# mysql
mysql> use [database name];

Listar las tablas:

# mysql
mysql> show tables;

Eliminar una Base de datos:

# mysql
mysql> drop database [database name];

Eliminar una Tabla:

# mysql
mysql> drop table [table name];

Listar procesos:

# mysql
mysql> show processlist;

by Mauro at June 10, 2019 11:40 AM

June 07, 2019

soyadmin.com

Optimizando APACHE en CentOS, Rhel y Fedora

En este post orientaremos sobre como tunear nuestro servidor Apache, intentando dejar claro que cosas tocar y que función cumplen.

La idea NO es que sea utilizado como ejemplo (si bien dare algunos valores) sino más bien explicar cada item lo más humanamente posible para que podamos comprender y elegir la mejor configuración posible.

Los tuneos de nuestros servidores es casi una tarea diaria y varía de cada servidor tenemos, dado que depende de muchísimos factores a tener en cuenta como pueden ser las características del servidor (CPU, RAM, HDD, etc), cantidad de sitios, tipo de sitios, etc.

Todas las modificaciones las haremos en el archivo de configuración de Apache:

# vi /usr/local/apache/conf/httpd.conf

MaxClients: Número total de conexiones que atenderá a la vez el servidor. Este valor no debe ser mayor de 300, ni menor a 100, si es un valor muy alto y el servidor tiene un ataque podría hacerlo colapsar y si colocas un valor muy bajo tendrías clientes en espera, lo cual genera un cuello de botella, devolviendo errores debido a los Timeout.

MinSpareServers y MaxSpareServers: Controlan (mediante un límite mínimo y máximo) cuantos procesos de apache estan en espera, es decir, son procesos de Apache activos pero a la espera de conexiones o peticiones. Al estar activos la respuesta es inmediata, pero estar en modo espera hace que se consuman recursos del server, por lo cual deberemos tener un buen tuneo de estos 2 valores.
Los valores que se recomiendan son estos:
MinSpareServers 5
MaxSpareServers 10

MaxRequestsPerChild: Controla cuantas peticiones atenderá un proceso de apache (llamado hijos), mientras que con MinSpareServers y MaxSpareServers controlábamos cuantos procesos hijo puede haber activos, con MaxRequestsPerChild controlaremos la cantidad de peticiones que atenderá cada uno antes de cerrar el proceso y refrescarlo con uno nuevo.
El valor muy alto puede hacer que los procesos se cuelguen y queden ocupando recursos, pero también un valor muy bajo haría que constantemente se estén pidiendo procesos con el eventual consumo de recursos.
Un valor que funciona muy bien es:
MaxRequestsPerChild 1000

KeepAlive y MaxKeepAliveRequests: keepalive hace que las sesiones http sean más largas y que permitan más peticiones de acceso desde la misma conexión. Si bien el keepalive hace que en algunos casos la mejora en respuesta de una web aumente en casi un 60% por otro lado tenemos un elevado consumo de recursos del servidor, haciendo que colapse o quede con problemas de estabildiad.
MaxKeepAliveRequests nos dará el tiempo máximo, el cual no debe superar los 2 segundos.

StartServers: Muestra la cantidad de procesos que se inician al arrancar el servidor.
Este puede ser establecido dentro del mismo rango que el MinSpareServers y MaxSpareServers

Timeout: Tiempo de espera de una conexión. Este valor nos dará el tiempo de respuesta máximo de una petición, desde el inicio hasta el refresco en el navegador.
Los valores van desde 50 a 300, si los colocas muy bajo puede ser que tus clientes tengan una respuesta de timeout anticipada del navegador y si superas los 300 podrías tener problemas en horas pico donde las conexiones sean muchas.

Esta sería una configuración potable:

Timeout 30
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 256
MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

IMPORTANTE: Estos valores dependen de cada servidor, y dependen de la cantidad de visitas o tráfico recibido.

Una ves tuneados estos valores recuerden realizar un reinicio de nuestro servicio web:

# service httpd restart

by Mauro at June 07, 2019 12:44 PM

June 06, 2019

soyadmin.com

¿Cómo bloquear Países usando Config Server Firewall (CSF)?

Brevemente les muestro como bloquear aquellos países de los que no nos interesa recibir visitas, esto hace que todo el tráfico proveniente de los países que decidamos ingresar en el firewall sea denegado, liberando así de visitas no deseadas.

Por las dudas acá hablábamos de como instalar CSF

El proceso de bloquear IP de países es sencillo dentro de las opciones de nuestro firewall, esto se hace con el código de país CIDR, este código lo podemos verificar aca:
http://www.ipdeny.com/ipblocks/

Luego en la configuración detallamos cuales serían los códigos de países a bloquear

En cPanel vamos a:

Home » Plugins » ConfigServer Security & Firewall » Firewall configuration

Buscamos Country Code Lists and Settings y colocamos los países en CC_DENY

CC_DENY = CH, TH, ID, KR

Por SSH sería:

# cd /etc/csf/
# vi csf.conf

Buscamos «SECTION:Country Code Lists and Settings» y editamos en:

CC_DENY = ""

Luego de eso reiniciamos nuestro firewall y ya estaríamos listos para bloquear. Esto es muy útil para liberar cargas de visitas no deseadas a nuestro servidor.

by Mauro at June 06, 2019 03:35 PM

June 05, 2019

CloudAdmins.org

SysAdmin VS CloudAdmin

Introducción

Para muchos que empiezan por primera vez al campo de las tecnologías de la información, al principio todo el esfuerzo puede resultar abrumador. Existen diversas direcciones en las que orientar la carrera, dónde la mayoría están determinadas por sus intereses, pasión y talento natural. Entre estos puestos, algunos quieren convertirse en administradores, pero no están muy seguros de qué tipo de administrador es el adecuado para ellos.

Este artículo se centra en dos tipos: administrador del sistema o sysadmin y administrador de la nube o CloudAdmin.

Para aquellos que tienen poco tiempo para leer el artículo completo, incluiré una sección clave que servirá como una referencia abreviada de las diferencias entre los dos roles.

Administrador de sistema o SysAdmin

Resultat d'imatges de sysadmin

¿Qué hace exactamente un administrador del sistema? Probablemente tenga en mente preguntas como esta si está considerando este rol por primera vez.

Responsabilidades

Los administradores de sistemas generalmente tienen la tarea de instalar, configurar, mantener y dar soporte a los sistemas y servidores informáticos.

  • Implementación de sistemas
  • Mantenimiento del sistemas
  • Gestionando entornos de servidor, incluyendo diferentes Sistemas Operativos como GNU/Linux, Windows, OpenBSD, etc
  • Actualización de sistemas cuando estén disponibles nuevas versiones de SO y parches de sistema
  • Gestión de proyectos
  • Scripts ligeros (por ejemplo, scripts de automatización y de inicio)
  • Aplicación de medidas de seguridad y creción de políticas.

¿Quién está buscando administradores de sistemas?

Organizaciones de todos los tamaños en todas las industrias buscan administradores de sistemas.

Un paso más allá: El CloudAdmin

Resultat d'imatges de sysadmin

Los administradores de la nube tienen algunas similitudes con los administradores de sistemas. Estos incluyen la instalación / implementación, configuración y soporte de un sistema, pero como ya se puede decir, los administradores de la nube realizan estas responsabilidades en un sistema basado en el paradigma Cloud.

Esta función se ve como una especie de evolución de la función de administrador de sistemas tradicional, aunque una organización puede necesitar los dos perfiles. Si su organización ha fusionado ambos roles o no, se definirá en su estrategia.

Responsabilidades

Los administradores de la nube tienen dos responsabilidades principales: configurar el servicio de administración de la nube y administrar / monitorizar el servicio de administración en la nube. Si el administrador en la nube es el primero que la organización ha tenido en su historial, entonces puede agregar una tercera responsabilidad de implementar el servicio de administración de la nube. Otras responsabilidades incluyen:

  • Aprobar o rechazar solicitudes de cambio para modificaciones del servicio de administración Cloud. (Sobre AWS, Azure, GoogleCloud Platform, OpenNebula, Openstack, Kubernetes, …)
  • Analizar datos de resumen de despliegue de recursos Cloud
  • Monitorizar métricas clave de recursos Cloud
  • Integrar los sistemas Cloud en el entorno actual.
  • Resolver problemas operacionales.
  • Evaluar e implementar nuevas tecnologías de computación en Cloud.
  • Balanceo de carga
  • Dependiendo de si el administrador Cloud también es el administrador de almacenamiento, las responsabilidades pueden incluir la copia de seguridad / restauración y otras tareas centradas en el almacenamiento

¿Quién está buscando administradores de la nube?

La mayoría de organizaciones que buscan administradores de la nube o Cloudadmins son organizaciones que actualmente dependen de la computación en la nube y organizaciones que buscan migrar a la nube. Esto realmente depende de la naturaleza de la organización y sus necesidades específicas.

 

¿Quieres ser un CloudAdmin?

 

Existen diversas opciones pero aquí nos gustaría destacar el programa de posgrado de la UOC (Universitat Oberta de Catalunya). Échale un vistazo aquí:

https://estudios.uoc.edu/es/masters-posgrados-especializaciones/devops-cloud-computing-sistemas-administracion/presentacion

Logo UOC El posgrado de Administración de Sistemas, DevOps y Cloud Computing es un programa de carácter práctico, enfocado a profesionales del área de las tecnologías de la información, que quieran orientar su carrera profesional hacia el ámbito de la computación cloud.

Un saludo,
www.cloudadmins.org

by Cloudadmin JordiGuijarro at June 05, 2019 04:59 PM

June 04, 2019

soyadmin.com

¿Cómo cifrar y proteger con contraseña archivos usando VIM?

VIM es un editor de texto el cual sale de una necesidad de mejorar el VI. Entre las mejoras que obtuvo este «hermano mayor» de VI es la posibilidad de que mediante una variable se pueda encriptar y colocar contraseña a cualquier archivo que deseemos.

Lo primero será instalar VIM:

# sudo apt install vim

Establecemos el cifrado sobre el archivo que querramos proteger:

# vim -x soyadmin.txt

Nos solicitará la clave de cifrado:

Enter encryption key:  ******
Enter same key again:  ******

Con esto ya quedaría nuestro archivo cifrado y protegido por contraseña

Podemos verificarlo con un intento de edición:

# vim soyadmin.txt
Need encryption key for "soyadmin.txt"
Enter encryption key:

O los comandos MORE y FILE también mostrarán que el archivo se encuentra protegido:

# more soyadmin.txt
VimCrypt~01!z֔05�Stm���g=������|����}�h�}g

# file soyadmin.txt
soyadmin.txt: Vim encrypted file data

by Mauro at June 04, 2019 02:13 PM

June 03, 2019

soyadmin.com

Instalar Repositorios EPEL en Centos 6 y 7

El repositorio EPEL y sus aplicativos se integran perfectamente a centOS y de hecho es recomendable tenerlo instalado o realizar la instalación como paso anexo a una instalación de centos desde cero.

Lo primero que tenemos que saber es que versión de CENTOS tenemos instalada:

cat /etc/redhat-release

Y luego conocer si es 32 o 64 bits

uname -a

En base a eso podremos elegir la versión correcta para nuestro servidor

RHEL/CentOS 7 64 Bit

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

RHEL/CentOS 6 32-64 Bit

## RHEL/CentOS 6 32-Bit ##
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

## RHEL/CentOS 6 64-Bit ##
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Solo resta verificar que ya nuestro repositorio esta disponible

# yum repolist

by Mauro at June 03, 2019 03:37 PM

June 01, 2019

soyadmin.com

ADMINISTRACIÓN DE SISTEMAS GNU/LINUX de Antonio Perpinan

Título: Libro: ADMINISTRACIÓN DE SISTEMAS GNU/LINUX
Autor:
Antonio Perpinan
Páginas: 241 Páginas
Tamaño: 2.5 MB
Fomato: PDF

Contenido:

Este libro provee los conceptos y principios fundamentales necesarios para administrar un sistema GNU/Linux. Los conceptos y las tareas de administración pueden ser un poco amplios. Se le dará una explicación del rol del administrador, estructura y función detallada del kernel, y cubriremos tópicos administrativos claves del manejo de paquetes, procesos, espacio de disco, Backups y los usuarios así como las tareas programáticas, y los Logs/Registros del sistema. Este conjunto de herramientas te permitirán apropiadamente administrar un sistema GNU/Linux sea este de unos cuantos hasta miles de usuarios. Estos capítulos también te proveerán la información que necesitas para Certificarte.

Fundamentos de GNU/Linux proporciona una introducción a profundidad de los conceptos y de los principios que son necesarios para instalar un sistema GNU/Linux y desenvolverse en los ambientes de ventana del X y de la línea de comandos. Este manual da la dirección paso a paso para las distribuciones importantes de GNU/Linux y su instalación, incluyendo RedHat, Debian, Mandrake y Slackware. Se enfatizan los conceptos de instalación, las utilidades, y la funcionalidad de GNU/Linux común a todas las distribuciones y estas se explican en detalle adicional. Un principiante o un experto pueden aprender o repasar los conceptos de particionar discos y localizar los archivos de configuración, usando el shell y las consolas, crear los scripts, y editar archivos de texto que permanecen dominantes, sin importar la nuevas herramientas gráficas, para los ajustes de configuración. Este conjunto de tópicos permitirá que usted instale y configure correctamente un sistema GNU/Linux. En estos capítulos también se le provee la información necesaria para certificar sus habilidades en GNU/Linux.

by Mauro at June 01, 2019 02:50 PM

May 31, 2019

soyadmin.com

Terminal: Controlando la salud e integridad de nuestros discos con smartctl

Smartctl es una herramienta la cual nos permitirá realizar un testeo de nuestros Discos Rígidos, la cual nos brinda un detallado informe mediante el cual podremos verificar el funcionamiento o posibles errores que posean nuestras unidades… salvándonos de un buen dolorcito de cabeza.

Primero vamos a instalarlo:

# yum install smartmontools

Luego que se instala procederemos a hacer los testeos:
Listamos los discos/particiones solo con el fin de obtener los nombres de nuestras unidades

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             897G  380G  471G  45% /
/dev/sda5             2.0G  383M  1.5G  21% /tmp
/dev/sda1              99M   32M   62M  34% /boot
tmpfs                 3.9G     0  3.9G   0% /dev/shm
/dev/sdb1             917G  707G  164G  82% /hd2

Aqui vemos que nuestros 2 discos son /dev/sda y /dev/sdb, esos nombres utilizaremos como ejemplos

1) Detalle de la info de los discos:

# smartctl -i /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.18-498.el5.lve0.8.80] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model:     MB1000EBNCF
Serial Number:    WCAW30756532
LU WWN Device Id: 5 0014ee 25ac27419
Firmware Version: HPG0
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 6
Local Time is:    Mon Apr  6 17:06:32 2015 ART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

2) Un testeo solo informativo:

# smartctl -H /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.18-498.el5.lve0.8.80] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

Este resultado nos muestra que todo esta OK.

IMPORTANTE: Como se mostraría un error a tener muy en cuenta:

# smartctl -H /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.18-498.el5.lve0.8.80] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Failed Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0x002f   001   001   051    Pre-fail  Always   FAILING_NOW 330223

Increíblemente el detalle muestra que el disco puede tener un fallo en las próximas 24 hs, por lo que hay que realizar una inmedita copia del contenido.

3) Testeo a fondo, el cual detallará cualquier tipo de error o falla en los discos:

# smartctl -t long /dev/sda
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-504.1.3.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 121 minutes for test to complete.
Test will complete after Mon Apr  6 19:44:02 2015

Use smartctl -X to abort test.

4) Testeo rápido:

<!-- wp:paragraph -->
<p># smartctl -t short /dev/sda<br>smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-504.1.3.el6.x86_64] (local build)<br>Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===<br>Sending command: "Execute SMART Short self-test routine immediately in off-line mode".<br>Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.<br>Testing has begun.<br>Please wait 2 minutes for test to complete.<br>Test will complete after Mon Apr  6 17:48:38 2015</p>
<!-- /wp:paragraph -->

Como vemos aqui, los testeos «short y long» son offline y deberemos verificar el resultado con:

# smartctl -l selftest /dev/sda
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-504.1.3.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      9627  

Una herramienta muy útil ante cualquier tipo de aviso o sospecha de daño. A tenerlo en cuenta!

by Mauro at May 31, 2019 01:33 PM

May 29, 2019

soyadmin.com

Comandos de Consola Linux de la A a la Z

Este listado muestra un recopilatorio de los comandos linux, el cual iré actualizando cada vez que pueda o descubra un nuevo comando y su uso. Una guía a fondo para conocer todo lo que podemos hacer mediante nuestra consola (aunque sea una porción).

A
alias    Crea un alias.
apropos  Busca ayuda en la pagina de manual (man -k)
apt-get  Busca e instala paquetes de software (Debian/Ubuntu)
aptitude Busca e instala paquetes de software (Debian/Ubuntu)
aspell   Verifica la ortografía
awk      Encontrar y reemplazar texto, ordena/valida/indexa bases de datos

B
basename Muestra directorios y base de archivos
bash     GNU Bourne-Again SHell
bc       Lenguaje de calculo de precisión arbitrario
bg       Enviar atras
break    Salir de un bucle.
builtin  Ejecutar un shell integrado
bzip2    Comprimir o descomprimir archivo(s)

C
cal      Mostrar un calendario
case     Ejecutar un comando en forma condicionada
cat      Concatenar y desplegar (en pantalla) el contenido de un o varios archivos
cd       Cambiar de directorio
cfdisk   Gestor de Tablas de Partición para Linux
chgrp    Cambiar la pertenencia a un grupo
chmod    Cambiar los permisos de acceso
chown    Cambiar el propietario y grupo de un archivo
chroot   Ejecutar un comando con directorio raíz diferente
chkconfig Servicios del sistema (nivel de ejecución)
cksum    Imprimir la suma de verificación y el contenido de bytes
clear    Limpiar la pantalla de la terminal
cmp      Comparar dos archivos
comm     Comparar dos archivos ordenados linea por linea
command  Ejecutar un comando – ignorando las funciones del shell.
continue Continuar con la siguiente interacción de un ciclo o bucle.
cp       Copiar uno o mas archivos a otra ubicación o ruta
cron     Demonio para ejecutar comandos agendados o programados
crontab  Agendar o programar la ejecución de un comando a un tiempo específico
csplit   Separar un archivo en partes determinadas por el contexto
cut      Divide un archivo en varias partes

D
date     Mostrar o Cambiar la fecha y hora
dc       Calculadora
dd       Convertir y copiar un archivos, escribir a un dispositivo
ddrescue Herramienta de recuperación de datos
declare  Declarar variables y asignarles atributos.
df       Mostrar el espacio libre en disco
diff     Mostrar las diferencias entre dos archivos
diff3    Mostrar deferencias entre tres archivos
dig      DNS lookup
dir      Listar de forma breve el contenido de directorios
dircolors Configurar colores para `ls’
dirname  Convierte un nombre de ruta completa a solo una ruta
dirs     Despliega una lista de directorios recordados
dmesg    Imprime mensajes del kernel y drivers
du       Estima el espacio ocupado por el archivo

E
echo     Despliega un mensaje en la pantalla.
egrep    Busca en archivo(s) por las líneas que corresponden a una expresión extendida
eject    Expulsa medios removibles
enable   Habilita y Deshabilita los comandos internos del shell.
env      Variables de Ambiente
ethtool  Configuración de interfaz Ethernet
eval     Evalúa varios comandos/argumentos
exec     Ejecuta un comando
exit     Salir del shell
expect   Automatizar aplicaciones arbitrarias accedidas mediante una terminal
expand   Convertir caracteres tabs a espacios
export   Establecer una variable de ambiente
expr     Evalúa expresiones

F
false    Sin efecto, falso, sin éxito
fdformat Formato de bajo nivel a un disco floppy
fdisk    Manipular tablas de partición para Linux
fg       Enviar trabajo o proceso al primer plano
fgrep    Buscar en archivo(s) por las lineas que corresponden a una cadena
file     Determina el tipo de archivo(s)
find     Buscar archivos que corresponden a un criterio deseado
fmt      Re formatear párrafo de texto
fold     Cortar texto para que tenga un ancho específico.
for      Expandir palabras, y ejecutar comandos
format   Formatear discos o cintas
free     Despliega el uso de memoria
fsck     Verifica y repara la consistencia del sistema de archivos
ftp      Protocolo de transferencia de archivos ftp
function Define Funciones Macros
fuser    Identificar/Matar el proceso que está accediendo o modificando un archivo

G
gawk     Buscar y reemplazar texto en archivo (s)
getopts  Analiza los parámetros de posición
grep     Busca en archivos por las líneas que correspondan al patrón buscado
groupadd Agregar un grupo de usuarios
groupdel Borra un grupo
groupmod Modificar un grupo
groups   Imprimir nombre de los grupos a los que pertenece un usuario
gzip     Comprime o descomprime los archivos nombrados

H
hash     Recuerda la ruta completa de un argumento
head     Muestra la primera parte de uno o varios archivos
help     Despliega la ayuda para un comando integrado en el sistema.
history  Muestra el historial de los comandos ejecutados
hostname Imprime o establece el nombre del sistema

I
iconv    Convertir el juego de caracteres de un archivo
id       Imprime los identificadores de usuario y grupo
if       Ejecuta un comando según se evalúe una condición
ifconfig Configurar una interfaz de red
ifdown   Detener una interfaz de red
ifup     Iniciar una interfaz de red
info     Leer documentos info del sistema o comandos
import   Capturar una pantalla del servidor X y grabarla imagen a un archivo
install  Copiar archivos y establecer atributos

J
jobs     Lista los trabajos o procesos activos.
join     Une lineas en un campo común

K
kill     Detiene un proceso en ejecución
killall  Detiene procesos por nombre

L
less     Despliega parte de un archivo en pantalla de manera interactiva
let      Realiza aritmética en variables del shell.
ln       Crear enlaces simbólicos o duros entre archivos
local    Crear variables.
locate   Buscar archivos
logname  Imprime el nombre de cesión actual
logout   Sale de una sesión de shell.
look     Despliega lineas que comienzan con una cadena dada
lpc      Programa de control de la línea de impresión
lpr      Impresión fuera de línea
lprint   Imprime un archivo
lprintd  Abortar un trabajo de impresión
lprintq  Listar la cola de impresión
lprm     Remover trabajos de la cola de impresión
ls       Listar información sobre archivos
lsof     Listar los archivos abiertos

M
make     Re compilar un grupo de programas
man      Manual o ayuda de un comando
mkdir    Crear un directorio
mkisofs  Crear un sistema de archivos híbrido ISO9660/JOLIET/HFS
mknod    Crear un bloc o un archivo especial de caracteres
more     Muestra la salida en una pantalla con pausas
mount    Montar un sistema de archivos
mtools   Manipular archivos MS-DOS
mtr      Diagnosticar Red (traceroute/ping)
mv       Mover o renombrar archivos o directorios
mmv      Mover o renombrar archivos o directorios de forma masiva

N
netstat  Dar información de la red
nice     Establecer la prioridad de un comando o de un proceso
nl       Enumera las líneas (al principio) de un archivo
nohup    Ejecutar un comando de forma inmune a bloqueos
notify-send  Enviar notificaciones de escritorio
nslookup Consulta los servidores de nombres de dominio de forma interactiva

O
open     Abrir un archivo con su aplicación predeterminada
op       Operador de acceso

P
passwd   Modificar la contraseña de un usuario
paste    Mezclar líneas de archivos
pathchk  Verificar disponibilidad de un nombre de archivo
ping     Probar la conexión de red
pkill    Detener la ejecución de un proceso
popd     Restaurar el valor previo del directorio actual
pr       Preparar archivos para impresión
printcap Base de datos de la capacidad de impresoras
printenv Imprime variables de ambiente
printf   Formatear e imprimir datos.
ps       Estado de los procesos en el sistema
pushd    Grabar y luego cambiar el directorio actual
pwd      Imprimir el directorio actual

Q
quota    Mostrar límites y uso del disco
quotacheck Escanear un sistema de archivos para el uso del disco
quotactl Establecer cuotas de disco

R
ram      Crear un dispositivo de disco en memoria
rcp      Copiar archivos entre dos máquinas
read     Leer una linea desde la entrada estándar.
readarray Leer desde la estrada estándar a una variable tipo arreglo.
readonly Marcar variables/funciones como de solo lectura
reboot   Reiniciar el sistema
rename   Renombrar archivos
renice   Modificar la prioridad de procesos en ejecución
remsync  Sincronizar archivos remotos vía email
return   Salir de una función shell
rev      Invertir las líneas de un archivo
rm       Remover archivo(s)
rmdir    Remover directorio(s)
rsync    Copiar archivos local o remotamente para sincronizar directorios

S
scp      Copiar archivos remotamente de forma segura (usando ssh)
sdiff    Mezcla archivos de forma interactiva
sed      Editor de flujo de caracteres para filtrar y formatear texto
seq      Imprime secuencias numéricas
set      Manipular variables y funciones del shell
sftp     Protocolo seguro de intercambio de archivos (sftp)
shift    Cambiar parámetros de posición
shopt    Opciones del Shell
shutdown Apagar o reiniciar Linux
sleep    Demora por un tiempo determinado
slocate  Encontrar archivos
sort     Ordenar archivos de texto
source   Ejecutar un comando de un archivo `.’
split    Partir una archivo es pedazo de cierto tamaño
ssh      Cliente SSH (Secure Shell client) para llamar programas remotamente
strace   Rastrear llamadas de sistema o señales
su       Cambia el id del usuario o para convertirse en superusuario (root)
sudo     Ejecuta un comando como otro usuario
sum      Imprime la suma de verificación de un archivo
suspend  Suspende la ejecución del shell actual.
symlink  Crea un nuevo nombre para un archivo
sync     Sincroniza datos en disco con la memoria

T
tail     Muestra la última parte de un archivo
tar      Tape ARchiver comprime y descomprime archivos
tee      Redirecciona la salida a múltiples archivos
test     Verifica tipos de archivos y compara valores
time     Ejecutar programas y resume el tiempo y recursos ocupados
times    Obtener el tiempo (hora) del sistema y del usuario
touch    Cambiar la hora del registro de uso de un archivo
top      Lista los procesos corriendo en el sistema y los recursos usados
traceroute Traza una ruta hacia un host
tr       Traduce o elimina caracteres
true     Sin efecto, valor verdadero, éxito
tsort    Realiza un ordenamiento topológico
tty      Imprime el nombre de archivo de la termina en la entrada estándar stdin
type     Describe un comando.

U
ulimit   Limitar los recursos de usuarios.
umask    Mascara de creación de archivos de usuarios
umount   Desmontar un dispositivo
unalias  Remueve una alias.
uname    Print system information
unexpand Convierte espacios caracteres tabs
uniq     Remueve lineas duplicadas en los archivos indicados
units    Convierte unidades de una escala a otra
unset    Renueve variables o nombres de funciones
unshar   Desempaqueta archivos de shell scripts
until    Ejecuta comandos (hasta encontrar error)
uptime   Muestra el tiempo que el sistema ha estado funcionando
useradd  Crear una cuenta nueva de usuario
userdel  Borra una cuenta de usuario
usermod  Modifica una cuenta de usuario
users    Lista los usuarios conectados actualmente al sistema
uuencode Codifica un archivo binario
uudecode Decodifica un archivo binario

V
vdir     Lista ampliada del contenido de directorio(s) (`ls -l -b’)
vi       Editor de texto
vmstat   Reportar estadísticas de memoria virtual

W
wait     Esperar que un proceso se complete.
watch    Ejecutar/desplegar un programa periódicamente
wc       Imprime el conteo de bytes, palabras y lineas
whatis   imprime descripciones de páginas de manual
whereis  Buscar en el $path, en los manuales del comando y en los archivos fuentes por un programa
which    Buscar en el $path del usuario por un archivo de programa
while    Ejecuta comandos
who      Imprimir todos los usuarios conectados en el sistema
whoami   Imprimir el id del usuario y el nombre del usuario (`id -un’)
wget     Descargar páginas web o archivos vía HTTP, HTTPS o FTP
write    Enviar un mensaje a otro usuario

X
xargs    Utilidad de Ejecución, pasando lista(s) de argumentos
xdg-open Abre un archivo o URL con la aplicación preferida por el usuario

Y
yes      Imprime una cadena «yes» hasta que sea interrumpido

Otros
.        Ejecuta un script de comandos en el shell actual
!!       Ejecuta de nuevo el último comando
###      Comentario / Remarca

by Mauro at May 29, 2019 02:00 PM

May 28, 2019

RooTeando

Entrevista En Diferido 10: José Maldonado

Hoy comenzamos una entrevista a José Maldonado, @Yukiteru_Amano.
Antes de todo, gracias por participar y apoyar este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

 

Entrevista En Diferido ¿Te podrías presentar en unas líneas?

 

José Maldonado:  Saludos! Mi nombre es José Maldonado (aka YukiteruAmano). Soy venezolano, aún viviendo en esta tierra.

Soy Lcdo en Educación Mención Física y estudiante ...

May 28, 2019 10:30 PM

soyadmin.com

Comprimir / Descomprimir desde nuestra consola

Acá les dejo un listado con los comandos para comprimir/descomprimir en SSH, utilizando los formatos de compresión y descompresión más utilizados.

  • Ficheros tar
Empaquetar: tar -cvf archivo.tar /dir/a/comprimir/
Desempaquetar: tar -xvf archivo.tar
Ver contenido: tar -tf archivo.ta
  • Ficheros gz
Comprimir: gzip -9 fichero
Descomprimir: gzip -d fichero.gz
  • Ficheros bz2 (gzip ó bzip2 sólo comprimen ficheros no directorios, para eso existe tar).
Comprimir: bzip fichero
Descomprimir: bzip2 -d fichero.bz2
  • Ficheros tar.gz
Comprimir: tar -czfv archivo.tar.gz ficheros
Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz
  • Ficheros tar.bz2
Comprimir: tar -c ficheros | bzip2 > archivo.tar.bz2
Descomprimir: bzip2 -dc archivo.tar.bz2 | tar -xv
Ver contenido: bzip2 -dc archivo.tar.bz2 | tar -t
  • Ficheros zip
Comprimir: zip archivo.zip ficheros
Descomprimir: unzip archivo.zip
Ver contenido: unzip -v archivo.zip
  • Ficheros lha
Comprimir: lha -a archivo.lha ficheros
Descomprimir: lha -x archivo.lha
Ver contenido: lha -v archivo.lha
Ver contenido: lha -l archivo.lha
  • Ficheros arj
Comprimir: arj a archivo.arj ficheros
Descomprimir: unarj archivo.arj
Descomprimir: arj -x archivo.arj
Ver contenido: arj -v archivo.arj
Ver contenido: arj -l archivo.arj
  • Ficheros zoo
Comprimir: zoo a archivo.zoo ficheros
Descomprimir: zoo -x archivo.zoo
Ver contenido: zoo -L archivo.zoo
Ver contenido: zoo -v archivo.zoo
  • Ficheros rar
Comprimir: rar -a archivo.rar ficheros
Descomprimir: rar -x archivo.rar
Ver contenido: rar -l archivo.rar
Ver contenido: rar -v archivo.rar

by Mauro at May 28, 2019 12:08 PM

May 27, 2019

blog de Rodolfo Pilas

Certbot: No module named pip.__main__; ‘pip’ is a package and cannot be directly executed

De un tiempo a esta parte he tenido sistemas de certificados Let’s Encrypt que han dejado de renovar el certificado automáticamente, al ejecutar certbot-auto obtengo el siguiente mensaje de error:

/opt/eff.org/certbot/venv/bin/python: No module named pip.__main__; 'pip' is a package and cannot be directly executed
Traceback (most recent call last):
  File "/tmp/tmp.p48KR72ZCs/pipstrap.py", line 177, in <module>
    sys.exit(main())
  File "/tmp/tmp.p48KR72ZCs/pipstrap.py", line 149, in main
    pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])
  File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/opt/eff.org/certbot/venv/bin/python', '-m', 'pip', '--version']' returned non-zero exit status 1

La solución que he encontrado es actualizar a mano certbot-auto e indicarle que corra sin tratar de actualizarse. Estos serían los comandos:

rm ./certbot-auto*
wget https://raw.githubusercontent.com/certbot/certbot/75499277be6699fd5a9b884837546391950a3ec9/certbot-auto
chmod +x ./certbot-auto
./certbot-auto --no-self-upgrade

La referencia a este procedimiento la he conseguido de este post en foro de la comunidad Let’s Encrypt.

by pilasguru at May 27, 2019 04:37 PM

May 24, 2019

soyadmin.com

Cómo protegerse de ataques de Denegación de Servicio (DOS) con ConfigServer Security & Firewall (CSF)

Hace unos días enseñábamos a instalar ConfigServer Security & Firewall (CSF) una herramienta imprescindible para todo admin y servidor de hosting.

ConfigServer Security & Firewall permite entre sus opciones protegernos de los ataques de denegación de servicio o DOS.

Las opciones a «tocar» dentro de la config del CSF son:

SYNFLOOD
synflood=1
synflood-rate= “30/s”
synflood_burst=10

Donde:
synflood=1 (Activa la protección del Synflood)
synflood-rate= “30/s” (cantidad de conexiones por segundo permitidas)
synfloodburst=10 (Bloquea luego de 10 intentos por IP)

PORTFLOOD
udpflood=1
udpflood-limit="50/s"
udpflood_burst=100

Donde:
udpflood=1 (Activa la protección del porflood)
udpflood-limit= “50/s” (cantidad de conexiones por segundo permitidas)
udpflood_burst=100 (Bloquea luego de 10 intentos por IP)

Por supuesto estas opciones deben ser adecuadas a cada servidor y a lo que cada Sysadmin crea que son valores correctos.

by Mauro at May 24, 2019 11:48 AM

May 23, 2019

soyadmin.com

Libro: EL SOFTWARE LIBRE EN EL SECTOR PÚBLICO de David Megias

Título: Libro: EL SOFTWARE LIBRE EN EL SECTOR PÚBLICO
Autor:
David Megias
Páginas: 118 Páginas
Tamaño: 2 MB
Fomato: PDF

Contenido:

Esta guía persigue acercar a los estudiantes a las principales cuestiones vinculadas con la aplicación del Software Libre a las administraciones públicas. Éstas, que entre otras funciones tienen que velar por la seguridad y la transparencia de la información pública del ciudadano, tienen una responsabilidad especial con respecto al uso de los fondos públicos aplicados a las tecnologías de la información y la comunicación (TIC). Es en este sentido en qué las administraciones se han posicionado como uno de los públicos objetivos más relevantes con respecto al uso y el fomento del Software Libre. Ahorro de costes de licencias, fomento de la industria local, localización de las lenguas marcada por el interés social y no estrictamente comercial, fomento de una sociedad de la información y del conocimiento basada en tecnologías libres y estándares abiertos, entre muchos otros, son algunos de los temas que han generado un debate en el si de la Administración Pública y que todavía permanecen con total vigencia.

El Software Libre en el sector público
La Administración pública como impulsora de acciones y fomento del Software Libre
La Administración pública como receptora de proyectos internos de Software Libre
Estudio de casos reales de migración de administraciones públicas
Plan de migración de una Administración Pública

by Mauro at May 23, 2019 07:54 PM

May 22, 2019

Sobre bits

Listar máquinas virtuales con snapshots antiguos con PowerCLI

Como administradores de sistemas vSphere una de las cosas que siempre deberíamos tener controlada en nuestra infraestructura es la existencia de máquinas virtuales con snapshots no utilizados. Como siempre digo en esta clase de entradas, hacer esto a mano en una infraestructura pequeña con pocas manos administrándola es algo viable, pero es una solución que no escala para nada bien. Es por ello que en esta entrada veremos cómo listar maquinas virtuales con snapshots antiguos con PowerCLI.

Listar máquinas virtuales con snapshots antiguos con PowerCLI

¿Por qué hay que eliminar snapshots antiguos en VMware?

En vSphere los snapshots pueden suponer una herramenta increíblemente útil en nuestro día a día o una pesadilla dependiendo del uso que le demos. VMware facilita una serie de buenas prácticas en ésta entrada.

Como indica VMware, no debereíamos tener snapshots más antiguos de 72 horas o podemos incurrir en:

  • Llenado del storage por culpa de que el snapshot no para de crecer.
  • Bajada de rendimiento en el sistema.

Yo por mi parte añadiría que eliminar un snapshot de varios cientos de GB o de más de 1TB no es la mejor de las experiencias 🤦‍♂️.

Listando snapshots antiguos con PowerCLI

Vamos a ver el pequeño script que nos ayudará a mantener a raya los snapshots antiguos con PowerCLI:

Spoiler: si únicamente quieres el one-liner para obtener las VMs puedes dirigirte directamente a las líneas resaltadas del script

#### Variables ####
# Conexión a vCenter
$VcenterIP = "192.168.168.168"
$VcenterCreds = Import-Clixml -Path "$PSScriptRoot\Credenciales\VMware_rw.xml"

# Antigüedad snapshot
$Days = 3

# Configuración del correo
$Body = "Snapshots con más de $Days días: `n`n"
$From = "[email protected]"
$To = "[email protected]"
$Subject = "VMs con Snapshot anterior a $Days días"
$SmtpServer = "mailserver.sobrebits.com"
$SmtpPort = 25

#### Cuerpo del script ####

# Conectamos al vCenter
Connect-VIServer -Server $VcenterIP -Credential $VcenterCreds -WarningAction SilentlyContinue | Out-Null

# Recuperamos todas las VMs con snapshot antiguos
$Vms = (Get-VM | Get-Snapshot | Where-Object {$_.Created -lt (Get-Date).AddDays(-$Days)}).VM.Name | Sort-Object

# Enviamos correo con el listado (en caso de que hubiera alguna VM con snapshot antiguo)
if ($Vms) {
    $Body += $Vms -join "`n"
    Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -SmtpServer $SmtpServer -Port $SmtpPort
}

# Desconectamos del vCenter
Disconnect-VIServer -Confirm:$false

Veamos qué hemos hecho aquí:

  • Líneas 3-4: Declaramos la IP y las credenciales del servidor vCenter.
  • 7: Declaramos la cantidad de días de antigüedad del snapshot. En nuestro caso seguimos las buenas prácticas de VMware y configuramos 3.
  • 10-15: Configuramos los parámetros para el envío de correo.
  • 20: Conectamos a vCenter.
  • 23: Aquí está la «chicha» del script, donde obtenemos todas las máquinas virtuales con snapshot anterior a 3 días:
    • Get-VM: Obtenemos todas las máquinas virtuales.
    • Get-Snapshot: Obtenemos todos los snapshots de las máquinas virtuales.
    • Where-Object {$_.Created -lt (Get-Date).AddDays(-$Days)}: Nos quedamos únicamente con los snapshots cuya fecha de creación ($_.Created) sea anterior (-lt) a la fecha actual menos 3 días ((Get-Date).AddDays(-$Days)).
    • .VM.Name: Seleccionamos únicamente el nombre de la VM a la que pertenece dicho snapshot.
  • 26-29: Si existen máquinas dentro de $Vms enviamos el correo con el listado de las máquinas virtuales.
  • 32: Desconectamos del vCenter.

Resumiendo, cada vez que el script se ejecute revisará todas las máquinas vituales del entorno y revisará si contienen snapshots y si éstos son anteriores a 3 días. De existir alguno nos enviará un resumen de las máquinas virtuales afectadas directamente a nuestra bandeja de correo para que seamos nosotros mismos los que gestionemos el caso.

Conclusión

Si utilizamos la ejecución programada de scripts de PowerShell para realizar este check de forma diaria nos vamos a asegurar de tener siempre controlada la existencia de snapshots antiguos con PowerCLI, con lo que tendremos una infraestructura más optimizada.

Para los más atrevidos, podríamos modificar el script para que, en vez de enviar un correo, ejecutara Remove-Snapshot para eliminar directamente sin preguntar los snapshots antiguos.

¡Nos leemos en la próxima!

La entrada Listar máquinas virtuales con snapshots antiguos con PowerCLI aparece primero en Sobrebits.

by Marc Meseguer at May 22, 2019 12:33 PM

soyadmin.com

Antergos el «Arch para Humanos» se despide.

El proyecto Antergos llega a su fin luego de 7 largos años. Así lo indicaron sus principales desarrolladores en el blog oficial de la distrubición

El artículo comienza con un «Lo que comenzó como un pasatiempo de verano hace siete años, se convirtió rápidamente en una increíble distribución Linux»
«Nuestro objetivo era hacer que Arch Linux estuviera disponible para una audiencia más amplia al proporcionar una experiencia simplificada y fácil de usar»

Los motivos?

El principal motivo que detallan los desarrolladores es la falta de tiempo «creemos que seguir descuidando el proyecto sería un gran perjuicio para la comunidad»

¿Qué pasará con los actuales usuarios de Antergos? Antergos tiene como repositorio principal el de Arch Linux, por lo tanto recibirá actualizaciones desde dicho repositorio, además indican que se lanzará una actualización aparte para eliminar el repositorio propio de la distribución «junto con cualquier paquete específico de Antergos que ya no tenga un propósito. Una vez que se haya completado, todos los paquetes instalados desde el repositorio de Antergos que están en AUR comenzarán a recibir actualizaciones desde allí»

¿Hay alguna alternativa a Antergos? Sí para los amantas de Arch, existe Manjaro y aquí tienen mucha información al respecto

Fuente: Muylinux

by Mauro at May 22, 2019 11:46 AM

Iotop: Herramienta para Monitoreo del Uso de Disco en Linux

Iotop es una herramienta de monitoreo que nos permite conocer la entrada y salida de disco (I/O), detallando en columnas  que procesos están escribiendo o leyendo en nuestro disco, esto realizándolo en tiempo real.

La instalación es sencilla:

Debian, Ubuntu y derivados:

# sudo apt-get install iotop

Centos, Rhel y Fedora:

# yum -y install iotop

Ejecutarlo en cualquier distribución es más sencillo aun:

# iotop

Podemos pasarle estas variables:

o Solo muestra los procesos que están usando el disco en el preciso momento que se lo comprueba.
-n nº Realiza un número concreto de chequeos, y termina. Por defecto, chequea infinitamente.
-d nº Indica cada cuanto tiempo hace el chequeo. Por defecto, es 1 segundo.
-u USUARIO Muestra solo los procesos del usuario o usuarios especificados.

Usando las flechas del teclado (derecha e izquierda) podemos cambiar el orden, r para invertir el orden, o para cambiar a la opción –only, p para cambiar a la opción –processes, a para cambiar a la opción –accumulated option, q para salir, i para cambiar la prioridad de un proceso. Al presionar cualquier otra tecla se fuerza una actualización o refresh.

by Mauro at May 22, 2019 11:23 AM

May 21, 2019

RooTeando

Tomando Un Café 58: Desarrollo de contenido

Nuevo audio donde hablo donde vuelvo a la formación , he pensado crear una trilogía de la formación. Este sería el segundo audio, el primero fue Como diseñar un curso, mas adelante lo finalizaré con un audio cuya temática,posiblemente ,será el Formador y alumnos.

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython @EntrevistaEnDiferido
Podcast @RadioDev  @ARMparaTODOS @TomandoUnCafe

Grupos de Telegram
Alternativas a la Raspberry
https://t.me/AlternativasRaspberry

Twitter
Tomando Un Café https://twitter.com/Tomando_Un_Cafe ...

May 21, 2019 09:55 PM

soyadmin.com

SOLUCIÓN A: W: Error de GPG: http://ppa….. al intentar actualizar Debian, Ubuntu y derivados

Durante una actualización manual de mi Xubuntu 18.10 me devolvieron algunos errores de GPG los cuales trataremos de solucionar en este post. El problema es que la actualización del sistema no seguirá hasta que reparemos estos inconvenientes.

Vamos a reproducir el error:
– Actualizamos:

sudo apt-get update

El error que devuelve es, por ejemplo:

W: Error de GPG: http://ppa.launchpad.net precise Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 1F3045A5DF7587C3

En este caso el error está en la clave 1F3045A5DF7587C3. El error se da porque se intenta autenticar las firmas de los repositorios y las mismas están desactualizadas contra el PPA.

Para solucionarlo tenemos 2 métodos:
1) Con nuestra querida Terminal:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1F3045A5DF7587C3

Lo que hace este comando es consultar a un servidor seguro de Ubuntu y actualizar la clave pública del repositorio con una válida.
Esto lo tendremos que hacer con cada clave que salte cuando intentemos actualizar, reemplazando 1F3045A5DF7587C3 por la siguiente.

2) Método Gráfico con Y-PPA-MANAGER:
Y-PPA-MANAGER es un gestor de repositorios, el cual entre otras funciones, nos permitirá actualizar las claves de repositorios que poseemos.
– Instalamos Y-PPA-MANAGER

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Luego ejecutamos el programa y vamos a Advanced y luego a Try to import all GPG keys.

Tendremos que esperar a que el proceso termine, puede demorar más de 2 o 3 minutos en completarse, quedando todas nuestras claves actualizadas correctamente.

by Mauro at May 21, 2019 01:40 PM

May 20, 2019

soyadmin.com

Instalación de CSF (ConfigServer Security Firewall) en WHM (CentOS, Red hat y Fedora)

CSF es un Firewall o cortafuegos, el cual es la mejor alternativa para el firewall nativo APF, CSF es muy sencillo de instalar/desinstalar y muy facil de configurar.

Este firewall es totalmente compatible con WHM, funciona como escaneo de paquetes, detector de intrusiones, lector de logs y bloqueador de ataques.

Sirve tambien como controlador de puertos y su módulo de LFD es una barrera increíble contra los intentos de ataque mediante intentos de loguin.

Vallamos a la instalación del aplicativo:

# rm -fv csf.tgz
# wget http://www.configserver.com/free/csf.tgz
# tar -xzf csf.tgz
# cd csf
# sh install.sh

Importante, ejecutar este script para desactivar el APF si es que lo teníamos instalado (recomendado si o si ante cualquier duda).

# sh disable_apf_bfd.sh

IMPORTANTE: Con eso sólo estaríamos instalando el Firewall, proximamente detallaremos configuraciones.

Por último, dejo la desinstalación del firewall:

# cd /etc/csf
# sh uninstall.sh

by Mauro at May 20, 2019 11:46 AM

debianhackers.net

instalando mattermost en debian stretch

¡Me encanta el olor a software libre por las mañanas! Y más cuando una aplicación privativa que me gusta se vuelve un dolor de muelas por sus restricciones. Entonces es el momento de buscar alternativas de software libre.

mis requerimientos

  • open source
  • alternativa a slack
  • multiplataforma: linux, windows, android…
  • sin limitaciones en cuanto a mensajes, ficheros, etc…
  • instalable en un servidor que ya esté funcionando con otros servicios

el caso

Slack, la plataforma para facilitar el trabajo en equipo es una herramienta muy útil pero, cuando llevas un tiempo utilizándola en su versión gratuíta empiezan a aparecer los problemas, como no poder recuperar conversaciones porque has excedido el máximo y sólo te muestra las últimas diez mil. Y un día, sin saber cómo, te encuentras abriendo duckduckgo y buscando 'slack open source alternatives'. Y ahí es cuando descubres Mattermost.

las alternativas

Mattermost es una alternativa a slack pero de software libre, su misión es la misma, su interfaz es terriblemente similar y no tiene las limitaciones de aquella pero no es la única alternativa. Durante un tiempo barajé la opción de zulip pero tiene un requerimiento que choca frontalmente con los míos:

Requirements

To run a Zulip server, you will need:

* A dedicated machine or VM

(Zulip Requirements)

Mis servidores son limitados y por eso trato de aglutinar en ellos servicios similares y, en este caso, ni quería ni podía utilizar una máquina para la mensajería.

La única desventaja que le vi a Mattermost es que utiliza nginx como proxy inverso y yo utilizo apache pero se puede cambiar fácilmente, como veremos.

instalación de mattermost

Todo el proceso descrito en esta entrada se ha obtenido de la documentación oficial de Mattermost.

creación de la base de datos

El servidor de bases de datos también está instalado y configurado por lo que únicamente tendremos que crear una base de datos y un usuario nuevos.

sudo mysql -u root -p -e "CREATE DATABASE mattermost; GRANT ALL ON mattermost.* TO 'matter'@'localhost' IDENTIFIED BY 'SuperSecurePassW0rd!';"

Estos datos de conexión se utilizarán más adelante al configurar el Driver de Mattermost.

Mattermos, al fin

Instalaremos Mattermost en /opt y apuntaremos el virtual host de apache2 a ese directorio.

wget -c https://releases.mattermost.com/5.10.0/mattermost-5.10.0-linux-amd64.tar.gz
tar xvfz mattermost-5.10.0-linux-amd64.tar.gz
sudo mv mattermost /opt/mattermost
rm -f mattermost-5.10.0-linux-amd64.tar.gz
sudo mkdir /opt/mattermost/opt
cd /opt/mattermost

sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

if [ `grep -c '"DriverName": "mysql"' /opt/mattermost/config/config.json` != '1' ] ; then
echo "el DriverName no es MySQL"
exit 1
fi

sudo sed -i 's|mmuser:[email protected](dockerhost:3306)/mattermost_test|matter:[email protected](127.0.0.1:3306)/mattermost|' /opt/mattermost/config/config.json

sudo -u mattermost /opt/mattermost/bin/mattermost ### si falla, leer más abajo

echo "[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target" | sudo tee -a /lib/systemd/system/mattermost.service

sudo systemctl daemon-reload
sudo systemctl status mattermost.service
sudo systemctl start mattermost.service
sudo systemctl enable mattermost.service

wget http://localhost:8065 -O - ### tiene que mostrar una web

la columna de una tabla es demasiado grande

Si falla y da este error, {"level":"error","ts":1557928148.6244338,"caller":"sqlstore/supplier.go:811","msg":"Failed to create index Error 1709: Index column size too large. The maximum column size is 767 bytes."}, cambiar configuración en mariadb:

sudo sed -i '/# this is only for embedded server/i \\# added for mattermost\ninnodb_default_row_format=dynamic\ninnodb_file_format=barracuda\ninnodb_file_per_table=true\ninnodb_large_prefix=true\n' /etc/mysql/mariadb.conf.d/50-server.cnf
sudo /etc/init.d/mysql restart

apache2

Crear el subdominio matter.example.com apuntando al servidor donde lo vas a instalar. En mi caso, en dicho servidor ya hay un apache funcionando y no necesito instalar software adicional. En caso de utilizar, como recomienda Mattermost, nginx tendría dos servicios operando sobre el mismo puerto y eso no termina bien nunca.

A partir de esta modificación, apache no sólo funcionará como servidor web sino que también hará de proxy inverso para redirigir el tráfico al puerto que escucha Mattermos, el 8065.

Creamos el VirtualHost para Mattermost, en principio vacío y luego, tras solicitar el certificado a letsencrypt, con la configuración de proxy.

echo "#&lt;ifmodule mod_ssl.c="">
#  &lt;virtualhost _default_:443="">
#    ServerName            matter.example.com
#    ServerAdmin           [email protected]
#    ErrorLog              /matter.example.com_error.log
#    TransferLog           /matter.example.com_access.log
#
#    SSLEngine             on
#    SSLCertificateFile    /etc/letsencrypt/live/matter.example.com/fullchain.pem
#    SSLCertificateKeyFile /etc/letsencrypt/live/matter.example.com/privkey.pem
#    SSLProtocol           TLSv1 TLSv1.1 TLSv1.2 -SSLv2 -SSLv3
#    SSLHonorCipherOrder   On
#    SSLCipherSuite        AES256+EECDH:AES256+EDH
#
#    ProxyPreserveHost     On
#    ProxyRequests         Off
#    ProxyPass             / http://127.0.0.1:8065/
#    ProxyPassReverse      / http://127.0.0.1:8065/
#
#    RewriteEngine         on
#    RewriteCond          %{REQUEST_URI} ^/api/v4/websocket [NC,OR]
#    RewriteCond          %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
#    RewriteCond          %{HTTP:CONNECTION} ^Upgrade$ [NC]
#    RewriteRule          .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
#    RewriteCond          %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} fg
#    RewriteRule          .* http://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
#
#    &lt;location api="" v4="" websocket="">
#      Require all granted
#      ProxyPassReverse http://127.0.0.1:8065
#      ProxyPassReverseCookieDomain 127.0.0.1 matter.example.com
#    &lt;/location>
#    &lt;location>
#      Require all granted
#      ProxyPassReverse http://127.0.0.1:8065
#      ProxyPassReverseCookieDomain 127.0.0.1 matter.example.com
#    &lt;/location>
#  &lt;/virtualhost>
#&lt;/ifmodule>
&lt;virtualhost *:80="">
ServerName    matter.example.com
DocumentRoot  /var/www/matter.example.com
#  Redirect      permanent / https://matter.example.com/
&lt;/virtualhost>" | sudo tee --append /etc/apache2/sites-available/matter.example.com.conf

sudo /etc/init.d/apache2 restart
sudo certbot certonly --apache --agree-tos -m [email protected] -d matter.example.com.conf
sudo sed -i 's/^#//' /etc/apache2/sites-available/matter.example.com.conf
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2ensite matter.example.com.conf
sudo /etc/init.d/apache2 restart

Tras ejecutar estos comandos tendremos un nuevo virtual host redirigiendo el tráfico al puerto de Mattermost, adornado con un bonito certificado de Let’s Encrypt.

Configuración de mattermost

Ahora sólo nos queda abrir el navegador en https://matter.example.com y configurar el usuario administrador. También es necesario configurar el servidor de correo según el apartado Configuring Mattermost Server.

by Diego Martínez Castañeda at May 20, 2019 10:12 AM

May 17, 2019

soyadmin.com

Libro: Utilidades y herramientas de Software Libre de Jesús Carrius

Título: UTILIDADES Y HERRAMIENTAS DE SOFTWARE LIBRE
Autor:
Jesús Carrius
Páginas: 392 Páginas
Tamaño: 17 MB
Fomato: PDF

Contenido:

Por software libre se entiende aquel que no sólo permite al usuario final ejecutar los programas, sino que también le confiere la libertad de acceder al código fuente y adaptarlo a sus necesidades, distribuir copias del software a terceras personas y publicar nuevas versiones.

Mucha gente, cuándo se habla de software libre, le viene a la cabeza las aplicaciones en modo texto que funcionan en los servidores, pero este movimiento también tiene a su disposición un gran número de utilidades para el usuario normal de escritorio.

En el curso de Herramientas y utilidades veremos algunos de los programas pensados para el entorno de trabajo de un usuario final. Estos programas nos permiten navegar de manera segura por la red (Mozilla), gestionar nuestro correo electrónico y trabajar en grupo (Ximan Evolution) y crear documentos de texto, hojas de cálculo o presentaciones al estilo del Microsoft Office (OpenOffice.org).

A lo largo del curso veremos cómo también podemos trabajar con estas herramientas libres en entornos propietarios como el Microsoft Windows aparte, claro está, del entorno GNU/Linux.

Los contenidos del curso se estructuran en dos grandes bloques. El primero está dedicado a las herramientas de Internet, representado por las unidades 1 y 2. El resto del temario está dedicado al programa OpenOffice.org, que, dada su complejidad, requiere muchas más unidades.

by Mauro at May 17, 2019 03:34 PM

May 16, 2019

RooTeando

Entrevista En Diferido 9: Rodolfo Pilas.

Hoy comenzamos una entrevista a Rodolfo Pilas, administrador de sistemas y creador del podcast deployandome.

Antes de todo, gracias por participar y apoyar este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

Entrevista En Diferido: ¿Te podrías presentar en unas líneas?

 

Rodolfo Pilas:  Difícil en unas líneas cuándo empecé mi vida laboral en los inicios de la computación personal, monté y ...

May 16, 2019 01:40 PM

May 15, 2019

soyadmin.com

Sacándole jugo al TOP

Top nos permite una mirada rápida y detallada de nuestro sistema, el mismo muestra en tiempo real un listado de los procesos que se estan ejecutando.

En su resumen nos muestra muchisima información al respecto de cada proceso, indicando el uso de CPU, RAM, tiempo de ejecución, etc.

Top es un comando especial y realmente indispensable, la herramienta de inicio para cualquier administrador de sistemas.

Lo ejecutamos simplemente con un:

# top

A) Cabecera:

1. Tiempo de actividad y carga media del sistema

top - 14:26:24 up 172 days,  2:05,  1 user,  load average: 1.17, 1.49, 1.60

En la primera línea nos muestra:
Hora actual.
Tiempo que ha estado el sistema encendido.
Número de usuarios (mario y root).
Carga media en intervalos de 5, 10 y 15 minutos respectivamente.

2. Tareas

La segunda línea muestra el total de tareas y procesos, los cuales pueden estar en diferentes estados:

Tasks: 368 total,   2 running, 363 sleeping,   0 stopped,   3 zombie

Running (ejecutar): procesos ejecutándose actualmente o preparados para ejecutarse.
Sleeping (hibernar): procesos dormidos esperando que ocurra algo (depende del proceso) para ejecutarse.
Stopped (detener): ejecución de proceso detenida.
Zombie: el proceso no está siendo ejecutado. Estos procesos se quedan en este estado cuando el proceso que los ha iniciado muere (padre).

3. Estados de la CPU

Esta línea nos muestra los porcentajes de uso del procesador diferenciado por el uso que se le de.

Cpu(s):  4.8%us,  2.2%sy,  0.0%ni, 86.1%id,  5.7%wa,  0.0%hi,  1.2%si,  0.0%st

us (usuario): tiempo de CPU de usuario.
sy (sistema): tiempo de CPU del kernel.
id (inactivo): tiempo de CPU en procesos inactivos.
wa (en espera): tiempo de CPU en procesos en espera.
hi (interrupciones de hardware): interrupciones de hardware.
si (interrupciones de software): tiempo de CPU en interrupciones de software.

4. Memoria física

Mem:   8147600k total,  7872232k used,   275368k free,   456392k buffers

Memoria total.
Memoria utilizada.
Memoria libre.
Memoria utilizada por buffer.

5. Memoria virtual

Swap: 10217300k total,  2418292k used,  7799008k free,  3901420k cached

Memoria total.
Memoria usada.
Memoria libre.
Memoria en caché.

B) Luego en el cuerpo nos detalla los procesos, mostrándonos esta información:

PID
Es ID, es el identificador o número de proceso.

USER
Es el nombre de usuario propietario del proceso.

PR
Indica la prioridad de ejecución de un proceso, algunos procesos muestran el valor “rt” lo que significa que ese proceso se ejecuta en tiempo real.

NI
Este es el valor nice de un proceso. Un valor menor significa una prioridad mas alta.

VIRT
Es la memoria virtual usada por un proceso.

RES
El tamaño de memoria residente. Esta es la memoria física que no puede ser intercambiada (non-swappable)

SHR
Esta es la memoria compartida usada por un proceso.

S
Muestra el estado del proceso y puede tener alguno de los siguientes valores:
D – espera no interrumpible
R – En ejecución
S – en espera
T – En seguimiento o Detenido
Z – Proceso en estado zombie

%CPU
porcentaje de uso de tiempo de CPU.

%MEM
porcentaje de memoria física usada por un proceso.

TIME+
Tiempo de CPU total que un proceso ha usado desde que inicio.

COMMAND
Es el comando con el cual fue iniciado el proceso.

C) Comandos anexos al top:

Presionando la tecla dentro del top verás lo que hace:

“h” – Help
Teclas “h” o “?” meustra la ayuda de los comandos interactivos.

“Enter” o “Espacio” – Actualizar
Actualizar los datos manualmente presionando la tecla “Enter” o la tecla “Espacio”.

“d” o “s” – Intervalo de actualización automático
Muestra un mensaje para que ingreses el número de segundos en lo que quieres que top actualice la información de forma automática.

“R” – Invertir
Al presionar “R” cambias el sentido ordenamiento actual, de menor a mayor o de mayor a menor.

“Z” – cambiar color
Al presiona “Z” puedes cambiar a la paleta de color

“z” – cambia entre color o blanco/negro
Puedes mostrar el comando top en color o blanco y negro.

“u” – Procesos de un usuario
Indica el nombre de un usuario para ver exclusivamente los procesos de ese usuario

“k” – matar un proceso
cuando presionas “k” puedes indicar un numero de PID al que deseas matar.

“1” – ampiar/reducir detalles de CPU
Si tu equipo tiene mas de 1 core o CPUs, puedes ver los detalles por cada CPU de forma general, este último es el modo por default.

D) Top cuenta además con la posibilidad de pasarle comandos anexos a la ejecución, con una serie de switches además de las opciones anteriores:

top -u usuario -> Muestra los procesos que estan corriendo con ese usuario y sus valores
top -p PID -> muestra el proceso seleccionado y sus valores
top -n numero -> Numero es la cantidad de iteraciones que va a tener el comando y luego se cerrara
top -d numero -> “Numero” es el tiempop en segundos que va a esperar el comando para refrescar la lista.
top -b -> Batch mode, ideal para mandar resultados desde top a otros programas

by Mauro at May 15, 2019 09:29 PM

5 maneras de chequear el Uso de Memoria (RAM) en Linux

Hoy les dejo una serie de comandos muy útiles a la hora de chequear la memoria RAM de nuestros equipos. Si existe algo esencial para cualquier sysadmin es tener control y monitoreo sobre la RAM, parte fundamental de nuestro servicio o para verificar en que gastamos la RAM de nuestro equipo.

Detallaremos comandos básicos para tener en cuenta, para saber cuanta memoria libre tenemos y en que la usamos.

Comando FREE

Free es un comando básico y sencillo, nos devuelve la info de nuestra memoria.

# free
total       used       free     shared    buffers     cached
Mem:       8147604    8081720      65884          0     266752    3173976
-/+ buffers/cache:    4640992    3506612
Swap:      4192956        164    4192792

Aqui veremos el total de memoria que poseemos, usada libre compartida el buffer y la cache de memoria.
Podemos hacer un man free para ver de que manera sacarle mas provecho a este comando.

MEMINFO

Tal como indica el nombre del comando MEMINFO muestra un resumen de nuestra memoria RAM, asi como los usos de la misma.

# cat /proc/meminfo
MemTotal:      8147604 kB
MemFree:        273928 kB
Buffers:        143940 kB
Cached:        3132532 kB
SwapCached:          0 kB
Active:        3642512 kB
Inactive:      2573116 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      8147604 kB
LowFree:        273928 kB
SwapTotal:     4192956 kB
SwapFree:      4192792 kB
Dirty:          932368 kB
Writeback:           0 kB
AnonPages:     2939284 kB
Mapped:          75932 kB
Slab:          1509532 kB
PageTables:      49284 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   8266756 kB
Committed_AS:  8158408 kB
VmallocTotal: 34359738364 kB
VmallocUsed:    316496 kB
VmallocChunk: 34359396276 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

VMSTAT

Con vmstat nos muestra una estadística de uso de nuestra memoria virtual

# vmstat -s
8147604  total memory
7934956  used memory
3714824  active memory
2570984  inactive memory
212648  free memory
142352  buffer memory
3140668  swap cache
4192956  total swap
164  used swap
4192792  free swap
57010231 non-nice user cpu ticks
3929882 nice user cpu ticks
16070480 system cpu ticks
484095278 idle cpu ticks
113936296 IO-wait cpu ticks
79724 IRQ cpu ticks
6548610 softirq cpu ticks
0 stolen cpu ticks
1179384504 pages paged in
882418049 pages paged out
0 pages swapped in
41 pages swapped out
1217828241 interrupts
3220405806 CPU context switches
1432912634 boot time
10835647 forks

Un comando muy parecido a Free con un buen detalle de nuestra RAM, podemos ver y saber más de vmstat con man vmstat

Concatenando comandos:

Este comando nos ordena los procesos por consumo de memoria, dejando al último aquel proceso que más uso le da a nuestra RAM

# ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS
50956 /usr/local/cpanel/3rdparty/bin/perl /usr/sbin/cxs --report /var/log/cxs.scan --logfile /var/log/cxs.log --mail [email protected] --smtp --exp --vir --opt
58744 pkgacct - toma614 - av: 3
60876 pkgacct - toma614 - av: 3
101928 /usr/local/apache/bin/httpd -k start -DSSL
101988 /usr/local/apache/bin/httpd -k start -DSSL
101992 /usr/local/apache/bin/httpd -k start -DSSL
101996 /usr/local/apache/bin/httpd -k start -DSSL
102048 /usr/local/apache/bin/httpd -k start -DSSL
102104 /usr/local/apache/bin/httpd -k start -DSSL
102136 /usr/local/apache/bin/httpd -k start -DSSL
102172 /usr/local/apache/bin/httpd -k start -DSSL
102184 /usr/local/apache/bin/httpd -k start -DSSL
102216 /usr/local/apache/bin/httpd -k start -DSSL
103224 /usr/local/apache/bin/httpd -k start -DSSL
295540 /usr/local/cpanel/3rdparty/bin/clamd
374144 cxswatch
1537420 /usr/sbin/mysqld --basedir=/usr --datadir=/backup/mysqldata --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit

Excelente comando para lograr identificar el posible causante de problemas.

TOP

Nuestro querido y más usado TOP nos muestra no solo una estadística el uso de memoria, sino también el consumo por procesos.

Puedes ver este Post donde hablamos y mucho del TOP

by Mauro at May 15, 2019 01:23 PM

blog de Rodolfo Pilas

El primer contenedor Docker

La primera vez que se presentó un contenedor Docker en forma pública lo hizo Solomon Hykes en la conferencia PyCon Santa Clara de 2013.

Es increíble y emocionante cómo Solomon describe rápidamente lo que hace un contenedor (minuto 2:30) que ejecuta un simple echo hello world.

  1. se genera la configuración de un contenedor
  2. se aloja el filesystem (se copia la imagen a una carpeta)
  3. se monta la capa de escritura del contenedor
  4. se configura la interfaz de red
  5. se gestiona una dirección IP y se configura
  6. se configura un NAT para comunicar el contenedor
  7. se ejecuta el comando y se despliega la salida
  8. se apaga el contenedor (o se destruye)

e inmediatamente recibe un aplauso del público, que asiste emocionado a lo que nosotros hoy día hacemos normalmente, sin emoción.

by pilasguru at May 15, 2019 11:55 AM

May 13, 2019

soyadmin.com

Libro: CORRE LINUX CORRE de Fernando Monroy

Título: CORRE LINUX CORRE
Autor: Fernando Monroy
Año: 2013
Páginas: 122 páginas
Tamaño: 16.47 MB
Fomato: PDF

 

 

 

 

 

Contenido:
Este es un libro NO oficial basado en la distribución de Ubuntu (Gnu Linux), esta desarrollado y pensado para todos aquellos que quieran iniciarse en el mundo de Gnu Linux.

Los procesos se explican de manera sencilla, de forma gráfica y didácticamente. Cuando uses este libro sentirás un «acompañamiento» como si alguien estuviera guiándote de forma presencial, pues así esta pensado.

Se reconoce y respeta que tanto la marca Linux como Ubuntu se encuentran registradas y se hace énfasis que este es un Libro No Oficial.

En Gnu Linux existen diferentes maneras de hacer los procesos de instalación y configuración, pero en esta guía se presenta el método más cómodo para el usuario novato.

by Mauro at May 13, 2019 09:14 PM

Instalar Fuentes Windows en Ubuntu y derivados y solución al error ttf-mscorefonts-installer.

Tratando de instalar las fuentes de Microsoft en Ubuntu o algún derivado me devolvía este error, por lo cual investigando un poco me di cuenta que no era algo normal pero si muy recurrente.

1) Con el comando:

# sudo apt-get install ttf-mscorefonts-installer

2) Me devolvía este error:

dpkg: error processing ttf-mscorefonts-installer (--configure):
package ttf-mscorefonts-installer is not ready for configuration
cannot configure (current status `half-installed')
Errors were encountered while processing:
ttf-mscorefonts-installer
D: Sub-process /usr/bin/dpkg returned an error code (1)

3) La solución es realizar una limpieza de los paquetes y luego reintentar la instalación completa del archivo de fuentes:

# sudo apt-get clean
# sudo apt-get install --reinstall ttf-mscorefonts-installer

4) Esto nos abrirá un cuadro de diálogo que nos muestra la licencia EULA de las fuentes, le ponemos OK (debemos usar la tecla TAB para desplazarnos hasta el OK)

5) Luego nos pide que aceptemos dicha licencia, le damos que SI (debemos usar la tecla TAB para desplazarnos hasta el Yes)

6) Al final hace la instalación de las fuentes y nos mostrará

All done, no errors.
All fonts downloaded and installed.
Processing triggers for fontconfig (2.11.0-0ubuntu4) ...
Setting up ttf-mscorefonts-installer (3.4+nmu1ubuntu1) ...

by Mauro at May 13, 2019 01:03 PM

May 10, 2019

soyadmin.com

Jugando con la paquetería en ARCH (Manjaro – Antergos – Chakra)

En este post hablaremos un poco de los comienzos en Manjaro, si luego de una instalación de cero. Como entender la paquetería de Manjaro (Arch) y conocer los comandos básicos para Instalar, Actualizar, Modificar y Eliminar paquetes.

Como ya todos sabrán Manjaro está basada en Arch y como tal utiliza PACMAN como gestor de paquetes y binarios de los repositorios originales de Arch Linux. AUR es el repositorio comunitario y YAY vendría a ser un complemento de PACMAN para poder compilar y dar forma a AUR. Esto sería a grandes rasgos, ahora detallemos un poco la funcion de PACMAN, AUR y YAY:

PACMAN
En Linux el soft está en binarios, cada rama de distribuciones tienen sus propios intérpretes de dichos binarios, (por ejemplo apt-get en Debian y derivados o yum en Fedora y RedHat, etc) PACMAN vendría a ser el gestor de paquetes de binarios de Manjaro (Arch) el cual nos permitirá instalar, actualizar eliminar estos paquetes. En los repositorios Arch los paquetes vienen compilados y se dividen de la siguiente manera:

Core: Paquetes esenciales del sistema, como el kernel Linux o las herramientas de GNU.
Extra: Paquetes no esenciales, pero que son importantes como entornos de escritorio y programas.
Testing: Paquetes en estado de pruebas, que luego van a Core o a Extra.
Community: Paquetes de AUR más votados por la comunidad de usuarios y adoptados por un Trusted User(usuario que el equipo de Arch considera de confianza).
Community Testing: Contiene paquetes de AUR en estado de prueba para ser luego transferidos a Community.
Multilib: repositorio centralizado para usuarios x86_64, para dar soporte más fácilmente a aplicaciones 32-bit en ambientes 64-bit.
Multilib-testing: con paquetes de prueba para multilib.

AUR (Arch Users Repository)
Es el Reporsitorio de la Comunidad, en el cual se incluyen miles y miles de paquetes de código fuente. AUR centraliza el software subido por la comunidad junto con su respectivo PKGBUILD. Esto le permite a cualquier usuario descargar el paquete, compilarlo fácilmente usando makepkg e instalarlo usando Pacman. Aunque suene medio complejo no es así.

YAY 
Llega para facilitarnos las cosas, es un complemento de Pacman que nos compila e instala paquetes AUR. Además de esto podemos usarlo para actualizar estos paquetes a sus últimas versiones, es decir hace una indexación de AUR y chequea si hay actualizaciones. Al estar funcionando bajo Pacman también actualiza los paquetes oficiales de Arch.

Como se usan Pacman y Yay?

pacman -S “paquete” (Instala un paquete)
pacman -Sy “paquete” (Sincroniza repositorios e instala el paquete)
pacman -Sy (Sincroniza repositorios)
pacman -Syy (Fuerza la sincronización de repositorios incluso para paquetes que parecen actualizados)
pacman -Syu (Sincroniza repositorios y actualiza paquetes)
pacman -Syyu (Fuerza sincronización y actualiza paquetes)
pacman -Su (Actualiza paquetes sin sincronizar repositorios)
pacman -Ss “paquete” (Busca un paquete)
pacman -Si “paquete” (Muestra información detallada de un paquete)
pacman -Sg “grupo” (Lista los paquetes que pertenecen a un grupo)
pacman -Qs “paquete” (Busca un paquete instalado)
pacman -Qi “paquete” (Muestra información detallada de un paquete instalado)
pacman -Qdt (Muestra paquetes huérfanos)
pacman -R “paquete” (Borra paquete sin sus dependencias)
pacman -Rs “paquete” (Borra paquete y sus dependencias no utilizadas)

yay -S "paquete" (Busca e instala el paquete, si es de los repositorios oficiales lo instala. Si es de AUR, lo compila y lo instala)
yay -Syua (Sincroniza, actualiza y comprueba actualizaciones de paquetes AUR instalados)

Espero les sirva este principio de tutorial, el cual sirve para cualquier distro ARCH. Saludos!

by Mauro at May 10, 2019 08:58 PM

Como saber que comandos usamos más en nuestra consola?

Este comando nos tirará un resumen de los 10 top comandos usados más veces en nuestra consola, ya sea PC o servidor…

En centOS RHEL o Fedora:

history | awk '{print $4}' | sort | uniq -c | sort -rn | head

En Ubuntu y derivados:

history | awk '{print $2}' | sort | uniq -c | sort -rn | head

Si bien el comando es igual en cada distro, cambia la distribución de las columnas. Un comando que no sirve más que para hacer un resumen o estadísticas de lo que hacemos normalmente en nuestro server.

by Mauro at May 10, 2019 01:17 PM

May 09, 2019

soyadmin.com

Terminal: NeoFetch & Screenfetch 2 herramientas para consultar la Información del Sistema en Linux

Hoy les traemos 2 programas perfectamente funcionales y de hecho muy parecidos entre sí, con los cuales podremos ver la Información Básica de Nuestro Sistema, esto realizado automáticamente desde nuestra terminal.

NeoFetch y ScreenFetch escanean nuestro sistema y recopilan información rápida y básica sobre lo que poseemos tanto de Software como de Hardware. Esto incluye:

Hoy les traemos 2 programas perfectamente funcionales y de hecho muy parecidos entre sí, con los cuales podremos ver la Información Básica de Nuestro Sistema, esto realizado automáticamente desde nuestra terminal.

NeoFetch y ScreenFetch escanean nuestro sistema y recopilan información rápida y básica sobre lo que poseemos tanto de Software como de Hardware. Esto incluye:
El logo de nuestra distribución.
Nuestro nombre de usuario y el nombre del equipo.
La versión del Kernel que estamos usando.
El tiempo que lleva abierto nuestro ordenador.
El número de paquetes que tenemos instalado en nuestro sistema operativo.
La versión de Bash que estamos usando.
La resolución de nuestra pantalla.
El entorno de escritorio que estamos utilizando.
El tema que estamos usando en nuestro sistema operativo.
El tema de iconos que estamos usando.
El tipo de fuente que tenemos configurada.
El procesador que tiene nuestro ordenador.
La tarjeta gráfica que tiene nuestro ordenador.
La memoria RAM usada y disponible de nuestro ordenador.

 

1) NEOFETCH
Está escrito en Bash, muestra el logotipo de nuestra distribución base en ASCII. Muestra y detalla información que si bien parece básica puede resultarnos muy útil y sin necesidad de diversos comandos o de aplicaciones complejas.

NeoFetch al estar diseñado en Bash puede ser utilizado en cualquier sistema que permita ejecutar Bash, lo que significa que se puede usar en Linux, MacOS, iOS, BSD, Solaris, Android y Windows 10. Un súper multiplataformas.

Como lo Instalamos:
DEBIAN, UBUNTU Y DERIVADAS:

sudo add-apt-repository ppa:dawidd0811/neofetch
sudo apt update && sudo apt install neofetch

ARCH LINUX Y DERIVADAS:

yay -S neofetch

FEDORA:

su -c
dnf install dnf-plugins-core
dnf copr enable konimex/neofetch
dnf install neofetch

Para ejecutarlo una vez instalado, simplemente:

neofetch

Para ver la ayuda y complementos:

neofetch --help

 

2) SCREENFETCH
ScreenFetch está diseñado en Bash y al igual que NeoFetch nos ayuda a ver y tener una idea básica de la Información de nuestro Sistema. Presentada elegantemente con el logo de la distro que estamos ejecutando en nuestra PC.

Como lo Instalamos:
DEBIAN, UBUNTU Y DERIVADAS:

sudo apt-get install screenfetch

ARCH LINUX Y DERIVADAS:

sudo pacman -S screenfetch

FEDORA:

sudo dnf install screenfetch

Para ejecutarlo una vez instalado, simplemente:

screenfetch

Para ver la ayuda y complementos:

man screenfetch

 

Estas son 2 alternativas muy válidas para tener un pantallazo general del sistema que poseemos, tanto en Hardware como en Software. Fáciles de usar, se pueden configurar y editar la información a mostrar, todo esto directamente desde la terminal 🙂

by Mauro at May 09, 2019 09:42 PM

Desfragmentando nuestro sistema Linux

Primero… ¿es necesario realizar una desfragmentación de nuestro sistema linux? existe una creencia de que no es necesario realizar una desframentación de nuestro disco o partición debido a que Linux no es Windows…

Esto es en parte así pero, si bien los sisitemas ZFS, EXT, JFS, XFS, ReiserFS, Btrfs tienen maneras inteligentes de asignar ficheros, lo cual hace que se realice una fragmentación de los mismos. Aunque luego de años de uso de un sistema puede suceder que nuestras particiones sobre todo queden con pequeñas fragmentaciones.

e4defrag es una herramienta que nos permitirá desfragmentar nuestro disco duro desde nuestra consola, es aplicable solo a sistemas EXT4, la misma nos solucionaría cualquier pequeño problema de fragmentación, sobre todo si posees un disco duro pequeño.

Esta herramienta viene por defecto en la mayoría de nuestras distros:
Como se usa, recuerda que es necesario el uso de permisos de root y que el sistema de archivos debe ser EXT4.

1) Vemos si es necesario defragmentar:

# e4defrag -c /ruta

Aqui deberemos prestar atención al valor de «Fragmentation score» el cual nos indicará cuan fragmentado esta nuestro sistema. La recomendación es que sólo se desfragmente si el valor es mayor a 50.

2) Procederemos a la desfragmentación:

# e4defrag /ruta

Ejemplos:

# e4defrag /dev/sda*
# e4defrag /home

Esperamos a que el proceso termine y con eso tendremos nuestro sistema desfragmentado, podemos tirar nuevamente el 1º comando para ver que el Fragmentation score ha bajado.

by Mauro at May 09, 2019 01:27 PM

May 08, 2019

soyadmin.com

Timeshift un sistema de Backups and Restore para Linux.

Todos sabemos o comprendemos que la rotura de un disco o una mala jugada de un comando pasado bajo sudo puede hacer que nuestros archivos queden fritos.

Ante esto todos creo que somos conscientes que hoy en día sea el SO que sea lo mejor es siempre tener a mano un respaldo, backup, copia de seguridad o como quieran llamarlo.

Existen muchísimas herramientas o aplicaciones, incluso varias distribuciones traen su propia app encargada de hacer esta tarea de backups.

Hoy les presento a Timeshift, un excelente software que nos puede salvar la vida ante alguna catástrofe…
Timeshift sirve para restauración de nuestro sistema completo, es decir no solo backupea archivos personales, sino que realiza una copia completa o espejo de nuestra PC, toda nuestra distribución de principio a fin.
En caso de comprar un nuevo disco o pc y deseamos replicar todo lo que teníamos. En caso de una configuración, instalación extrema que pueda salir mal, sirve como regresión a un estado anterior en el cual todo funcionaba correctamente.

Timeshift no solo copia nuestros archivos personales o nuestras aplicaciones, captura el SO completo con configuraciones, aplicaciones, personalizaciones en una sola imagen.

 

Como lo instalamos?
Ubuntu y derivadas:

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift

Arch y derivadas:

yaourt timeshift

 

Como Funciona?
Hacer un respaldo:
Lo primero será iniciar nuestro programa desde el menú, nos pide permisos de root e inicia un Setup Wizard donde nos guiará paso a paso como hacer nuestro primer backup. Le damos a finalizar así vemos directamente las opciones de este excelente programa.

Si le damos a “Create” empezará directamente la copia de seguridad con los valores de configuración defaults, por lo que lo mejor es arrancar por las opciones, vamos a “Settings” y veremos:

Type: Nos permite elegir el modo de respaldo, yo lo deje en RSYNC que hace un respaldo completo del sistema por primera vez y luego incrementales segun la peridicidad que elijamos. Luego esta tambien disponible la opción de BTRFS

Location: Tenemos un listado de nuestros discos y particiones disponibles donde resguardar nuestra información.

Schedule: Nos permitirá elegir la periodicidad con la que se realizan los respaldos, y la cantidad de copias que podemos guardar de cada uno. Por ejemplo hacemos respaldo semanalaes y guardamos 2 semanas.

Filters: Nos permite agregar carpetas o archivos que no queremos que respalde. Por ejemplo en mi caso saco las carpetas de Dropbox y Mega ya que sincronizo nuevamente si en algún momento tengo problemas.

Dependiendo de lo que deseemos, podemos darle a “Create” y empezará nuestro respaldo o bien cerramos la aplicación y esperamos a que se autoejecute con la periodicidad que elegimos en Schedule.

 

¿Ahora, que pasa si necesitamos restaurar?
En caso de que llegue ese momento donde nuestro sistema se derritió, necesitaremos acceder a nuestra PC mediante un Live USB de la distro que deseemos. Aunque si nuestra pc está operativa, timeshift permite que restauremos un respaldo desde nuestro mismo del linux operativo.

 

Los pasos son fáciles:
Instalamos Timeshift y este buscará en los discos o extraibles las copias de seguridad que poseamos para proceder a restaurarlas.

Una vez que seleccionamos la copia deseada, vamos a “Restore” y alli nos pedirá que elijamos donde restaurar y también nos permitirá elegir que aplicaciones excluir en caso de que lo querramos.

 

Desinstalar:
Si vemos que timeshift no nos convence y queremos eliminarlo de nuestro sistema, lo primero es ingresar y eliminar cada respaldo desde la misma aplicación.
Luego de eso desinstalamos con:

sudo timeshift-uninstall

by Mauro at May 08, 2019 07:45 PM

Como mantener nuestro sitio o server alejado de robots, bots, spiders, crawlers y visitas no deseadas

Las visitas y el tráfico que puede tener nuestro Sitio y nuestro Servidor, muchas veces son visitas de clientes o visitantes válidos digamos aunque muchísimas veces esa visita es una visita inesperada 🙂 muchas veces son robots bots o crawlers.

Ahora, que son los Robots, Bots o Crawlers?
Son aplicaciones automáticas que hacen un escaneo constante de «internet» buscando recopilar información, enlaces web y contenido. Buscadores como Google, Bing, Yahoo lo hacen, utilizan estos escaneos para generar estadísticas e información de nuestro sitio y así poder «mostrar» información valida cuando uno hace búsquedas en estas web.
Hasta ahi todo lindo ¿que mejor que nuestra web sea indexada correctamente por los buscadores más importantes? el problema se genera debido a que cada día aparecen más y más bots y crawlers los cuales abusan o son intrusivos hacia nuestro servidor o sitio web.

Existen robots que buscan por ejemplo, robarse el contenido que tengas en tu portal, «cosechar» cuantas direcciones de correo electrónico, realizar spam en formularios de contacto o comentarios o directamente explorar vulnerabilidades conocidas del software que tengas instalado, son de estos robots que debemos protegernos.

Que puede pasar con un sitio o server que es bombardeado por robots, bots, spiders, crawlers?
La visita de un robot es eso, una visita que recibe nuestro servidor o web, si multiplicamos eso a cientos y miles de visitas por minuto de cientos de crawlers que entran a rotar en nuestro sitio o servidor, indudablemente cabe la posibliidad de que lleguen a «tumbar» un servicio, denegar una solicitud válida o llegar a límites de transferencia mensuales (esto como cuestiones simples) o directamente al robo de información, vulneración de nuestro sitio (que ya son cuestiones bastante graves). En estos casos hay que ponerse el escudo y empezar a tunear un poco nuestro sitio para evitar o tratar de repeler estas alimañas.

Como hacemos para controlar estos agentes?
Existen 2 archivos que podemos tunear o tocar:
robots.txt (aqui podemos indicar que robots NO pueden acceder a nuestro sitio)
.htaccess (aqui bloquearemos el robot que querramos por medio del user-agent)

1) Como configuro correctamente mi robots.txt?

Aqui colocaremos que partes del sitio NO queremos que sean visitadas por los robots o directamente negar el acceso a un robot específico.

* Colocaremos que partes del sitio no quieres que toque ningún robot:

User-agent: *
Disallow: /images
Disallow: /documentos
Disallow: /portal/formulario.php

* Si queremos que ningún robot toque nada de nuestro sitio.

User-agent: *
Disallow: /

* Denegar el acceso a un robot específico a nuestro sitio

User-agent: robotxx
 Disallow: /

* Armar una lista blanca de robots buenos y negar el acceso a robots malos 🙂

User-agent: Googlebot
User-agent: Bingboot
User-agent: msnbot
User-agent: Mediapartners-Google*
User-agent: Googlebot-Image
User-agent: Yahoo-MMCrawler
Disallow:

User-agent: *
Disallow: /

2) Como configuro correctamente el .htaccess para bloquear robots?

Muchas veces los robots malos no llevan el apunte a nuestro robots.txt, ahi entra en juego el .htaccess que es un poco más efectivo para el control de robots bots spiders crawlers.

* Denegar el acceso por user-agents y que su petición no sea atendida

Options All -Indexes
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^ROBOTXX.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^ROBOTXXX.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^ROBOTXXXX.* [OR]
RewriteRule ^.* - [F]

* Bloquear las IP’s conocidas de estos bichos

order allow,deny
deny from 127.0.0.1 # banea esa ip
deny from 127.0.0.1/17 # banea de la 1 a la 17
allow from all # y permitimos el acceso al resto

* Se puede usar tambien la variable SetEnvIfNoCase

Options All -Indexes
RewriteEngine on

SetEnvIfNoCase User-Agent "ROBOTXX" bad_bot
SetEnvIfNoCase User-Agent "ROBOTXXX" bad_bot
SetEnvIfNoCase User-Agent "ROBOTXXXX" bad_bot

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

Existen páginas que hacen el trabajo por nosotros y ya tienen .htaccess armados para bloquear todos los robots spiders bots crawlers indeseables y que podemos tomar como ejemplo.
WPSecure.net
Bad-Bot-Bloquer

by Mauro at May 08, 2019 03:35 PM

May 06, 2019

debianhackers.net

[Truco] cambiar la contraseña de una partición cifrada en debian stretch

Se nos llena la boca (a mí el primero) diciendo que tenemos que cifrar los dispositivos de almacenamiento, sobre todo los portátiles y los discos duros externos, para luego tener una única contraseña durante toda la vida útil del dispositivo.

En mi trabajo no tengo instalado linux en la estación de trabajo por directrices de la empresa pero, en cambio, sí que tengo una máquina virtual con VirtualBox que utilizo como sistema operativo principal, tanto que tengo un montón de alarmas de vbox para que no le de tantos recursos :-D. La cuestión es que el volumen de esa máquina virtual está cifrado desde el momento en que instalé debian y, pasado cierto tiempo, toca cambiar la frase de paso.

Cambiar la contraseña de LUKS puede hacerse mediante gnome-disks (en el paquete gnome-disk-utility) o, más fácil, desde la consola.

Lo primero es saber sobre qué partición quieres actuar, porque se puede dar el caso de que tengas varias particiones cifradas, incluso con diferentes contraseñas (ese es un nivel de paranoia al que aún no he llegado).

[email protected]:~$ cat /etc/crypttab
sda5_crypt UUID=7366a5c5-xxxx-yyyy-zzzz-XXXXXXXXXXXX none luks

Ese fichero es la base de datos de volúmenes cifrados y, en este caso, sólo hay una partición que manejar, sda5.

A continuación, ejecutamos el comando que cambia la frase de paso sobre la partición correcta:

[email protected]:~$ sudo cryptsetup luksChangeKey /dev/sda5
Introduzca la frase contraseña que hay que cambiar:
Introduzca una nueva frase contraseña:
Verifique la frase contraseña:

Cuando dentro de unos meses vuelva a cambiar la contraseña, ya no tendré que buscar más que aquí :-D.

by Diego Martínez Castañeda at May 06, 2019 11:33 AM

May 02, 2019

Sobre bits

Active Directory: Gestionar permisos de OU con PowerShell

Si gestionáis un entorno de Active Directory «multitenant» o un directorio muy grande, es posible que más pronto que tarde os toque editar los permisos de las Unidades Organizativas para aseguraros de que no todo el mundo puede verlo todo. En la entrada de hoy veremos cómo gestionar permisos de OU con PowerShell, un proceso algo más complicado de lo que nos podríamos imaginar al ponernos a ello.

Para ver las distintas funciones que podemos realizar de una forma práctica en esta entrada crearemos un script que:

  • Crea una OU con PowerShell.
  • Rompe la herencia de la OU.
  • Elimina los permisos autogenerados en dicha OU.
  • Añade permisos personalizados.
Active Directory: Gestionar permisos de OU con PowerShell

Antes de empezar

Para entender mejor el contenido de esta entrada es conveniente que tengas una base sobre cómo funcionan los permisos en Windows y, específicamente, sobre los permisos en Active Directory. Durante la entrada me referiré a dos terminos de forma constante:

  • ACL: La Access Control List, es decir, la lista de permisos completa que está asociada al objeto (en esta entrada a una OU).
  • ACE: La Access Control Entry, es decir, un permiso conceto dentro de la ACL.

¡Con esto dicho ya podemos empezar!

Crear Unidad Organizativa con PowerShell

Para poder hacer nuestras pruebas de modificación de permisos de OU con PowerShell lo primero que necesitaremos será una OU de prueba que, como no, crearemos con PowerShell.

Como siempre os recomiendo que hagáis siempre vuestros desarrollos sobre un entorno de prueba ya que es muy fácil que acabemos liando una gorda, y nadie quiere recrear permisos a mano sobre un árbol de Active Directory.

# Definimos el path donde crear nuestra OU de prueba
$OuPath = 'DC=sobrebits,DC=local'

# Creamos la OU "OUTest" en la ubicación definida
New-ADOrganizationalUnit -Name 'OUTest' -Path $OuPath

En primer lugar hemos definido el path de la OU que vamos a crear con PowerShell. Después utilizamos New-ADOrganizationalUnit para crear una OU con el nombre OUTest.

Crear OU con PowerShell

Romper la herencia de OU con PowerShell

Ahora que tenemos nuestra Unidad Organizativa creada es momento de trastear con sus permisos. Justo después de crear la OU podemos ver como existen multitud de permisos heredados del nivel superior:

Permisos de OU heredados

Lo primero que haremos para asegurarnos de que podemos juguetear con todos ellos será romper la herencia de permisos de OU:

# Generamos el Path completo de la OU creada
$OuPath = "OU=OUTest,$OuPath"

# Obtenemos las ACL de nuestra OU
$Acl = Get-Acl "AD:\\$OuPath"

# Rompemos la herencia preservando las ACLs heredadas
$Acl.SetAccessRuleProtection($True,$True)

# Escribimos la ACL en la OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

Lo que hemos hecho ha sido obtener un objeto que representa todas las entradas de permisos de nuestra OU, lo hemos modificado para que deje de heredar permisos (copiando los que ya tenía heredados) y escribiendo éste objeto modificado en la ACL de la OU. Veamos línea a línea cómo lo hemos hecho:

  • Línea 2: Construimos el path completo de la OU que acabamos de generar para operar con ella en futuras líneas mediante $OuPath.
  • 5: Utilizamos el cmdlet Get-Acl para obtener los permisos (ACL) de la OU de Active Directory.
    • AD:\\ es un PSDrive que apunta a la raíz del directorio.
  • 8: Utilizamos el método SetAccessRuleProtection de nuestro objeto de ACL (System.DirectoryServices.ActiveDirectorySecurity) con el que podemos modificar el comportamiento de la heréncia.
  • 11: Con Set-Acl escribimos la ACL modificada en el comando anterior utilizando el parámetro -AclObject junto con el objeto modificado.

Si comprobamos ahora los permisos de nuestra OU de prueba veremos como tiene los mismos permisos que anteriormente pero éstos ya no son heredados del nivel superior:

Romper herencia de OU con PowerShell

Eliminar permisos de OU con PowerShell

Lo siguiente que vamos a ver será cómo eliminar estos permisos. El procedimiento es muy parecido: obtenemos la ACL actual, eliminamos los permisos (ACE) uno a uno del objeto y escribimos nuestra ACL modificada en la OU:

# Volvemos a obtener las ACLs de nuestra OU
$Acl = Get-ACL "AD:\\$OuPath"

# Recorremos las ACLs y las eliminamos una a una
ForEach ($Ace in $Acl.Access) {
        $Acl.RemoveAccessRule($Ace) | Out-Null
    }

# Escribimos la ACL de nuevo en nuestra OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

Veamos paso por paso:

  • Línea 2: Obtenemos las ACL de la OU de nuevo.
    • Debemos tener en cuenta que tras cada modificación de los permisos de la OU deberemos «refrescar» nuestro objeto $Acl para que tenga la versión actualizada de los permisos.
  • 5: Recorremos todas las ACL contenidas en la propiedad «Access» de nuestro objeto $Acl.
    • 6: Utilizamos el método RemoveAccessRule del objeto $Acl para eliminar la ACE.
  • 10: Con Set-Acl escribimos la ACL modificada en el comando anterior utilizando el parámetro -AclObject junto con el objeto modificado.

Después de eso, si volvemos a revisar los permisos de la OU veremos como no existe ninguno:

Eliminar permisos de OU con PowerShell

Añadir permisos de OU con PowerShell

Con nuestra ACL limpia llega el momento de añadir permisos a la Unidad Organizativa. Esta es quizás la parte más compleja, puesto que deberemos construir a mano un objeto ActiveDirectoryAccessRule, es decir, deberemos crear la ACE de forma manual. Vamos a ver cómo sería la cosa:

# Volvemos a obtener las ACLs de nuestra OU
$Acl = Get-ACL "AD:\\$OuPath"

# Construimos la ACE para el usuario Marc
$User = (Get-ADUser 'Marc')
$Sid = [System.Security.Principal.SecurityIdentifier]$User.Sid
$Identity = [System.Security.Principal.IdentityReference]$Sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]"GenericRead"
$Type = [System.Security.AccessControl.AccessControlType]"Allow"
$Inheritance = [System.DirectoryServices.ActiveDirectorySecurityInheritance]"All"
$Ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity,$Rights,$Type,$Inheritance

# Añadimos la ACE a la ACL
$Acl.AddAccessRule($Ace)

# Escribimos la ACL de nuevo en nuestra OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

Repasemos paso por paso:

  • Línea 2: Obtenemos las ACL de la OU de nuevo.
  • 5-10: Obtenemos todas las propiedades que necesitamos para construir nuestro objeto ActiveDirectoryAccessRule.
    • 5: Obtenemos el usuario a añadir en la ACE.
    • 6: Sacamos el SID (identificador de seguridad) del usuario.
    • 7: Mediante el SID obtenemos el identificador del usuario, necesario para construir el objeto.
    • 8: Creamos un objeto de permisos de Active Directory con permisos de lectura. Podéis obtener todos los valores disponibles aquí.
    • 9: Determinamos el tipo de permiso en «permitir».
    • 10: Aplicamos la herencia de permisos a todos los objetos «descendientes».
  • 11: Mediante las propiedades definidas en el bloque anterior creamos un nuevo objeto de ACE mediante New-Object.
  • 14: Añadimos la ACE generada a la ACL que hemos obtenido en la línea 2.
  • 17: Con Set-Acl escribimos la ACL modificada en el comando anterior utilizando el parámetro -AclObject junto con el objeto modificado.

Si ahora vemos la ACL de la OU podemos ver como se ha añadido la entrada:

Añadir permisos de OU con PowerShell

A partir de aquí, si queremos añadir más permisos a la ACL únicamente tendremos que generar tantas ACE como sea preciso y añadirlas a nuestra ACL mediante Set-Acl.

El resultado final del script sería este:

# Definimos el path donde crear nuestra OU de prueba
$OuPath = 'DC=sobrebits,DC=local'

# Creamos la OU "OUTest" en la ubicación definida
New-ADOrganizationalUnit -Name 'OUTest' -Path $OuPath

# Generamos el Path completo de la OU creada
$OuPath = "OU=OUTest,$OuPath"

# Obtenemos las ACL de nuestra OU
$Acl = Get-Acl "AD:\\$OuPath"

# Rompemos la herencia preservando las ACLs heredadas
$Acl.SetAccessRuleProtection($True,$True)

# Escribimos la ACL en la OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

# Volvemos a obtener las ACLs de nuestra OU
$Acl = Get-ACL "AD:\\$OuPath"

# Recorremos las ACLs y las eliminamos una a una
ForEach ($Ace in $Acl.Access) {
        $Acl.RemoveAccessRule($Ace) | Out-Null
    }

# Escribimos la ACL de nuevo en nuestra OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

# Volvemos a obtener las ACLs de nuestra OU
$Acl = Get-ACL "AD:\\$OuPath"

# Construimos la ACE para el usuario Marc
$User = (Get-ADUser 'Marc')
$Sid = [System.Security.Principal.SecurityIdentifier]$User.Sid
$Identity = [System.Security.Principal.IdentityReference]$Sid
$Rights = [System.DirectoryServices.ActiveDirectoryRights]"GenericRead"
$Type = [System.Security.AccessControl.AccessControlType]"Allow"
$Inheritance = [System.DirectoryServices.ActiveDirectorySecurityInheritance]"All"
$Ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $Identity,$Rights,$Type,$Inheritance

# Añadimos la ACE a la ACL
$Acl.AddAccessRule($Ace)

# Escribimos la ACL de nuevo en nuestra OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

Bola extra: Copiar los permisos de una OU a otra con PowerShell

Es posible que después de este último punto hayas pensado que escribir una ACL compleja puede hacer que te quede un script extremadamente largo (algo que muchas veces se ve como algo bueno cuando no debería serlo), y razón no te falta. Un truco si vas a estar recreando los mismos permisos muchas veces es el siguiente:

  • Creas una OU y le asignas permisos que necesites a mano (no siempre hay que hacerlo todo desde la línea de comandos).
  • Haces que el script copie esos permisos en tu nueva OU.

Lo mejor de éste método es que lo puedes implementar en dos líneas:

# Obtenemos las ACL de la OU plantilla
$Acl = Get-ACL "AD:\\OU=PlantillaPermisos,DC=sobrebits,DC=local"

# Escribimos la ACL en la nueva OU
Set-Acl "AD:\\$OuPath" -AclObject $Acl

Conclusión

Mediante esta forma de asignación de permisos en OUs con PowerShell podremos automatizar un paso más en nuestros procesos de creación de usuarios, algo que puede ahorrarnos una gran cantidad de horas.

¡Espero que os sea útil!

La entrada Active Directory: Gestionar permisos de OU con PowerShell aparece primero en Sobrebits.

by Marc Meseguer at May 02, 2019 12:27 PM

May 01, 2019

RooTeando

Entrevista En Diferido 8: Jose Carlos.

Hoy comenzamos una entrevista a Jose Carlos, profesor de secundaria, usuario de OpenBSD y Python. 

Antes de todo, gracias por participar y apoyar este proyecto. La primera pregunta es una presentación por parte del entrevistado, para que los lectores te puedan conocer un poco.

Entrevista En Diferido: ¿Te podrías presentar en unas líneas?

 

Jose Carlos:   Hola a todos los suscriptores del canal. En primer lugar, agradezco a José la invitación. Me ...

May 01, 2019 09:39 PM

April 25, 2019

soyadmin.com

Instalando IIS en Windows Server en tan solo 8 pasos

Segun la Wikipedia «Internet Information Services o IIS1 es un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Originalmente era parte del Option Pack para Windows NT. Luego fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003. Windows XP Profesional incluye una versión limitada de IIS. Los servicios que ofrece son: FTP, SMTP, NNTP y HTTP/HTTPS.

Este servicio convierte a un PC en un servidor web para Internet o una intranet, es decir que en los ordenadores que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.

Se basa en varios módulos que le dan capacidad para procesar distintos tipos de páginas. Por ejemplo, Microsoft incluye los de Active Server Pages (ASP) y ASP.NET. También pueden ser incluidos los de otros fabricantes, como PHP3 o Perl.»

Una vez definido que es IIS, vamos a ver como instalarlo siguiendo estos pasos a continuación

1) Vamos al Server Manager y le damos a «Add roles and features»

2) Seleccionamos «Add roles and features» y le damos a «Next»

3) Nos mostrará el servidor por defecto y continuamos con «Next»

4) En el listado de aplicativos y servicios tildamos «Web Server (IIS)» se nos abre una nueva ventana donde nos solicita si queremos agregar las «Herramientas de administración» Tildamos en «Add Featured» y «Next»

5) Seleccionamos las funciones adicionales a instalar y damos a «Next»

6) Nuevamente damos click en Siguiente

7) Chequeamos los valores a instalar y finalmente damos click en «Install»

8) Seguimos el proceso de instalación y cuando finalizas rebooteamos.

by Mauro at April 25, 2019 11:10 AM

April 24, 2019

Sobre bits

Serverless y PS – Ejecutar PowerShell en Azure Functions

Sin duda la palabra serverless (una palabra un poco controvertida) está pegando fuerte en los últimos tiempos y parece que ha llegado para quedarse. Si bien este concepto está muy ligado a la parte del desarrollo, desde de sistemas también podemos sacarle mucho jugo. En la entrada de hoy veremos cómo ejecutar PowerShell en Azure Functions, la plataforma serverless de Microsoft.

Ejecutar PowerShell en Azure Functions

Conociendo serverless y Azure Functions

Antes de empezar con el how-to propiamente dicho creo que es importante que tengamos clara la base de todo esto.

Serverless es el «palabro» elegido por la industria para definir un servicio en el que el desarrollador se desentiende del servidor donde se ejecuta su código. En un servicio serverless el desarrollador simplemente copia su código y el proveedor de servicios es el encargado de aprovisionar la infraestructura necesaria para que éste funcione, escale y se mantenga disponible.

No me gusta particularmente la palabra serverless pues puede llevar al error de pensar que realmente no existe un «servidor» que ejecute el código. Lo que nos tiene que quedar claro es que éste no desaparece, sino que pasa a ser transparente para el usuario.

Azure Functions es el servicio serverless de Microsoft, un servicio que nos va a permitir ejecutar funciones o scripts de PowerShell en «la nube» de forma muy sencilla sin tener que desplegar un servidor para ello.

Creando la Azure Function

Ahora que ya conocemos un poco más de serverless y de las Azure Functions vamos a explorar un poco el servicio creando una función de prueba.

Accediendo a Azure

Lo primero que deberemos hacer para empezar con Azure Functions será entrar en nuestra cuenta de Azure. Si no dispones de una puedes crearla de forma gratuita desde su página web. Con tu nueva cuenta dispondrás de:

  • 12 meses de algunos servicios de forma gratuita.
  • 170€ de crédito para usar con cualquier servicio.
  • Muchos servicios de forma gratuita siempre.

En nuestro caso con Azure Functions nos valdremos de su tier gratuito, que es más que suficiente para hacer toda clase de pruebas con él.

Creando nuestra primera Azure Function App

Una vez logeados en nuestra cuenta de Azure podemos proceder a crear nuestra Azure Function App (el contenedor que hospedará nuestras funciones). Para ello nos dirigiremos a su respectivo apartado en el menú lateral izquierdo:

Function App en Azure

Posteriormente pulsaremos sobre el botón Crear Function App y rellenaremos sus campos:

Configuración de Function App

Repasemos los campos configurados:

  • Nombre de la aplicación: El nombre de la aplicación, que a su vez definirá la URL de la misma.
  • Suscripción: Seleccionar cuál de nuestros planes de suscripción utilizaremos. Como esta es una cuenta nueva utilizamos la Evaluación gratuita.
  • Grupo de recursos: Dejamos que nos genere un nuevo grupo de recursos para la aplicación (más sobre los grupos de recursos aquí).
  • OS: Seleccionamos Windows.
  • Plan de hospedaje: Dejamos marcado plan de consumo para utilizar el pago por ejecución (no vamos a pagar nada puesto que utilizaremos el tier gratuito).
  • Ubicación: Seleccionamos una ubicación cercana a nosotros.
  • Pila de tiempo de ejecución: Elegimos .NET para ejecutar PowerShell.
  • Storage: Marcamos la creación de un storage nuevo para nuestra aplicación.

Después de rellenar los campos pulsaremos sobre el botón Crear y esperaremos hasta que la aplicación se cree. Una vez creada deberíamos ver algo así en el apartado Function App:

Function App creada

Por último, antes de pasar a crear la función en si, deberemos cambiar a la versión 1 el runtime de nuestra Funcion App, puesto que la versión 2 no soporta la ejecución de PowerShell. Para ello pincharemos sobre el nombre de nuestra Function App y posteriormente en Configuración de Function App.

Configuración de Function App

Y en Versión en tiempo de ejecución marcaremos ~1.

Versión de Function App
Creando nuestra función de PowerShell en Azure Functions

Ahora que tenemos el entorno de ejecución creado y configurado podemos pasar a crear la función en si. Para ello pincharemos sobre el botón + de al lado de Funciones y posteriormente pulsaremos sobre Crear su propia función personalizada.

Crear nueva Azure Function

En Elegir una plantilla a continuación:

  • Habilitamos la Compatibilidad de lenguaje experimental para poder utilizar PowerShell. (PowerShell en Azure Functions se encuentra en estado experimental, por lo que no se deberían poner cargas críticas en éste servicio)
  • Seleccionamos HTTP trigger como modo de ejecución de nuestra función para esta prueba.
Configuración de Azure Function

En el menú de creación de la función seleccionamos PowerShell como lenguaje y le damos nombre a la función.

Configuración de Azure Function 2

Una vez finalizada la creación ya deberíamos ver nuestra flamante nueva función de prueba:

Azure Function creada

Entendiendo el script de prueba

El script de prueba que se nos proporciona nos puede ayudar a entender de una forma fácil algunas de las particularidades de la ejecución de PowerShell en Azure Functions.

Básicamente lo que hace este pequeño script será buscar un parámetro Name en nuestra petición (tanto si es GET como si es POST) y devolvernos un string con Hello $name. Vamos a examinarlo:

# POST method: $req
$requestBody = Get-Content $req -Raw | ConvertFrom-Json
$name = $requestBody.name

# GET method: each querystring parameter is its own variable
if ($req_query_name) 
{
    $name = $req_query_name 
}

Out-File -Encoding Ascii -FilePath $res -inputObject "Hello $name"
  • Líneas 1-3: Parte del script orientada a peticiones POST.
    • 2: Obtenemos el cuerpo de la petición contenido en la variable $req y lo convertimos de json a un objeto. En Azure Functions el cuerpo de la petición POST siempre vendrá contenido en esta variable.
    • 3: Obtenemos la propiedad name de la petición.
  • Líneas 5-9: Parte del script orientada a peticiones GET.
    • 6: Determinamos si existe la variable $req_query_name.
      • En Azure Functions las propiedades que pasemos mediante GET generan una variable automática $req_query_nombrepropiedad. Esto quiere decir que si lanzamos una query con una propiedad «blog» ésta será accesible en nuestro script con $req_query_blog.
    • 8: De existir la variable la almacenamos en $name para posteriormente devolverla en nuestra string.
  • Línea 11: Devolvemos nuestra string añadiendo su contenido al archivo de salida ubicado en la ruta de la variable $res.
    • En Azure Functions $res es una variable especial que apunta al archivo utilizado para la salida de nuestra función.

Todo esto puede parecer muchas cosas a tener en cuenta pero básicamente hablamos de 3:

  • Si queremos procesar solicitudes POST nos valdremos de $req para obtener los parámetros.
  • En caso de querer procesar solicitudes GET nos valdremos de $req_query_nombredelparametro para obtener el parámetro.
  • Siempre devolveremos el resultado de nuestro script mediante $res.

Ejecutando PowerShell en Azure Functions

Por último, ahora que ya tenemos nuestra Function App y nuestra función de PowerShell podemos probarla. Para ello nos valdremos de Invoke-RestMethod, el cmdlet de referencia para interactuar con APIs REST desde PowerShell.

El primer paso será obtener la URI completa desde la que invocar nuestra función. Desde la vista de nuestra función pulsaremos sobre </> Obtener la dirección URL de la función:

URI de la función

Una vez copiada lo primero que haremos será guardarla en una variable:

$Funcion = "https://sobrebitstest.azurewebsites.net/api/PSSobrebits?code=dKFWt5Ew..."

Y ahora vamos a hacer algunas consultas sobre ella:

Invocar script de PowerShell en Azure Functions

Repasemos el resultado de los comandos:

  • En la primera ejecución no añadimos a la URI ningún parámetro, con lo que nuestro script no puede concatenar ningún nombre a «Hello».
  • En la segunda ejecución añadimos un nombre a la petición añadiéndolo a la URI y, esta vez sí, se concatena a «Hello».
  • En la tercera ejecución vemos como para este script el funcionamiento es el mismo tanto con POST como con GET.

Resumen

En la entrada de hoy hemos podido ver como sin desplegar ningún tipo de servidor tenemos código de PowerShell ejecutándose bajo demanda en Azure. Los usos que le podemos dar son muchos y en próximas entradas espero traeros alguno.

Os invito a que exploréis esta forma de ejecutar PowerShell puesto que abre un abanico inmenso de posibilidades y, sin duda, es una forma sencilla de acercarnos al serverless desde una tecnología que todos conocemos.

¡Nos leemos pronto!

La entrada Serverless y PS – Ejecutar PowerShell en Azure Functions aparece primero en Sobrebits.

by Marc Meseguer at April 24, 2019 01:05 PM

April 23, 2019

soyadmin.com

Variety Wallpaper Changer una aplicación para personalizar nuestro Escritorio Linux

Variety es una aplicación Linux, que nos permite personalizar nuestro fondo de escritorio de una manera sencilla y fácil, permitiendo rotar nuestro Wallpapper automáticamente.
Esta herramienta funciona en casi todas las distribuciones y entornos de escritorio KDE, LXDE, XFCE, Unity, GNOME Shell, Cinnamon y Pantheon.

La aplicación descarga y muestra un nuevo fondo de escritorio automáticamente desde múltiples sitios aleatorios: Wallbase.cc, Flickr, Wallpapers.net, Desktoppr.co, además de otros sitios en los que se puedan publicar medios a través de sindicación de contenidos (RSS) como deviantART, SmugMug y Picasa.

Variety es una aplicación creada por Peter Levi, versión tras versión va agregando y anexando nuevas fuentes de imágenes, efectos, opciones y hasta la posibilidad de compartir la imagen de nuestro fondo en Facebook.

Aunque algunos dirán que no es una molestia buscar e instalar su propia imagen de fondo de pantalla, con Variety tenemos la posibilidad de cambiar automáticamente el fondo según los minutos que deseemos, añadirles efectos visuales (sepia, escala de grises, desenfoque, pixelado, blur, etc) y hasta utilizar la imagen de la NASA Astronomy Picture of the Day y World Sunlight Map, que forman un live wallpaper de la tierra que cambia dependiendo de la hora del día.

Variety descarga el wallpaper a una carpeta temporal de nuestra PC, permitiendo que nos quedemos permanentemente con esa imagen.

Personalmente una aplicación que cumple lo que promete y nos permite tener un fondo de escritorio muy llamativo, recomendado para aquellos que no se deciden por que fondo utilizar y para aquellos que les gusta tener una visual distinta cada cierto tiempo o cada vez que encendemos nuestra PC.

Como se instala:
– Debian, Ubuntu y derivados

# sudo add-apt-repository ppa:peterlevi/ppa
# sudo apt-get update
# sudo apt-get install variety

– Arch Linux

# sudo pacman -S variety

by Mauro at April 23, 2019 12:06 PM

April 22, 2019

soyadmin.com

DUFF un comando para detectar archivos duplicados en nuestro sistema

Me considero un acumulador de información digital, archivos, fotos, imágenes, programas, etc., cuando los HD’s se empiezan a llenar hay que buscar alternativas de limpieza. Un buen método es buscar y eliminar archivos duplicados y de esa manera hacer valioso espacio.

En linux existe una herramienta que nos salva en este caso, con duff podremos buscar y eliminar archivos duplicados, sean los que fueran.  El funcionamiento es sencillo indicamos la carpeta a explorar para hacer un escaneo y luego podemos también indicarle que elimine uno de esos 2 archivos.

Como se instala Debian, ubuntu y derivados:

# sudo apt-get install duff

El procedimiento para buscar archivos duplicados es:

# duff -r /ruta-al-direcorio

El resultado sería algo parecido a esto:

2 files in cluster 160 (1202745 bytes, digest 117c6a8b4a15dab31a74a08dbcdafa482540ca86)
/home/mauro/Dropbox/Fotos/Cargas de cámara/2014-07-30 23.06.07.jpg
/home/mauro/Dropbox/Fotos/Imágenes/2014-07-30 23.06.07.jpg
2 files in cluster 161 (1339971 bytes, digest f6d8136fe563c140c2078d9bb43c897dab8188eb)
/home/mauro/Dropbox/Fotos/Cargas de cámara/2014-07-11 00.36.14.jpg
/home/mauro/Dropbox/Fotos/Imágenes/2014-07-11 00.36.14.jpg

El resultado muestra que existen muchos archivos duplicados, en este caso imágenes las cuales podemos luego eliminar con este otro comando:

# duff -e0 -r /ruta-al-direcorio | xargs -0 rm

Este comando es crítico, deben tener en cuenta que esto hace un escaneo y eliminación de archivos sin consultar o sin evaluar que archivos son, por eso mismo se debe tener mucho cuidado.
Lo mejor siempre es verificar la salida del primer escaneo, ver si hay algún archivo importante y en caso de ser solo duplicados sin utilidad eliminarlos definitivamente.

Para ver otras combinaciones de nuestro duff podremos ver su manual

# man duff

by Mauro at April 22, 2019 09:06 PM

Libro: Seguridad en Dispositivos Móviles de Marc Domingo Prieto

Título: SEGURIDAD EN DISPOSITIVOS MÓVILES
Autor:
Marc Domingo Prieto
Páginas: 46 Páginas
Tamaño: 1 MB
Fomato: PDF

Contenido:

La seguridad en dispositivos móviles se ha convertido en un asunto muy importante debido al incremento de «ataques» recibidos y a las consecuencias que estos tienen. Los ataques vienen incentivados por la popularización de los dispositivos móviles, el aumento de información personal y confidencial que almacenan y las operaciones realizadas a través de ellos, como por ejemplo las bancarias.

Los dispositivos móviles están formados por un conjunto de componentes de hardware capaces de soportar una gran variedad de tecnologías inalámbricas (GSM, UMTS, Wifi, Bluetooth, etc.), donde destaca uno o varios procesadores de altas prestaciones que permiten ejecutar un sistema operativo muy complejo y un gran número de aplicaciones que requieren una gran capacidad de cálculo. Todo ello incrementa significativamente las distintas vulnerabilidades a las que están expuestos este tipo de dispositivos.

Un hardware más potente implica que pueden ser tratados más datos (normalmente personales), tanto los que se almacenan en la memoria de los dispositivos móviles como los que se reciben por los diferentes sensores que estos incorporan. Además, el hecho de soportar una gran variedad de tecnologías inalámbricas abre más vías de ataque.

by Mauro at April 22, 2019 11:42 AM

April 17, 2019

soyadmin.com

ttyrec: Comando para grabar sesiones en la Consola

Existe un método mediante el cual podremos grabar la sesión completa de nuestra consola, de manera que podamos luego reproducir lo que hicimos en el lapso de tiempo.
Esto está genial para poder guardar sesiones de alguien que vino a ayudarnos, o para realizar tutoriales de ciertas cuestiones difíciles de explicar.

Bueno el comando que usaremos será ttyrec, el cual está disponible en casi todos los repos oficiales de las principaless distros.

En Debian Ubuntu y derivados:

# apt-get install ttyrec

Como Grabamos?:

# ttyrec -a nombre.tty
Finalizamos la grabación con Control + c

Como reproducimos estos ficheros?:

# ttyplay nombre.tty

Yapa: Como convertir tty a gif?

Para esto es necesario installar ttygif

# apt-get install imagemagick gcc git
# git clone https://github.com/icholy/ttygif.git
# cd ttygif
# make

Para transformar nuestro archivo:

Lo recomendable es mover el archivo .tty a una carpeta donde no haya otras cosas.
# ./ttygif nombre.tty
# ./concat.sh final.gif

by Mauro at April 17, 2019 11:29 AM

April 16, 2019

soyadmin.com

¿Como listar usuarios de Mysql desde la consola?

Mysql almacena los usuarios y los nombres de las DB de usuarios en una base general, digamos en la base de datos principal del servidor. Además de esto, en esa misma DB de guardan los privilegios y permisos de los usuarios, lo que le permite a mysql aceptar o denegar el acceso a las conexiones entrantes.

Para listar los usuarios de nuestras bases de datos y recabar más información al respecto lo que se hace es filtrar la base de datos general del servidor y lograr tener los usuarios y las bd de clientes a disposición.

Lo primero es ingresar al servidor mysql:

# mysql
mysql> select User from mysql.user;
+------------------+
| User             |
+------------------+
| admin_blog       |
| basemuestra      |
| control_back     |
| control2_back    |
| duen_resel       |
| elaster2         |
| furius_mount     |
| nose_otrouser    |
| user_wordpress   |
| wp_user          |
+------------------+
10 rows in set (0.00 sec)

También podemos filtrar para enlazar estos usuarios hacia la base de datos a la que poseen permisos o privilegios de acceso.

mysql> select u.User,Db from mysql.user u,mysql.db d where u.User=d.User;
+------------------+----------------+
| User             | Db             |
+------------------+----------------+
| admin_blog       | prueba         |
| basemuestra      | labdmodesta    |
| basemuestra      | labdtest       |
| control_back     | backups        |
| control2_back    | control2       |
| duen_resel       | test           |
| elaster2         | elaster_joom   |
| furius_mount     | furius_wp      |
| nose_otrouser    | tester         |
| nose_otrouser    | tester2        |
| user_wordpress   | user_db        |
| user_wordpress   | user_wp        |
| user_wordpress   | user_wp2       |
| wp_user          | wp_db          |
+------------------+----------------+
10 rows in set (0.00 sec)

by Mauro at April 16, 2019 10:55 PM

Libro: Fundamentos de Programación (C y Java)

Título: FUNDAMENTOS DE LA PROGRAMACIÓN (C y Java)
Autor:
Administración de Sistemas Informáticos
Páginas: 260 Páginas
Tamaño: 2.2 MB
Fomato: PDF

Contenido:

En este trabajo se recogen los Apuntes de Fundamentos de Programación Primer Curso del Ciclo de Grado Superior de ASI (Administración de Sistemas Informáticos).

La relación de temas tratados en este libro es la siguiente:
Tema I:
se introducen los conceptos de algoritmo, programa, ordenador,.. Se explica el funcionamiento y componentes básicos del ordenador, la codificación y operaciones con números binarios y el proceso de creación de aplicaciones y programas así como los distintos tipos de lenguajes y técnicas de programación.

Tema II: las fases de análisis y diseño del ciclo de vida. Introducción a los diagramas de flujo, pseudocódigo y UML.

Tema III: se explica el origen, estructura y funcionamiento básico de Java. Se cubren cuestiones sobre variables, tipos de datos operadores y el uso de la clase Math. Incluye dos apéndices en los que se explica la configuración y funcionamiento básico de Eclipse y Netbeans.

Tema IV: uso de las instrucciones if, switch, while y for, para crear estructuras de control de flujo.

Tema V: uso de las estructuras fundamentales de datos. En concreto el uso de Arrays y de Strings (textos); incluidos los métos de la clase String que facilitan la manipulación de textos. También se explica el envío de parámetros desde la consola del sistema (argumentos del sistema).

Tema VI: bases de la programación orientada a objetos en Java. Clases, objetos, atributos, métodos constructores. Clases estáticas. Métodos finalize,…

Tema VII: segunda parte de las cuestiones relativas a Programación Orientada a Objetos. Se explican cuestiones sobre asociaciones entre clases, agregación, composición y herencia. Incluye los conceptos más críticos sobre POO: casting de clases, clases abstractas, modificador final, clases internas, interfaces, y el uso e importancia de la clase Object.

Tema VIII: control de errores. Excepciones.

by Mauro at April 16, 2019 01:39 PM

April 15, 2019

soyadmin.com

Currports, app para verificar que puertos se usan en nuestro equipo

CurrPorts es un aplicativo para Windows que nos permite verificar que puertos se están utilizando en nuestra PC y detallarnos que software o programa usa cada uno de estos puertos y una detallada información en nuestra máquina.

Este programa nos sirve como monitor Tcp/IP, listando todos los puertos en uso en ese instante, además de darnos detalles del software que usa ese puerto, tipo de protocolo, número de puerto, dirección ip, nombre del host remoto, etc.

Esto nos puede servir para identificar problemas de consumo de ancho de banda, un posible caso de virus o troyanos, al identificar un puerto extraño abierto se puede explorar y verificar si es necesario que este abierto o verificar que sea utilizado como backdoor de algún troyano o virus. Esta página muestra los puertos normalmente utilizados por troyanos o virus.

Además y algo muy interesante de este aplicativo es que nos permite cerrar conexiones TCP no deseadas, matar el proceso que abrió los puertos, y guardar toda esta información en un archivo HTML, archivo XML o txt.
CurrPorts también marcará con el color rosa aquellos puertos sospechosos o que están siendo usados por aplicaciones no identificadas.

CurrPorts puede ser descargado desde aquí

by Mauro at April 15, 2019 10:23 PM

April 12, 2019

soyadmin.com

Solución a: Thunderbird no elimina correos.

Un curioso error se presentó en una de las PC de la empresa, un user me indicaba que su thunderbird no le permitía eliminar correos. Entre mi pensaba que estaba realizando algo mal y me dirigí a su escritorio ya pensando que sería algo realmente sencillo de solucionar.

Para mi sorpresa, tal cual lo había comentado el usuario, cuando uno tocaba un correo y la tecla delete no pasaba nada, tampoco si le daba click derecho sobre el email y eliminar y tampoco hacía nada si dábamos click al botón de eliminar que aparece al abrir el correo.

La cosa se fue complicando aún más al verificar que dentro de la cuenta configurada no aparecía la Papelera. Donde se había ido!!!!??? Comprendí entonces que no se eliminaban los correos porque el problema estaba en la papelera o trash de esa cuenta.

La única manera que podía eliminar correos era hacer un «Mover a» Carpeta local – Papelera, ahí si me dejaba procesarlo y eliminarlo. Ya sabiendo que el problema venía por un error en la carpeta trash, me fui al sistema de carpetas de las cuentas, para eso vamos a la ayuda del Thunderbird:

Allí se nos abrirá una sección de ayudas e información de thunderbird donde podremos abrir la carpeta del perfil, haciendo click en Mostrar carpeta:

En la carpeta que se nos abre vamos a «Mail» y allí nos aparecerán las carpetas de cada una de las cuentas que tengamos configuradas en el thunderbird, al ingresar al correo, verifique que no existía una carpeta trash ni el archivo trash.msf que normalmente se encargan de deborarse los emails.

Como sabía que la papelera de la carpeta local era funcional procedi a copiar ambos archivos Trash y Trash.msf desde la carpeta local a la cuenta personal del usuario (esto debe hacerse con el thunderbird cerrado)

Y GUALA! reiniciando el Thunderbird pudimos ver que permitía eliminar correos correctamente.

by Mauro at April 12, 2019 03:49 PM

¿Como hacer que el GRUB recuerde el último SO ingresado?

El GRUB es nuestro gestor de arranque en Linux, nos permite seleccionar a que Sistema Operativo queremos ingresar o entrar. Esto es una especie de menú donde se listan todos los SO que tenemos instalados en la pc.
Cada vez que prendemos nuestra máquina el GRUB tiene un orden predefinido y arrancará aquel SO en primer puesto, pasados unos segundos.

Existe una manera de que el GRUB recuerde que SO elegimos en la anterior sesión y automáticamente ingrese a ese. Esto nos facilita el acceso y si ingresamos constantemente a nuestro sistema favorito no tengamos que estar al pendiente de seleccionarlo cada vez que entremos a la pc.

El proceso es sencillo:
1)
Primero backupeamos nuestro GRUB:

# sudo cp /etc/default/grub ~/grub.bak

2) Editamos la configuración de nuestro GRUB

# sudo nano /etc/default/grub

Editamos la linea:

GRUB_DEFAULT=saved

Al reemplazar el valor default por saved activamos el GRUB_SAVEDEFAULT que recordará nuestro sistema operativo elegido anteriormente.
Luego agregamos esta linea:

GRUB_SAVEDEFAULT=true

Aqui le indicamos que elija automáticamente el valor que guardo GRUB_SAVEDEFAULT

3) Terminamos aplicando la configuración realizada

# sudo update-grub

Si tenemos instalado el GRUB2 el proceso es exactamente el mismo:
Editamos el archivo de configuración

sudo nano /boot/grub2/grub.cfg

by Mauro at April 12, 2019 03:30 PM

RooTeando

Tomando Un Café 57: SparkleShare,almacenar y compartir archivos mediante repositorios Git.

Nuevo audio donde hablo sobre mis primeras impresiones con esta aplicación, como la instalación,configuración y uso. 

Artículo sobre como instalar y configurar SparkleShare
https://opensource.com/article/19/4/file-sharing-git

Servicio de gestión de repositorio Git, NotaBug, utiliza Gogs.
https://notabug.org/

Artículo sobre como administrar ficheros multimedia en Git utilizando Git-Portal
https://opensource.com/article/19/4/manage-multimedia-files-git

Extensión de Git para archivos grandes.
GLFS  https://git-lfs.github.com/
 

  ...

April 12, 2019 09:48 AM

April 11, 2019

soyadmin.com

LOCATE, buscando archivos en Linux

Locate es un comando básico que nos permite localizar archivos en Linux, funciona mediante una base de datos que se genera mediante todos los archivos del sistema. Funciona mucho más rápido que Find comando también utilizado en la búsqueda de archivos.

El funcionamiento es sencillo mediante patrones de nombres compara y busca en la base de datos que es generada automáticamente por el sistema, la cual se actualiza automáticamente mediante el cron o con el comando updatedb.

Para instalar en CentOS Rhel y Fedora:

# yum install rlocate

Para instalar en Debian, Ubuntu y Derivados:

# sudo apt-get install mlocate

Para utilizarlo, directamente colocamos:

# locate nombre_a_buscar

by Mauro at April 11, 2019 11:34 AM

April 10, 2019

soyadmin.com

Inxi, el comando Linux que nos dirá todo sobre nuestro Hardware

Inxi es un script o aplicación que nos brindará muchísima información sobre nuestro equipo, más referentemente al Hardware. Seguramente les habrá pasado que en algún momento necesitemos saber o conocer el procesador o la placa madre de nuestro server, hasta la controladora de salida de nuestra placa de red, etc.
Con Inxi podemos tener esos datos y más sobre el hardware que compone nuestra PC o Servidor.

Para Ejecutarlo tenemos varias maneras, dependiendo de lo que necesitemos conocer en nuestro sistema de hardware:

Un resumen del sistema:

# inxi

Motherboard:

# inxi -M

CPU o Procesador:

# inxi -C

RED

# inxi -N

Particiones

# inxi -l

Toda la info de nuestro equipo

# inxi -v7

Aparte de estos ejemplos podemos concatenarlos con:
-A Información de la tarjeta de sonido.
-C Información del CPU, incluyendo la velocidad de reloj del CPU.
-D Información del disco duro, no sólo el modelo.
-F Salida completa para inxi. Incluye todas las letras en mayúscula, además de -s y -n.
-G Información de la tarjeta gráfica (tarjeta, tipo, resolución, procesador glx, versión, etc.).
-I Información general: procesos activos, tiempo de actividad, memoria, cliente de IRC, versión inxi.
-l Particiones.
-n Información avanzada de la tarjeta de red. Igual que -Nn. Muestra la interfaz, velocidad, dirección MAC, estado, etc.
-N Información de la tarjeta de red. Con -x, muestra PCI BusID, número de puerto.

by Mauro at April 10, 2019 07:50 PM

RooTeando

Tomando Un Café 56: Telegram NO ES una aplicación de mensajería

Nuevo audio que he grabado de un "calenton" debido a un artículo que comparaban Telegram vs WhatsApp, en xatakandroid. Para explicar porque Telegram no es solo una aplicación de mensajería.

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython @EntrevistaEnDiferido
Podcast @RadioDev  @ARMparaTODOS @TomandoUnCafe

Grupos de Telegram
Alternativas a la Raspberry
https://t.me/AlternativasRaspberry

Twitter
Tomando Un Café https://twitter.com/Tomando_Un_Cafe
RadioDev https://twitter.com/RadioDevPodcast
Un Día Una Aplicación https://twitter.com/UnDiaUnaApp
Un ...

April 10, 2019 09:21 AM

April 09, 2019

soyadmin.com

Hablemos de SPAM en cPanel (Medidas básicas para detenerlo)

El spam es una de las amenazas a la que cualquier sysadmin esta combatiendo día a día y minuto a minuto. Una sola cuenta de correos de cualquiera de los clientes que posea el servidor que haga SPAM puede desencadenar una serie de problemas (algunos muy graves en nuestro servidor)

El SPAM produce:
– Pérdida de calidad en el servicio.
– Posible pérdida de correos electrónicos.
– Listado de IP del servidor en listas negras de spam.
– Embotellamiento o tráfico desmedido.
– Etc etc.

Un servidor sin configurar o con escasas medidas de seguridad puede ser vulnerado y terminar sin servicio de correos a causa de este problema de SPAM.

Detallaremos las acciones mínimas que todo Sysadmin debe tomar en su servidor Linux con cPanel, la mayoría estan presentes en Tweak Setings o dentro de la configuración de Exim.

1) Count mailman deliveries towards a domain’s Max hourly emails
Los correos enviados desde mailman en las listas de distribución se contabilizarán como enviados por el usuario.

2) Prefix “mail.” onto Mailman URLs
Los correos que se manden desde mailman tendrán el prejifo “mailman” en los logs. Para rastrear envíos desde la consola.

3) Max hourly emails
Coloca un máximo de correos por hora para cada dominio.

4) SpamAssassin spam filter
Software y filtro antispam, sencillo útil y efectivo.

5) Maximum percentage of failed or deferred messages a domain may send per hour
Si los emails que envia un cliente vienen rebotados en su mayoría se suspende el servicio temporalmente para el cliente/sitio que realiza el envío. Cada vez que se envia spam a una base de datos contratada la gran mayoría de correos exitentes posiblemente no exista entonces habrá muchisimos mails rebotados. Esta opción en un 35% será muy eficaz.

6) Utilizar RBL’s
Las RBL’s son entidades que regulan el tráfico de correos bloqueando servidores que envían spam. Si un dominio/ip esta listado en las RBL no se reciben/enviarán los correos.

Tenemos 2 RBL’s para activar en la sección RBLs:

RBL: bl.spamcop.net
RBL: zen.spamhaus.org

7) Query Apache server status to determine the sender of email sent from processes running as nobody
Si no tienen compilado Apache con MailHeaders cPanel consultará el servidor web con el fin de determinar el remitente.
Esto consumirá más recursos que utilizar las cabeceras X-PHP-Script

8) Trust X-PHP-Script headers to determine the sender of email sent from processes running as nobody
Si tenemos MailHeaders en uso (compilado a través de EasyApache) se utilizará X-PHP-Script para determinar el servidor remitente.

Esto es a nivel servidor/admin, más adelante dejaremos algunos tips para los usuarios, referentes a las medidas a tomar si eres dueño de un sitio.

by Mauro at April 09, 2019 11:07 PM

CloudAdmins.org

Barcelona OpenNebula TechDay – May 8, 2019

OpenNebula TechDay - Barcelona, Spain

https://www2.eventsxd.com/event/9187/opennebulatechdaybarcelonaspain/sessions

OPENNEBULA TECHDAY – BARCELONA

MAY 08, 2019 • BARCELONA

 

Containers 2.0 and beyond (LXD, RANCHER, KUBERNETES, UNIKERNELS,…)  

https://www2.eventsxd.com/event/9187/opennebulatechdaybarcelonaspain/sessions

SCHEDULE

OPENNEBULA WELCOME

Wednesday, May 08 – 10:00AM to 10:20AM
Michael Abdou

OPENNEBULA LXD CONTAINER SUPPORT OVERVIEW

Wednesday, May 08 – 10:20AM to 10:40AM

HUAWEI – A LOOK AT DISRUPTIVE TECHNOLOGIES AND WHAT’S TO COME

Wednesday, May 08 – 10:40AM to 11:00AM
Daniel Justicia

RANCHER LABS – YOUR OWN PAAS IN ACTION

Wednesday, May 08 – 11:30AM to 11:50AM
Raúl Sánchez

UDL – OPENNEBULA AND RESEARCH ENVIRONMENTS

Wednesday, May 08 – 11:50AM to 12:10PM
Ivan Teixido

ITHINKUPC – OPENNEBULA AND AWS

Wednesday, May 08 – 12:10PM to 12:30PM

CSUC – UNICORE PROJECT: UNIKERNEL POWER

Wednesday, May 08 – 12:30PM to 01:00PM
Jordi Guijarro

LUNCH

Wednesday, May 08 – 01:00PM to 02:00PM

OPENNEBULA HANDS-ON TUTORIAL

Wednesday, May 08 – 02:00PM to 05:00PM

This hands-on tutorial will give an overview of how OpenNebula is used to build and operate private clouds. The attendees will build, configure and operate their own OpenNebula cloud.

 

Register here -> https://www2.eventsxd.com/event/9187/opennebulatechdaybarcelonaspain/

by Cloudadmin JordiGuijarro at April 09, 2019 05:20 PM

April 08, 2019

RooTeando

Entrevista En Diferido 7: Ernesto(Elav).

Empezamos una nueva entrevista, el entrevistado es Ernesto ,alias Elav, podcaster, blogero,youtuber, linuxero y amante de la tecnología en general. 

 

Entrevista En Diferido: Antes de todo, gracias por participar y apoyar este proyecto. La primera pregunta es una presentación por parte del invitado, para que los lectores te puedan conocer un poco.

¿Te podrías presentar en unas líneas?

 

Ernesto: Hola José, y un saludo a todos los miembros del ...

April 08, 2019 06:10 AM