Planeta Sysadmin

de sysadmins para sysadmins

June 12, 2018

Sobre bits

Introducción a los módulos de PowerShell

Muchas veces la gente que programamos tenemos tendencia a reinventar la rueda y escribir código que ya ha sido escrito por otro y, en muchos casos, incluso acabamos reescribiendo código escrito por nosotros mismos. En esta entrada veremos el funcionamiento de los módulos de PowerShell, con los que obtendremos piezas de código reutilizables y fácilmente distribuibles con los que podremos evitar que esto ocurra. ¡Veamos como funcionan!

¿Qué es un módulo de PowerShell?

Básicamente un módulo es un paquete que contiene comandos de PowerShell. La gran gracia de los módulos de PowerShell es que nos permiten, por un lado, empaquetar distintos comandos para organizarlos, usarlos y distribuirlos, y por el otro, obtener comandos desarrollados por terceros y utilizarlos de forma muy sencilla.

Una vez tenemos un módulo importado en nuestra sesión de PowerShell podremos utilizar los comandos que éste contiene como si de un comando nativo se tratara.

¿Cómo trabajar con módulos de PowerShell?

PowerShell incorpora una serie de cmdlets relacionados con los módulos con los que podremos interactuar con los mismos.

Comandos sobre módulos de PowerShell

Demos un repaso a las operaciones básicas que podremos utilizar.

Importar módulos

Lo primero que debemos hacer si queremos trabajar con módulos ya escritos es importarlos. Una vez importados podremos utilizar los comandos que éstos contienen de forma totalmente transparente. Podemos importar módulos:

  • De forma automática (a partir de PowerShell versión 3.0) ubicándolos en una carpeta que forme parte de nuestro path de módulos. Al hacerlo de este modo el módulo se importará la primera vez que ejecutemos un comando del mismo en la sesión actual.
    • Podemos consultar  y modificar el path de módulos con la variable de entorno $env:PSModulePath.
    • Podemos desactivar este comportamiento modificando la variable $PSModuleAutoloadingPreference.

Path de módulos de PowerShell

  • Utilizando el cmdlet Import-Module pasando como parámetro la ruta de nuestro módulo de PowerShell.

Importar módulos de PowerShell

Consultar módulos cargados y disponibles

Si queremos consultar los módulos de PowerShell cargados en nuestra sesión o queremos listar los disponibles dentro de las distintas ubicaciones de nuestro path de módulos deberemos valernos del cmdlet Get-Module:

  • Con su comportamiento por defecto Get-Module lista los módulos cargados en nuestra sesión.

Listar módulos de PowerShell con Get-Module

  • Si añadimos al comando el parámetro -ListAvailable éste nos devolverá una lista con todos los módulos disponibles para su carga clasificado según la ubicación de los mismos dentro de nuestro path.

Listar módulos disponibles con Get-Module

Ambos comportamientos del cmdlet, como se aprecia en las capturas, nos muestran los comandos disponibles dentro de dicho módulo.

Quitar un módulo de PowerShell ya cargado en nuestra sesión

Como seguro que se puede intuir gracias a la coherencia de los verbos de PowerShell podemos apoyarnos del cmdlet Remove-Module para quitar un módulo previamente cargado. Esta opción puede sernos muy útil si queremos cargar, por ejemplo, una nueva versión de un módulo que ya teníamos cargado.

¿Dónde encuentro módulos de PowerShell?

Existen varios sitios desde los que descargar módulos:

  • Repositorios públicos de módulos como PowerShell Gallery o PSGet.
  • Repositorios de código como GitHub.
  • Webs de fabricantes que decidan integrar PowerShell en sus soluciones.
  • Blogs técnicos en los que se publique código como este :-).

Siguientes pasos

Con esta introducción hecha ya estamos listos para descargar código, inspeccionarlo (una de las mejores formas de aprender) y utilizarlo. En futuras entradas veremos cómo crear nuestros propios módulos.

La entrada Introducción a los módulos de PowerShell aparece primero en Sobrebits.

by Marc Meseguer at June 12, 2018 04:00 PM

soyadmin.com

Windows: Exportar la configuración y conexiones de PuTTy

PuTTY es un emulador de terminal, un programa que permite conectar con máquinas remotas y ejecutar programas a distancia. PuTTY se conecta como cliente a múltiples protocolos, como SSH, Telnet o Rlogin.

La ventana principal de PuTTY es la de configuración, que contiene un completo árbol de opciones. Las básicas están en el primer apartado, Session: introduce allí la dirección del servidor, el puerto y el tipo de conexión. Luego, haz clic en Open para establecer la conexión.

Una de las caracteríscas o funciones que posee PuTTy es la posibilidad de recordar o mantener un registro de las conexiones realizadas, donde sólo con un click estaríamos ingresando a nuestra conexión remota.

Para aquellos que poseemos muchisimos servidores o conexiones, el hecho de tener que reingresar todas las conexiones debido a que cambiamos de pc o formateamos, es un dolor de cabeza para muchos.(Como casi lo fue para mi)

Por suerte blogueando por ahi, encontre una manera sencilla de realizar un backup y restore de la configuración de puTTy.

1) Debemos ingresar a nuestro registro
Vamos a Inicio – Ejecutar
Escribimos regedit y le damos aceptar.

2) Una vez dentro del registro de Windows, vamos a buscar la cadena de puTTy

HKEY_CURRENT_USER
Software
SimonTatham
Putty

Alli hacemos click derecho en dicho registro y lo exportamos, lo cual nos generará un archivo .reg.

Este archivo .reg es el que restauraremos en la nueva PC. Teniendo ya instalado PuTTy simplemente le hacemos doble click para que restaure.

by Mauro at June 12, 2018 01:44 PM

June 11, 2018

soyadmin.com

Libro: Seguridad en UNIX y Redes de Antonio Huerta

 

 

Título: SEGURIDAD EN UNIX Y REDES
Autor: Antonio Huerta
Año: 2002
Páginas: 503 páginas
Tamaño: 2.5 MB
Fomato: PDF

 

 

 

Contenido:

El mundo de la seguridad informática es demasiado amplio y complejo como para ser tratado exhaustivamente en ningún trabajo, mucho menos en uno tan simple como este; aquí únicamente he intentado resumir una visión global de diferentes aspectos relacionados con la seguridad, especialmente con Unix y redes de computadores (estas últimas tan de moda hoy en día… Unix, por desgracia, no tanto). Este trabajo está casi completamente extraído de mi proyecto final de carrera, que estudiaba la seguridad en los sistemas Unix y la red de la Universidad Politécnica de Valencia (UPV), de forma que si aparece alguna referencia a “nuestra red” o “nuestros equipos” (aunque he intentado eliminar todos los ejemplos y comentarios relativos a UPV, por motivos obvios) ya sabemos de qué se trata.

A lo largo de este trabajo se va a intentar hacer un repaso de los puntos habituales referentes a seguridad en Unix y redes de computadores (problemas, ataques, defensas…), aplicando el estudio a entornos con requisitos de seguridad medios (universidades, empresas, proveedores de acceso a Internet…); de esta forma se ofrecerá una perspectiva general de la seguridad en entornos Unix, el funcionamiento de sus mecanismos, y su correcta utilización. También se hablará, en menor medida, sobre temas menos técnicos pero que también afectan directamente a la seguridad informática, como puedan ser el problema del personal o la legislación vigente.

El objetivo final de este proyecto sería marcar unas pautas para conseguir un nivel de seguridad aceptable en los sistemas Unix conectados en cualquier red, entendiendo por ‘aceptable’ un nivel de protección suficiente para que la mayoría de potenciales intrusos interesados en los equipos de nuestra organización fracasara ante un ataque contra los mismos. Obviamente, es imposible garantizar una plena seguridad ante cualquier atacante: seguramente un pirata experimentado, con el tiempo suficiente, pagado, o simplemente muy interesado en uno de nuestros equipos, no tendría muchos problemas en acceder a él. Este hecho, aunque preocupante, es casi inevitable; lo evitable es que cualquier persona sea capaz de atacar con éxito un equipo simplemente por haber visto una película, descargado un par de páginas web y ejecutado un programa que ni ha hecho ni entiende.

 

by Mauro at June 11, 2018 11:37 PM

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

Título: EL SOFTWARE LIBRE EN EL SECTOR PÚBLICO
Autor: David Megias
Año: 2010
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 June 11, 2018 10:59 PM

Libro: Utilidades y herramientas de Software Libre de Jesus Carrius

 

Título: UTILIDADES Y HERRAMIENTAS DE SOFTWARE LIBRE
Autor: Jesis Carrois
Año: 2007
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 June 11, 2018 10:41 PM

Huawei prepara un procesador Kirin 710 para competir con Qualcomm

El Snapdragon 710 se ha convertido en uno de los SoCs más interesantes dentro de lo que podemos considerar gama media-alta. Esperamos que goce de una buena acogida entre los principales vendedores de smartphones, aunque Huawei apostará por seguir utilizando soluciones propias y el Kirin 710 será su respuesta al nuevo chip de Qualcomm.

Los que nos leéis a diario sabéis que Huawei ha dejado de utilizar casi por completo los SoCs de empresas como Qualcomm y MediaTek para montar sus soluciones Kirin, que son desarrolladas por HiSilicon y fabricadas por la empresa TSMC.

Su aventura le ha salido bastante bien, ya que soluciones como el Kirin 970 han demostrado que no tienen nada que envidiar a los SoCs tope de gama de Qualcomm, ya demás han conseguido innovar y marcar el camino a seguir gracias a la introducción de la NPU (unidad de procesamiento neural para inteligencia artificial).

Con el Kirin 710 veremos una evolución del concepto que introdujeron al lanzar el Kirin 970, ya que dicho SoC vendrá acompañado de una unidad de procesamiento neural de nueva generación, algo de lo que el Snapdragon 710 carece. Esto quiere decir que la solución de Huawei estará mejor preparada para trabajar con sistemas de inteligencia artificial, y que su rendimiento final podría ser muy superior al del chip de Qualcomm.

Por lo que respecta al resto de especificaciones (procesador y GPU) esperamos que utilice una CPU de ocho núcleos divididos en dos bloques, uno de alto rendimiento bajo la arquitectura Cortex-A75 y otro de bajo consumo basado en la arquitectura Cortex-A55. No tenemos detalles sobre la unidad gráfica, pero todo apunta a una Mali-G72.

El anuncio oficial del Kirin 710 se espera para el mes de julio. Recordad que este SoC se utilizará no sólo en los nuevos smartphones de gama media-alta de Huawei, sino también en la serie Honor, que es la segunda marca del gigante chino.

Fuente

by Mauro at June 11, 2018 10:12 PM

Microsoft Store permitirá la instalación remota de apps en cualquier PC con Windows 10

Microsoft está agregando una nueva característica a su tienda de aplicaciones Microsoft Store. Y es una que toma reminiscencia de una función de Windows Phone, “Install on my devices”, aunque en lugar de móviles la recrea para que funcione en cualquier PC con Windows 10.

Cuando abras la página de una app de la tienda y hayas utilizado previamente tu cuenta (cualquier ID Microsoft) para instalar dicha app, se mostrará botón con la etiqueta “Instalar en mis dispositivos”, como vemos con el siguiente ejemplo de Netflix:

Si haces clic en el botón “Instalar en mis dispositivos”, se te mostrará una lista de dispositivos registrados que usan tu cuenta. Desde ahí, puedes seleccionar los dispositivos donde desees instalar la app.

La característica funciona de manera similar a la función equivalente para instalar apps remotas desde Play Store de Google y la tienda para Windows Phone, pero en este caso para PCs con Windows 10.

Solo algunos usuarios tienen acceso a esta función, que según los foros de soporte se activó el pasado 6 de junio. ¿La habías visto? ¿La has probado?

Fuente

by Mauro at June 11, 2018 09:46 PM

Lenovo renueva sus portátiles Legion, sector gaming contentos

Lenovo ha anunciado una renovación de sus portátiles Legion, una gama que está dirigida al sector gaming y que desde su debut ha destacado por ofrecer una buena relación calidad-precio. Los que nos leéis a diario recordaréis que en algunos Red Friday hemos visto portátiles Legion en oferta con precios que rondaban los 600 euros, una cifra muy buena para un portátil gaming de verdad.

Tenemos dos modelos diferentes dentro de esa renovación de la serie Lenovo Legión: el Y530 y el Y730. El primero viene en una única configuración con pantalla de 15,6 pulgadas y el segundo estará disponible tanto en configuraciones de 15,6 como de 17,3 pulgadas. Ambas gamas tienen un acabado premium en aluminio y unos bordes de pantalla reducidos frente a la generación anterior. El peso también está muy ajustado, ya que el Y530 parte en su configuración base desde los 2,3 kilogramos y el Y730 pesa 2,1 kilogramos en su versión de 15,6 pulgadas y 2,9 kilogramos en su versión de 17,3 pulgadas.

A nivel de hardware el Lenovo Legion Y530 tiene una configuración básica que parte de un procesador Core i5 de octava generación, 8 GB de RAM y una GeForce GTX 1050, suficiente para jugar a cualquier título actual con garantías en resolución 1080p y calidades altas.

Por su parte el Lenovo Legion Y730 utiliza procesadores Core i5 y Core i7 de octava generación que soportan overclock, puede montar hasta 32 GB de RAM y cuenta con una GeForce GTX 1050 TI con 4 GB de GDDR5 en su configuración más básica.

La resolución de pantalla es FullHD en ambos modelos y tienen una frecuencia de refresco de 60 Hz, aunque Lenovo ofrecerá versiones con hasta 144 Hz y tecnología G-Sync de NVIDIA, que ayuda a acabar con los molestos efectos de stuttering (pérdida de sincronización de los FPS) y de ruptura de la imagen que se producen en algunos juegos.

Por lo demás tenemos teclados retroiluminados personalizables, unidades de almacenamiento SSD y HDD para unir rendimiento y capacidad y un sistema de refrigeración mejorado que resulta mucho más eficiente y silencioso.

El Lenovo Legion Y530 estará disponible en julio con un precio base de 929 dólares, mientras que el Lenovo Legion Y730 llegará en septiembre y costará 1.1799,99 dólares en su versión de 15,6 pulgadas y 1.249,99 dólares en su versión de 17,3 pulgadas.

Fuente

by Mauro at June 11, 2018 09:34 PM

Dale a Gimp la apariencia de Photoshop

Con este interesante Tweak podremos darle un tuneo a nuestro Gimp, no solo en apariencia similar a Photoshop, sino también en íconos, atajos del teclado y ubicación de paneles. Funciona bajo cualquier distro Linux y rama, comprobado.

Algunos dirán que con la opción de ventana unificada (como yo lo uso) es suficiente, pero para algunos nostálgicos o bien para animar a saltar la brecha les sirve y mucho este tweak con el cual dejarán a su Gimp totalmente sabor Photoshop.

Este tuneo fue realizado por Martin Owens y es muy fácil de usar, simplemente realizamos un par de cambios rápidos y ya tendremos nuestro Gimp muy parecido a esto (directamente desde mi Xubuntu con GIMP 2.9)

La verdad sorprendente el cambio, todos los íconos y los paneles, hermoso incluso para mi que no uso ni usé nunca Photoshop.-

 

Vamos a Instalarlo en GIMP 2.8:
1) Descargamos el zip con el contenido desde DevianArt

2) Hacemos un respaldo de la configuración actual:
Se puede usar nuestro gestor de archivos (RECORDAR QUE LOS DIRECTORIOS ESTÁN OCULTOS) o bien desde la terminal con: (reemplazar USER por el usuario de esa PC)

mv /home/USER/.gimp-2.8 /home/USER/.gimp-2.8-backup

3) Descomprimimos el contenido del Zip dentro de nuestro /home, veremos que nos crea una nueva carpeta llamada .gimp-2.8 y con eso estaría completo.

 

Vamos a instalarlo en GIMP 2.9:
1) Descargamos el zip con el contenido desde DevianArt

2) Hacemos un respaldo de la configuración actual:
Se puede usar nuestro gestor de archivos (RECORDAR QUE LOS DIRECTORIOS ESTÁN OCULTOS) o bien desde la terminal con: (reemplazar USER por el usuario de esa PC)

mv /home/USER/.config/GIMP/2.9 /home/USER/.config/GIMP/2.9.backup

3) Descomprimimos el contenido del Zip dentro de /home/.config/GIMP/, nos creará un directorio llamado .gimp-2.8 que deberemos renombrar luego a 2.9 con eso ya estaría.

 

Deshacer los cambios:
GIMP 2.8 (reemplazar USER por el usuario de esa PC)

rm -r /home/USER/.gimp-2.8
mv /home/USER/.gimp-2.8-backup /home/USER/.gimp-2.8

GIMP 2.9 (reemplazar USER por el usuario de esa PC)

rm -r /home/USER/.config/GIMP/2.9
mv /home/USER/.config/GIMP/2.9-backup /home/USER/.config/GIMP/2.9

Fuente

by Mauro at June 11, 2018 08:55 PM

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 June 11, 2018 08:38 PM

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 June 11, 2018 05:14 PM

June 08, 2018

RooTeando

Rock64(I)

En el audio de hoy hablaré sobre la Rock64, esta enfocado al hardware, una pequeña descripción de los componentes y los pequeños problemas que tuve con la memoria eMMC. 

Rock64: https://www.pine64.org/?page_id=7147
Rock64Pro: https://www.pine64.org/?page_id=61454
Recursos de Rock64: https://www.pine64.org/?page_id=7175

Música: Sachiko Kanenobu- Live at WFMU- Look Up, The Sky Is Beautiful. http://freemusicarchive.org
 

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia  ...

June 08, 2018 01:48 AM

June 07, 2018

Sobre bits

PowerCLI one-liners: Máquinas virtuales sin VMware Tools

Si hay algo que caracteriza a PowerShell (y PowerCLI) es la capacidad de realizar acciones aparentemente complejas en otros lenguajes de programación/scripting utilizando muy pocos carácteres. Es por ello que iniciamos la sección “PowerCLI one-liners” en la que iremos viendo utilidades de todo tipo con algo en común: que se pueden ejecutar en una sola línea. En la primera entrega vamos a ver como a listar máquinas virtuales sin VMware Tools.

Listar máquinas virtuales sin VMware Tools, algo no tan fácil si no sabes dónde mirar

Si tenemos algo de experiencia utilizando PowerCLI se nos puede pasar por la cabeza lo más obvio: ¿máquinas virtuales sin VMware Tools? Fácil, listo las VMs con Get-VM y a partir de ahí me las apaño para buscar alguna propiedad que indique si están instaladas. El gran problema de ésto es que no existe dicha propiedad, por lo que tendremos que tirar de Get-View para la tarea (o de la propiedad ExtensionData que realmente accede a un objeto con las propiedades de Get-View desde Get-VM).

Get-View es un CMDlet que nos devuelve un objeto “vSphere .Net View” al contrario que Get-VM que nos devuelve un objeto “PowerShell VIObject”. Para esta entrada la diferencia que nos interesa es que con Get-View sacámos un objeto con 147 métodos y propiedades, y con Get-VM sacámos un objeto con “sólo” 41, y de entre esos 147 métodos y propiedades de Get-View está el estado de las VMware Tools.

Ahora sí, listando máquinas virtuales sin VMware Tools con un one-liner

Después de esta pequeña intro sobre la diferencia entre Get-View y Get-VM vamos a lo que toca, éste es el one-liner y la descomposición del mismo:

Get-View -ViewType VirtualMachine | Select-Object Name, @{ Name="VersionTools"; Expression={$_.config.tools.toolsVersion}} | Where-Object {$_.VersionTools -eq 0}
  • Get-View -ViewType VirtualMachine: Listamos todas las VM’s de nuestro Datacenter.
  • Select-Object Name, @{ Name=”VersionTools”; Expression={$_.config.tools.toolsVersion}}: Seleccionamos la propiedad “Name” y una propiedad a la que llamamos “VersionTools” con el número de versión de las VMware Tools.
  • Where-Object {$_.VersionTools -eq 0}: Filtramos sólo las VM’s que tengan versión “0”, es decir, que no tienen las tools instaladas.

Después de ejecutarlo deberíamos ver algo similar a esto:

Máquinas virtuales sin VMware Tools

Una tarea muy sencilla que podemos programar y con la que obtendremos más control sobre nuestra infraestructura.

La entrada PowerCLI one-liners: Máquinas virtuales sin VMware Tools aparece primero en Sobrebits.

by Marc Meseguer at June 07, 2018 03:41 PM

June 03, 2018

Sobre bits

Monitorizar la licencia de Veeam Backup con Nagios y PowerShell

Todos los Sysadmin tenemos que lidiar en nuestro día a día con tareas apasionantes como las expiraciones de garantía, licencias y soporte de los productos que utilizamos en nuestras compañías. Para facilitar ésta tarea me decidí a crear el plugin “check_veeam_license_expiration” con el que monitorizar la licencia de Veeam Backup desde Nagios con PowerShell.

Si bien existen y se deben usar métodos de seguimiento calendarizados, es muy útil disponer de un check en nuestro sistema de monitorización que nos de el chivatazo si por algún motivo se nos ha olvidado tramitar las renovaciones correspondientes o éstas no se han realizado automáticamente.

En el caso de Veeam Backup es especialmente importante llevarlo al día porque la combinación de una licencia de pago por uso (que se debería autorenovar cada poco tiempo y no siempre lo hace) y el hecho de que sin licencia fallen todos los backups nos puede llevar a más de una sorpresa desagradable.

Cómo monitorizar la licencia de Veeam Backup con Nagios

Para utilizar el plugin check_veeam_license_expiration y monitorizar la licencia de Veeam Backup desde Nagios necesitaremos lo siguiente en el servidor de destino:

  • Tener Veeam Backup and Replication instalado, obviamente.
  • Permitir la ejecución de scripts en PowerShell.
  • Tener NSClient++ instalado y correctamente configurado.

Para descargarlo podemos dirigirnos a la página del plugin en Nagios Exchange, o bien, directamente hacerlo desde GitHub.

El uso del script es muy sencillo:

check_veeam_license_expiration.ps1 -w 5 -c 2

Los parámetros que podemos utilizar son los siguientes:

  • Warn (o su alias “w”): Días restantes de licencia para mostrar estado Warning.
    • Si no se especifica su valor por defecto es 7.
  • Crit (o su alias “c”): Días restantes de licencia para mostrar estado Critical.
    • Si no se especifica su valor por defecto es 2.

Y el check funcionando quedaría así:

Monitorizar la licencia de Veeam

¿Qué hace realmente check_veeam_license_expiration?

Básicamente lo que hace check_veeam_license_expiration es consultar el valor de la clave de registro correspondiente a la licencia de Veeam Backup y compararlo con la fecha actual:

HKLM:\SOFTWARE\VeeaM\Veeam Backup and Replication\license

En función de los días que quedan para la expiración el plugin devolverá los correspondientes estados Ok, Warning o Critical para que Nagios los gestione.

En próximas entradas veremos paso a paso cómo crear un plugin de Nagios con PowerShell desde cero y cómo configurar NSClient++ y Nagios para ejecutarlo.

La entrada Monitorizar la licencia de Veeam Backup con Nagios y PowerShell aparece primero en Sobrebits.

by Marc Meseguer at June 03, 2018 05:30 PM

June 01, 2018

RooTeando

Tomando Un Café 33: Videos para aprender a programar

En el audio de hoy hablaré sobre aprender a programar viendo solo videos, mi opinión sobre este tema y cual es la mejor proceso de aprendizaje para la programación.

Música: The Polish Ambassador-Pusing through the pavement. The Juiceman Cometh ft. Saqi http://freemusicarchive.org

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython


Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss
Blog(post y ...

June 01, 2018 01:01 AM

May 31, 2018

UnLugarEnElMundo

WordPress. El misterioso caso del cuelgue diario a las 9 de la mañana

icono de wordpress Los blogs están muertos. Por fin. Bueno, no todos. Hay alguno que resiste hoy y siempre a la invasión de las redes sociales. A ratos me gusta pensar que este es uno de ellos… pero si soy sincero conmigo mismo ciertamente está un poco desnutrido. No le presto mucha antención, no… Hace meses, por ejemplo, que se cuelga durante aproximadamente media hora todas las mañanas y ni siquiera me he preocupado de ver que le pasa. Bueno, ya no. Ya está arreglado. Los malos hados subestiman el poder de esas tareas tediosas y desagradables que hacen que hasta te den ganas de ponerte a planchar o a limpiar los baños. Bueno, yo me he conformado con arreglar por fin este problemilla. Los baños otro día. 🙂

¿Síntomas mi querido Watson? Apenas nada: la indisponibilidad se producía por un elevado consumo de CPU y mirando con htop resulta que la responsable es mariadb (aunque en el pantallazo aparezca mysql ya sabéis que son compatibles a nivel binario).

htop - mysql se come todo el tiempo de proceso de ambos cores

Alguna pista mas: conéctandome a mariadb observo que lo que se están ejecutando son consultas aparentemente bastante simples sobre la tabla wp_options:

MariaDB [unlugar]> show processlist;
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+
| Id    | User    | Host      | db      | Command | Time | State        | Info                                                                                                 | Progress |
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+
| 29462 | unlugar | localhost | unlugar | Query   | 1043 | Sending data | DELETE a, b FROM wp_options a, wp_options b
			WHERE a.option_name LIKE '\\_transient\\_%'
			AND a. |    0.000 |
| 29552 | root    | localhost | unlugar | Query   |    0 | init         | show processlist                                                                                     |    0.000 |
| 29559 | unlugar | localhost | unlugar | Query   |   40 | update       | INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('jetpack_nonce_15275779 |    0.000 |
| 29560 | unlugar | localhost | unlugar | Query   |   22 | updating     | UPDATE `wp_options` SET `option_value` = '1527578481.1030609607696533203125' WHERE `option_name` = ' |    0.000 |
| 29561 | unlugar | localhost | unlugar | Query   |    7 | updating     | UPDATE `wp_options` SET `option_value` = '1527578505', `autoload` = 'yes' WHERE `option_name` = 'jet |    0.000 |
| 29562 | unlugar | localhost | unlugar | Query   |    0 | updating     | UPDATE `wp_options` SET `option_value` = '1527578503.1177010536193847656250' WHERE `option_name` = ' |    0.000 |
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+

Así que le echamos un vistazo a esa tabla y resulta que tiene la friolera de más de 40.000 registros y consume cerca de 38 Megas de espacio ¿Qué tiene dentro?¿Los casos de corrupción del PP? Porque la estructura de la tabla también es bastante simplona:

MariaDB [unlugar]> describe wp_options;
+--------------+---------------------+------+-----+---------+----------------+
| Field        | Type                | Null | Key | Default | Extra          |
+--------------+---------------------+------+-----+---------+----------------+
| option_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| option_name  | varchar(191)        | NO   |     | NULL    |                |
| option_value | longtext            | NO   |     | NULL    |                |
| autoload     | varchar(20)         | NO   |     | yes     |                |
+--------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

Un último dato: la exactitud en la periodicidad me escamaba también. Incluso uno de esos días de puentes con un tiempo maravilloso donde no queda ni el friki más irredento paseándose por algo donde no despachan cerveza el blog también se caía. Y a la misma hora, así que le eché un vistazo al cron del sistema y no había nada que se lanzara a esa hora. ¿Y? De repente recordé que wordpress viene con su propio planificador de tareas y que estas se pueden inspeccionar fácilmente. Por ejemplo a través del plugin WP Cron Cleaner. Bingo. Ahí la tengo: Justo a las 9.04 y todos los días hay una tarea que se llama delete_expired_transients. Y eso de “transient” ya era algo que habíamos visto por ahí arriba en la consulta que se estaba realizando en mariadb.

El proceso que se lanza diariamente alrededor de las 9 realiza una limpieza de transients

Tocaba googlear a ver que es eso de los transients pero ya teníamos datos suficientes para reunir en la biblioteca a todos los implicados y desvelar quien es el asesino.

Los transients, al parecer, son registros con información temporal que proviene de los plugins que tenemos instalados. ¿Sirven para algo? Pues una vez que caducan no, para nada. De hecho precisamente por eso está ahí esa tarea que elimina los caducados. ¿Qué es lo que ocurre entoces? Pues que es evidente que muy bien no funciona porque la mayoría de esos 40.000 registros son transients. Más de 35.000, de hecho. Y la búsqueda se realiza a través del campo wp_options que como vemos no está indexado. Fatal. La primera aproximación al problema pasa, pues, por crear un índice sobre esa columna:

MariaDB [unlugar]> alter table wp_options add index (option_name);
Query OK, 0 rows affected (3 min 47.86 sec)         
Records: 0  Duplicates: 0  Warnings: 0

Mano de santo, oigan. Al día siguiente a las 9.04 por primera vez en meses el blog no se colgó. ¿Lo dejo así?¿Con una tabla diez veces mas grande que el contenido de todo lo escrito en el blog?¿Hasta donde la dejo crecer entonces? Toca hacer otra búsqueda y por ahí me encuentro con mucha mas gente que ha tenido problemas similares y que asegura que se puede hacer tábula rasa y borrarlos todos. Así que hago un backup rápido, los elimino… y parece que todo va bien. Fantástico 🙂

¿Cómo eliminarlos? Pues a través de línea de comando es fácil:

MariaDB [unlugar]> DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

Puestos a buscar una solución más cómoda y permanente para no llegar de nuevo aquí dentro de 10 años encontré otro plugin (Transient Cleaner) que te permite borrarlos puntualmente y/o programar una tarea para hacer una limpieza mas efectiva que la de wordpress de forma periódica.

Y listo. O eso parece. Mañana los baños. Sin falta 🙂

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: WordPress. El misterioso caso del cuelgue diario a las 9 de la mañana || Hospedado en un Cloud VPS de Gigas.

by Josemaría at May 31, 2018 10:25 AM

May 29, 2018

blogofsysadmins.com

wkhtmltopdf: cannot connect to X server “centos 7”

Me lo voy a dejar aquí escrito, porque tengo muy mala cabeza y ahora hay mucho Symfony destroyer que se meten cabezazos por el error este. Lo primero de todo, instalamos e iniciamos el servicio de Xvfb (Virtual framebuffer es un servidor X11 que ejecuta todas las operaciones gráficas en memoria, sin mostrar nada por …

by GhOsTi at May 29, 2018 05:10 PM

May 24, 2018

# rm-rf.es

Cambio de URL para feeds y cancelación de suscripciones por correo

Una entrada rápida para informaros que con motivo del Reglamento General de Protección de Datos (RGPD) que entra en vigor mañana, me veo en la obligación de eliminar las suscripciones por correo electrónico. A partir de ahora, podéis seguir el blog a través de las redes sociales o mediante la nueva URL de RSS, cualquiera de las siguientes:

Redes sociales:

by Alex at May 24, 2018 07:35 AM

May 22, 2018

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 YAOURT 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 YAOURT:

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í.

YAOURT (Yet AnOther User Repository Tool)
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 Yaourt?

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)

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

Ejemplo:

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

by Mauro at May 22, 2018 02:58 PM

May 21, 2018

soyadmin.com

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

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:

yaourt -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 21, 2018 02:42 PM

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 21, 2018 01:45 AM

May 18, 2018

# rm-rf.es

Oracle VM Manager: Event queue is full. Drop new event …

En la versión 3.4.2 de Oracle VM, existe un bug que provoca que los jobs que ejecutemos desde la interfaz web de Oracle VM Manager se queden atascados y no terminen nunca. Además, la creación, borrado o clonado de máquinas virtuales tampoco funcionan.

Analizando el log del agente ovs-agent.log se observa que continuamente aparece una entrada similar a lo siguiente:

[2018-01-12 10:32:33 3700] WARNING (notificationserver:119) Event queue is full. Drop new event: {SERVER} {STATUS} {'timestamp': 1419241357C01L, 'lastBootTime': 1419241357C01L}
[2018-01-12 10:32:34 3700] WARNING (notificationserver:119) Event queue is full. Drop new event: {SERVER} {STATUS} {'timestamp': 1476369052402P, 'lastBootTime': 1469741057102P}

El problema como podéis ver es que la cola de eventos está llena, impidiendo el funcionamiento correcto de los jobs. La solución, en esta versión concreta (3.4)es únicamente reiniciar el agente en todos los servidores:

# service ovs-agent restart

Los agentes se pueden reiniciar sin problema, pues no afectará a las máquinas virtuales. En caso de que siguieras teniendo problemas, reinicia completamente Oracle VM Manager:

# service ovmm stop
# service ovmm start

by Alex at May 18, 2018 08:33 PM

soyadmin.com

Prueba

Mantenimiento de servidores:

SERVIDOR:
# Controlar tamaños de ficheros, mayores a 500MB dentro de /home /root /usr/local/apache/logs/
find . -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

# Eliminar logs "rotados" dentro de:
/usr/local/cpanel/logs/archive

# Empezar a controlar con el MC carpetas perdidas y archivos raros dentro del /root, dentro del /home etc.

# Controlar Backups
# Repara y optimiza las bases mysql
mysqlcheck -r --all-databases
mysqlcheck -o --all-databases

# Borrar los temporales de analisis clamav
rm -fr /var/spool/exim/scan/*

# Limpiar la cache de yum ( /var/cache/yum/ )
yum clean all

# Borrar los temporales de logwatch
rm -fr /var/cache/logwatch/*

# Borra los archivos temporales de horde
rm -f /var/cpanel/horde/tmp/*
rm -fr /var/cpanel/horde/tmp/.horde/imp/attachments/*
[cc lang="bash"]
# Dentro de /tmp
# Clean up PHP temp. session files
ls | grep 'sess_*' | xargs rm -fv
# Clean up dead vBulletin uploads
ls | grep 'vbupload*' | xargs rm -fv
# Clean up trash left by Gallery2
ls | grep '[0-9].inc*' | xargs rm -fv
# Clean up failed php uploads
ls | grep 'php*' | xargs rm -fv
# Clean up failed ImageMagick conversions.
ls | grep 'magick*' | xargs rm -fv
[cc lang="bash"]
WHM:
# Chequear actualizaciones de:
WHM
SCRIPTS
PHP
APACHE
MYSQL

# Controlar avisos del Firewall

# Ver que todos los sitios esten dentro del cagefs

# Controlar versiones de php en easyapache

by Mauro at May 18, 2018 01:32 PM

May 16, 2018

Entre Dev Y Ops

Podcast 39: Entrevistas de trabajo

En el episodio 39 del podcast hablamos sobre las entrevistas de trabajo, tanto desde el punto de vista del entrevistado como del entrevistador.

May 16, 2018 10:35 PM

RooTeando

Tomando Un Café 32: Zenkit, organizando tus tareas

En el audio de hoy hablaré sobre la herramienta Zenkit, comentare mis primeros pasos en  esta, muy recomendable, herramienta. Como se instala y configura, también explicaré las funcionalidades que he utilizado y otras que he visto.  

Muy recomendable ver los siguientes tutoriales en video, para conocer mejor Zenkit.
https://zenkit.com/tutorials
Clientes disponibles
https://zenkit.com/apps

 Música: Blue Dot Sessions- The Balloonist-02 UpUpUp and Over http://freemusicarchive.org/
 

Canales de Telegram  ...

May 16, 2018 01:48 AM

May 15, 2018

soyadmin.com

¡Hola mundo!

Bienvenido a WordPress. Esta es tu primera entrada. Editala o borrala, ¡y comenzá a escribir!

by Mauro at May 15, 2018 08:13 PM

May 09, 2018

CloudAdmins.org

Barcelona Cloud Techday 24/5 : Especial OpenNebula y VMware

 https://opennebula.org/community/techdays/techday-barcelona-2018/

The OpenNebula Cloud TechDays are day-long educational and networking events to learn about OpenNebula.  Join our technical experts from OpenNebula by OpenNebula Systems for a one-day, hands-on workshop on cloud installation and operation. You’ll get a comprehensive overview of OpenNebula and will be equipped with the skills to take this back to your company and implement right away.

Sponsors

Local Organizer

CSUC, which stands for Consorci de Serveis Universitaris de Catalunya (Catalan Consortium for University Services), shares academic, scientific, library, transfer of knowledge and management services to associated entities to improve effectiveness and efficiency by enhancing synergies and economies of scale. It’s integrated by the Generalitat de Catalunya and ten Catalan universities (UB, UAB, UPC, UPF, UdL, UdG, URV, UOC, URL and UVic-UCC).

Location

The TechDay will be held at

CSUC
Gran Capità street, no number
CSUC Building
Barcelona, Spain

Contact: [email protected]

Call for Speakers

Send us an email at [email protected] if you are interested in speaking at this TechDay and:

  • Sharing cloud use cases and deployment experiences
  • Introducing new integrations and ecosystem developments
  • Describing other related cloud open-source projects and tools

Registration

The number of seats is limited  to ensure there is plenty of opportunity for everyone to interact. We encourage everyone to register as early as possible.

Agenda and Speakers

Agenda will include a hands-on cloud installation and operation tutorial, and presentations from OpenNebula community members and users. Send us an email at [email protected] if you are interested in speaking at this TechDay.

09:15 – 09:30: Check-in

09:30 – 09:35: Welcome to Open Cloud TechDay Barcelona

09:35 – 11:00: Session 1, OpenNebula Project

09:35 – 10:00: OpenNebula and VMware

Tino VázquezOpenNebula SystemsIntroduction to OpenNebula on  VMware.

10:00 – 10:30: LINBIT

TBD

10:30 – 11:00: Flexible infrastructures for future Cloud

Daniel Justicia,IT Product Manager – Huawei

11:00 – 11:30: Coffee & Soda

11:30 – 12:15: Session 2, OpenNebula Experiences

ONE Xperience at Facultat d’Informàtica de Barcelona

Daniel Sanchez,inLab UPC

ONE Tips & Tricks

Xavier Peralta,CSUC

ONE and Hybrid Cloud – Terraform

Cristina Jerez,iThinkUPC

Hybrid Clouds: Dancing with “Automated” Virtual Machines

Jordi Guijarro,CSUC

12:15-13:45: Hands-on Part I: OpenNebula in Action

Juan Montiel,OpenNebula Systems.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.

13:45 – 14:30: Lunch

14:30-16:30: Hands-on Part II: OpenNebula in Action

Contents

  • Configuration and basic usage
  • An introduction to cloud computing with OpenNebula
  • The architecture of the cloud
  • Planning and installing OpenNebula
  • Virtualization hosts management
  • Basic datastore configuration
  • Basic virtual network creation
  • VM Template creation & instantiation

Methodology

This is an interactive course, where the attendees operate on their own labs with a 3-node OpenNebula cloud, which are provided during the course. OpenNebula provides an abstraction layer on top of the infrastructure and technologies deployed in the datacenter. In order for the attendees to get the best understanding possible of OpenNebula as a whole, the labs used during the course make use of the most common open-source technologies that can be used to deploy an OpenNebula cloud. For example, the hypervisor technology used during the course will be KVM, shared file-system for storage, and regular linux bridges and linux firewall for networking. Other technologies supported by OpenNebula will be addressed and discussed as well.

Audience

The target audience is devops and system administrators interested in deploying a private cloud solution, or in the integration of OpenNebula with other platform.

Skills Gained

  • Describe the features and benefits of using virtualization and clouds
  • Describe different architectures for a cloud that can be deployed with OpenNebula
  • Deployment and basic configuration OpenNebula
  • Basic operation of an OpenNebula cloud instance

Prerequisites

No prior OpenNebula skills are required, but participants should have working knowledge of virtualization, networking and Unix/Linux systems.

Material

The instructor will rely on a set of PDF documents that will be explained throughout the course. These documents will be made available to the attendees right at the very beginning of the course. Attendees need a laptop to connect to their hands-on labs.

16:30: Open Space

This is a session for attendees to gather and discuss passionate questions, burning ideas, features, integrations or any topic of their choice, in an informal and tech-friendly environment, with other passionate and interested people.There is no preplanned list of topics, only time slots and a space in one of the meeting rooms where interested participants propose topics and pick time slots.

by Cloudadmin JordiGuijarro at May 09, 2018 09:26 AM

May 08, 2018

RooTeando

Tomando Un Café 31: Alternativas Raspberry

En el audio de hoy tendré un pequeña reflexión sobre la compra de una alternativa de una Raspberry Pi, porque son tan desconocidas para el gran público. Reflexiono los motivos principales porque se compra Raspberry y no cualquiera de su alternativas, y si son verdad o no.

Música: Kevin MacLeod-Blues Sampler-08 Slow Burn http://freemusicarchive.org

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython

Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http ...

May 08, 2018 01:50 AM

May 06, 2018

joseangelfernandez.es

Azure y los servicios disponibles por región en una tabla de Excel

Esta semana, revisando una de nuestras listas de distribución internas, he descubierto un interesante truco para tener de forma fácil en un fichero Excel el resumen de servicios disponibles en Azure por región. Cuando solo existían unas pocas regiones era fácil recordarlo; sin embargo, con casi 50 regiones disponibles en breve se ha vuelto prácticamente imposible.

Desde Excel 2010 existe una funcionalidad basada en PowerQuery que permite recuperar información desde diferentes fuentes de datos e incluirla directamente en una hoja de cálculo. En este caso, la que nos interesa es la opción de obtenerla desde una página web

Al mismo tiempo, Azure proporciona un listado de todos los servicios por región disponibles. La experiencia es bastante buena pero puede no ser suficiente si necesitas por algún motivo tener el listado en un fichero para consultar sin conexión. ¿Cómo resolverlo? Vamos allá.

En primer lugar, abrimos Excel y nos dirigimos a la pestaña de Data. Dentro de ella encontraremos la opción de Get Data > From Other Sources > From Web

Obteniendo información en Excel desde una WebObteniendo información en Excel desde una Web

Una vez seleccionado se abrirá el asistente que nos guiará en el proceso. En primer lugar será necesario copiar la dirección de la página web de Azure donde se encuentra el listado: https://azure.microsoft.com/en-us/global-infrastructure/services/ y pasar al siguiente paso. Esto iniciará el proceso de búsqueda de información disponible en dicha página web y nos permitirá previsualizarla.

Primer paso asistente de Excel para obtener datos desde una WebPrimer paso asistente de Excel para obtener datos desde una Web

De las dos opciones que encuentra, nos interesará la que aparece como Table 0. La seleccionamos y a continuación hacemos click en Load. Excel comenzará a analizar la página web y a extraer la información disponible. Mientras dura el proceso se nos mostrará lo siguiente:

Mensaje de información de carga y procesado de los datosMensaje de información de carga y procesado de los datos

Tras unos segundos, todo el contenido del portal de Azure aparecerá volcado dentro de nuestra hoja de cálculo listo para ser consumido o guardado.

Resultado de la carga de los datosResultado de la carga de los datos

El formato es por defecto no es muy atractivo visualmente; sin embargo, con unas pequeñas modificaciones en los datos y aplicando las opciones de formato condicional podemos tener una tabla mucho más fácil de consultar a simple vista.

Datos cargados con un formato más visualDatos cargados con un formato más visual

Si alguna vez lo necesitáis, ya tenéis un proceso rápido y sencillo para obtenerlo.

by jafernandez at May 06, 2018 05:50 PM

May 04, 2018

RooTeando

Tomando Un Café 30: Rock64, TeleX y ActivityWatch

En el audio de hoy trataremos sobre hardware, Rock64, y software, con las aplicaciones TeleX cliente de Telegram y Activity Watch,tracker de tiempo.

Grupo de Elav https://t.me/systeminsidegroup

Música: Dexter Britian- Creative Commons Volume 5-01 The Time To Run http://dexterbritain.bandcamp.com
 

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython
Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss ...

May 04, 2018 11:07 AM

May 03, 2018

debianhackers.net

WordPress Multisite, Let’s Encrypt Wildcard y dominios redirigidos

Inciso: Dabo, te lo dije, te advertí que no pararía hasta terminar sabiendo cómo hacer funcionar esto 🙂

Tengo varias web, varios WordPress y un puñado de dominios. Es, creo yo, lo habitual cuando te mueves por estas aguas y a cada proyecto, idea o viaje místico le asocias un dominio y un espacio en internet. La mayoría no llega a ningún sitio pero eso no es lo importante. Al final, te juntas con un puñado de webs en un WordPress Multisite, con varios dominios apuntando a varios de sus subdominios y con unas ganas locas de ponerles a todas un bonito certificado SSL patrocinado por Let’s Encrypt.

El escenario

example.com es el dominio principal de un WordPress Multisite que alberga una veintena de webs en su propio subdominio, loquesea.example.com y, algunas de ellas, además, tienen un dominio propio que apunta al subdominio. Así tenemos, por ejemplo, example1.com que apunta a ex1.example.com y example2.net que apunta a ex2net.example.com.

Y un día quieres que todos los dominios tengan su propio certificado de Let’s Encrypt y es un problema porque como todos los subdominios dependen del mismo dominio principal y Let’s Encrypt no soporta wildcards, no hay mucho que hacer.

Así que te planteas hacer que sea Apache (2.4) el que se coma el marrón y te pones a mirar cómo hacerlo. El VirtualHost ya tiene declarado el dominio y los subdominios y también cuenta con el certificado para si mismo. Y no encontré la forma de meterle el resto de certificados, ni declarando otros VirtualHosts para que cada dominio tuviese su certificado, ni de ninguna forma.

Al final lo dejas por un tiempo porque no, ni apache es la solución ni Let’s Encrypt soporta wildcards y ya estás bastante cansado de batallar con molinos multisite.

La solución

El 13 de marzo, con dos meses de retraso sobre la fecha previstas, Let’s Encrypt anuncia que soporta wildcards y empiezas con las pruebas.

Primero, el VirtualHost de apache debe reconocer todos y cada uno de los dominios y subdominios, incluídos los dominios asociados:

grep ServerAlias /etc/apache2/sites-enabled/example.com.conf
    ServerAlias *.example.com ex1.example.com example1.com ex2net.example.com example2.net

Luego, se invoca a cerbot con los parámetros adecuados:

sudo certbot certonly \
  --server https://acme-v02.api.letsencrypt.org/directory \
  --manual \
  --preferred-challenges dns-01 \
  -d example.com \
  -d *.example.com \
  -d example1.com \
  -d example2.net

Con el parámetro --manual deberemos añadir un registro TXT _acme-challenge con una clave al DNS de cada uno de los dominios especificados para que sean capaces de comprobar que realmente eres el propietario del dominio.

Los dominios a incluir en el certificado se especifican por separado, todos ellos, con un -d, incluyendo el wildcard para los subdominios de example.com.

Se cambia la declaración del certificado porque es un fichero diferente, se reinicia apache y esta parte está lista. Cada dominio y subdominio tiene un certificado nominal válido, firmado por Let’s Encrypt y se puede acceder a cada uno, por HTTP y HTTPS.

En WordPress es una buena idea activar el plugin Really Simple SSL que convierte todas las peticiones HTTP en HTTPS para que todo el contenido esté cifrado.

Bonus track: redirigir las peticiones HTTP a HTTPS

Añadir estas pocas líneas al VirtualHost de apache:

# Force HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Sólo he necesitado un año y pico y que Let’s Encrypt admitiese los wildcard para poder tener los dominios funcionando a mi gusto. Y si, seguro que hay una docena (o más) de mejores formas de hacerlo pero, sinceramente, no he encontrado ninguna otra.

by Diego Martínez Castañeda at May 03, 2018 11:02 PM

May 01, 2018

Entre Dev Y Ops

Píldora 3 - DevOps Barcelona

En esta tercera píldora del podcast, David y Daniel nos cuentan cómo vivieron la conferencia DevOps Barcelona; los demás les troleamos lo que podemos.

May 01, 2018 12:25 PM

April 30, 2018

# rm-rf.es

Comprobar el changelog de un paquete instalado (o a instalar) (RPM|YUM)

El registro de cambios​ (changelog) contiene un listado de cambios, nuevas funcionalidades, solución de bugs y vulnerabilidades, etc. aplicadas a un determinado paquete. A través de rpm podemos consultar el changelog de un paquete, para ello se utiliza la opción de query -q y --changelog. Ejemplo:

$ rpm -q --changelog kernel | more
* Sun Nov 10 2013 Rafael Aquini <[email protected]> [2.6.32-431.el6]
- [md] Disabling of TRIM on RAID5 for RHEL6.5 was too aggressive (Jes Sorensen) [1028426]

* Tue Nov 05 2013 Rafael Aquini <[email protected]> [2.6.32-430.el6]
- [x86] Revert "efi: be more paranoid about available space when creating variables" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efivars: firmware bug workarounds should be in platform code" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efi: Export efi_query_variable_store() for efivars.ko" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efi: Check max_size only if it is non-zero" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efi: Distinguish between "remaining space" and actually used space" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efi: Implement efi_no_storage_paranoia parameter" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "Modify UEFI anti-bricking code" (Rafael Aquini) [1012370 1023173]
- [x86] Revert "efi: Fix dummy variable buffer allocation" (Rafael Aquini) [1012370 1023173]

* Sat Nov 02 2013 Rafael Aquini <[email protected]> [2.6.32-429.el6]
- [fs] revert xfs: prevent deadlock trying to cover an active log (Eric Sandeen) [1014867]

* Wed Oct 30 2013 Rafael Aquini <[email protected]> [2.6.32-428.el6]
- [fs] Revert "vfs: allow umount to handle mountpoints without revalidating them" (Rafael Aquini) [1024607]
- [fs] Revert "vfs: massage umount_lookup_last() a bit to reduce nesting" (Rafael Aquini) [1024607]
- [fs] Revert "vfs: rename user_path_umountat() to user_path_mountpoint_at()" (Rafael Aquini) [1024607]
- [fs] Revert "vfs: introduce kern_path_mountpoint()" (Rafael Aquini) [1024607]
- [fs] Revert "autofs4: fix device ioctl mount lookup" (Rafael Aquini) [1024607]
[...]

Si queremos consultarlo para un paquete que todavía no hemos instalado, lo podemos hacer con yum, utilizando el añadido yum-plugin-changelog:

# yum install yum-plugin-changelog
[...]
---> Package yum-plugin-changelog.noarch 0:1.1.31-45.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================================================================================================================================================
 Package                                                                          Arch                                                               Version                                                                   Repository                                                                      Size
====================================================================================================================================================================================================================================================================================================================
Installing:
 yum-plugin-changelog                                                             noarch                                                             1.1.31-45.el7                                                             rhel-7-server-rpms                                                              33 k

Transaction Summary
====================================================================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 33 k
Installed size: 40 k
[...]
Transaction test succeeded
Running transaction
  Installing : yum-plugin-changelog-1.1.31-45.el7.noarch                                                                                                                                                                                                                                                        1/1 
  Verifying  : yum-plugin-changelog-1.1.31-45.el7.noarch                                                                                                                                                                                                                                                        1/1 

Installed:
  yum-plugin-changelog.noarch 0:1.1.31-45.el7                                                                                                                                                                                                                                                                       
Complete!

Una vez, instalado, la sintaxis es la siguiente:

[[email protected] ~]# yum changelog openssh
Loaded plugins: changelog, langpacks, product-id, search-disabled-repos, subscription-manager

Listing all changelogs

==================== Installed Packages ====================
openssh-6.6.1p1-22.el7.x86_64            installed
* Fri Sep 25 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-22 + 0.9.3-9
- Use the correct constant for glob limits (#1160377)

* Thu Sep 24 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-21 + 0.9.3-9
- Extend memory limit for remote glob in sftp acc. to stat limit (#1160377)

* Thu Sep 24 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-20 + 0.9.3-9
- Fix vulnerabilities published with openssh-7.0 (#1265807)
 - Privilege separation weakness related to PAM support
 - Use-after-free bug related to PAM support

* Thu Sep 24 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-19 + 0.9.3-9
- Increase limit of files for glob match in sftp to 8192 (#1160377)

* Tue Aug 18 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-18 + 0.9.3-9
- Add GSSAPIKexAlgorithms option for server and client application (#1253062)

* Wed Jul 29 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-17 + 0.9.3-9
- Security fixes released with openssh-6.9 (CVE-2015-5352) (#1247864)
 - XSECURITY restrictions bypass under certain conditions in ssh(1) (#1238231)
 - weakness of agent locking (ssh-add -x) to password guessing (#1238238)

* Mon Jul 27 14:00:00 2015 Jakub Jelen <[email protected]> 6.6.1p1-16 + 0.9.3-9
- only query each keyboard-interactive device once (CVE-2015-5600) (#1245971)

También se pueden establecer filtros de búsqueda, como un rango de fechas concreto. Ejemplos extraídos de la página man:

# yum changelog 2008-Jan yum\*
Listing changelogs since: 2008-01-18
yum-versionlock-1.1.11-1.fc8.noarch installed
* Wed Jan 30 17:00:00 2008 Tim Lauridsen <[email protected]>
- mark as 1.1.11

changelog stats. 33 pkgs, 12 source pkgs, 1 changelog

# yum update ktechlab --changelog
Loading "changelog" plugin
Setting up Update Process
Setting up repositories
[..]
Resolving Dependencies
[...]
Changes in packages about to be updated:

ktechlab - 0.3-6.i386
* Wed Nov 22 23:00:00 2006 Chitlesh Goorah - 0.3-6
- Rebuilt due to new gpsim-devel release

by Alex at April 30, 2018 05:00 PM

April 29, 2018

www.rootzilopochtli.com

FLISoL 2018 – La fiesta del software libre

Compartir el conocimiento es generar riqueza intelectual – Richard Stallman

Hace unos días tuve el agrado de presentarme una vez más, en el mayor evento de difusión del Software Libre: El Festival Latinoamericano de Instalación de Software Libre (FLISoL). En esta edición, me invitaron al Centro Cultural “El Rule” y a la Fes Acatlán:

En donde presente mi plática sobre la 3a Ley del SysAdmin (Automatización) además de un taller de Administración de Sistemas y otro más de SELinux.

Pueden descargar ambas presentaciones aquí:

Las fotos del evento las pueden checar en est post del facebook del blog: FLISoL 2018.

Les dejo también el vídeo de la presentación:

Ver en Youtube

Gracias a todos los organizadores por la invitación, en especial a Wendy, Charly, Diego y Emilio, lo disfrute muchísimo!! 🙂

 

 

 

by Alex Callejas at April 29, 2018 11:37 PM

April 28, 2018

# rm-rf.es

Solaris: añadir dependencias a un servicio SMF

Service Management Facility (SMF) permite establecer dependencias entre servicios. Esto, básicamente, abre la posibilidad de establecer una serie de requisitos en el momento de iniciar un servicio.

Por ejemplo, podemos indicar que para que un servicio pueda arrancar, antes debe tener montado un determinado filesystem, o incluso verificar que un archivo de configuración existe, tiene los permisos correctos y su propietario es el indicado.

Toda esta configuración se debe especificar en el manifesto del servicio, pero en lugar de editarlo a mano, lo mejor es hacerlo a través de la utilidad propia de SMF svccfg.

En el siguiente ejemplo vamos a configurar el servicio de MySQL para añadir como dependencia el servicio NFS:

# svccfg -s svc:/application/database/mysql:version_56
svc:/application/database/mysql:version_56> 
svc:/application/database/mysql:version_56> addpg nfs_client dependency
svc:/application/database/mysql:version_56> setprop nfs_client/grouping = astring: require_all
svc:/application/database/mysql:version_56> setprop nfs_client/entities = fmri: svc:/network/nfs/client:default
svc:/application/database/mysql:version_56> setprop nfs_client/type = astring: service
svc:/application/database/mysql:version_56> setprop nfs_client/restart_on = astring: none
svc:/application/database/mysql:version_56> end

Básicamente, lo que estamos haciendo es crear agregar al servicio un nuevo grupo de propiedades llamado nfs_client y que especifica que se requiere que todo lo que contenga el grupo esté levantado antes de arrancar MySQL, en este caso el servicio svc:/network/nfs/client:default. Si en lugar de un servicio fuera por ejemplo un archivo de configuración, en lugar de astring: service especificaríamos:

# svccfg -s application/foo:default setprop config_file/entities = fmri: file://localhost/etc/nfs.conf
# svccfg -s application/foo:default setprop config_file/type = astring: path

Es cuestión de empaparse la documentación para encontrar las distintas opciones. Importante también la parte de control de reinicio restart_on. Extraído directamente de la documentación:

As shown in the following table, if the value of the restart_on attribute of the dependency is none, the dependent service is not restarted when the dependency is stopped or refreshed. If the value of the restart_on attribute of the dependency is refresh, the dependent service is always restarted when the dependency is stopped or refreshed. If the value of restart_on is error, the dependent service is only restarted if the dependency stopped because of an error. If the value of restart_on is restart, the dependent service is only restarted if the dependency was refreshed.

Once running (online or degraded), if a service cited by a require_all, require_any, or optional_all dependency is stopped or refreshed, the SMF considers why the service was stopped and the restart_on attribute of the dependency to decide whether to stop the service.

                    |  restart_on value
event              |  none  error restart refresh
-------------------+------------------------------
stop due to error  |  no    yes   yes     yes
non-error stop     |  no    no    yes     yes
refresh            |  no    no    no      yes

Una vez añadida la dependencia al servicio, se puede hacer un refresh del mismo para aplicar los cambios:

# svcadm refresh svc:/application/database/mysql:version_56

# svcprop svc:/application/database/mysql:version_56 | grep -i nfs
nfs_client/grouping astring require_all
nfs_client/entities fmri svc:/network/nfs/client:default
nfs_client/type astring service
nfs_client/restart_on astring none

by Alex at April 28, 2018 07:27 AM

April 27, 2018

joseangelfernandez.es

Storage Wars ¿cuánto pagarías por lo que hay en tu cuenta de almacenamiento?

Es increíble lo rápido que pasa el tiempo ya que un año más se ha celebrado en Madrid una nueva edición del Global Azure Bootcamp. Este año no hemos tenido un proyecto científico por detrás en el que proporcionar un poco de nuestra capacidad de computación a la causa pero hemos disfrutado de hasta cuatro tracks en paralelo de sesiones durante el pasado fin de semana.

Como en otras ocasiones, Iria y yo nos animamos a presentar una sesión. Este año ha tocado volver a los fundamentos, en particular, a los fundamentos sobre el almacenamiento. Cada vez el número de servicios disponibles en Azure es mayor y muchas veces nos olvidamos de las piezas fundamentales que dan soporte al resto. Azure Storage es uno de ellos y desde su salida ha evolucionado poco a poco pero de forma constante. Si no has estado atento, seguramente te hayas perdido unos cuántos cambios; si lo has hecho, a lo mejor te ha sucedido como a nosotros, has tenido que dar un paso atrás para entender la aparente complejidad que ha alcanzado el producto.

Si eres uno de los nuestros o de nuestros clientes que se han sentido así, ya tienes disponible la sesión para verla bajo demanda.

Storage es uno de los primeros servicios disponibles en Azure desde su lanzamiento y muchas veces uno de los menos conocidos. En los últimos meses se ha incorporado cada vez más funcionalidades creando un cierto caos entre qué se puede hacer con cada tipo de almacenamiento y qué no. En esta sesión pondremos un poco de luz sobre lío y sentar las bases para optimizar tu consumo de almacenamiento en Azure.

by jafernandez at April 27, 2018 06:51 PM

April 26, 2018

RooTeando

Testing

Seguimos con el monográfico sobre programación con un nuevo audio del podcast Tomando Un Café y un artículo en el blog. En este caso, hablaremos sobre testing, desde un punto de vista mas teórico y sin enfocarlo a un lenguaje de programación. El objetivo es dar conocer las cualidades del testing y las ventajas que presenta, tanto para aquellos programadores que no lo utilizan en su flujo de trabajo como para aquellos que estan empezando ...

April 26, 2018 12:17 AM

Tomando Un Café 29: Testing

Continuamos con otro audio del monográfico de programación. A modo de introducción explicaré el concepto de Testing, ventajas y porque es recomendable utilizarlo, también se mostrara diversos tipo de test que podemos aplicar a nuestros desarrollo.

Música: Blue Dot Sessions- Aeronaut- The Zeppelin http://freemusicarchive.org/music

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython
Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss ...

April 26, 2018 12:13 AM

April 20, 2018

# rm-rf.es

Resetear servidor de Oracle VM que ha quedado en estado inconsistente

No será la primera vez, ni desgraciadamente la última, en la que nos encontremos que un servidor de Oracle VM que está registrado en Oracle VM Manager y que forma parte de un pool, con sus respectivas configuraciones, queda en un estado inconsistente o “huerfano“. Esto sucede cuando por ejemplo se elimina en Oracle VM Manager una configuración que hace referencia a ese servidor cuando este estaba inaccesible. Esto crea una inconsistencia entre la base de datos local que guarda el hipervisor con su agente (ovs-agent) y la que tiene el VM  Manager.

A partir de la versión 2.3 (si no me equivoco) Oracle pone a nuestra disposición un script, cleanup.py, que se encarga de limpiar la base de datos local de ovs-agent:

/opt/ovs-agent-2.3/utils/cleanup.py

Hace lo siguiente:

  • Para el servicio OCFS2 cluster  (o2cb) heartbeat.
  • Pone offline el servicio OCFS2 cluster (o2cb).
  • Elimina la configuración de o2cb.
  • Desmonta cualquier repo gestionado por el agente ovs-agent.
  • Limpia la base de datos local de ovs-agent.

Ejemplo de ejecución:

# /opt/ovs-agent-2.3/utils/cleanup.py

This is a cleanup script for ovs-agent.
It will try to do the following:

*) stop o2cb heartbeat
*) offline o2cb
*) remove o2cb configuration file
*) umount ovs-agent storage repositories
*) cleanup ovs-agent local database

Would you like to continue? [y/N] 

Si tenéis versiones inferiores a la 2.3. Podéis copiar el script de una versión superior y ejecutarlo, debería funcionar igual. Sino, siempre podéis ejecutar a mano estos pasos:

# service ovs-agent stop
# rm /etc/ovs-agent/db
# > /etc/ocfs2/cluster.conf
# service ovs-agent start

by Alex at April 20, 2018 08:37 PM

CloudAdmins.org

Integración continua de infraestructura: Terraform & ONE

ScreenLa Infraestructura como Código (IaC) se está convirtiendo en uno de los elementos clave de los equipos Agile, ya que permite que la infraestructura ya no sea el cuello de botella dentro de nuestro pipeline CI/CD.

Una de las herramientas que se puede utilizar es terraform. Esta aplicación permite codificar la infraestructura según las necesidades del servicio y hacerlo de manera agnóstica al entorno cloud donde se ejecute. Por ello, la IaC nos puede ayudar a agilizar la creación y mantenimiento de infraestructuras de forma automatizada.

Dentro de la comunidad de la plataforma abierta de computación en la nube,  OpenNebula, Runtastic ha desarrollado un provider de OpenNebula para terraform, aprovechando la API OpenNebula XML/RPC. Este proveedor permite crear los principales recursos de OpenNebula, como una máquina virtual, un template, una red virtual o una imagen de disco.

En el siguiente tutorial, se detalla como instalar la herramienta i utilizarla con OpenNebula para desplegar un clúster de Kubernetes sobre Docker de forma totalmente automatizada con Terraform y Ansible.

Por último, recordaros que el próximo 24 de mayo, vuelve el “OpenNebula TechDay“,  a Barcelona que constará de un taller práctico donde se presentará esta plataforma, y se procederá a su instalación y se mostrará su funcionamiento y sus utilidades.

Ya podéis registraros al evento en el siguiente enlace! Y en breve tendréis también disponible la Agenda para la Jornada.

Tutorial

Deploying a Kubernetes Cluster to ONE with Ansible and Terraform

 Installing Terraform

To install Terraform, find the appropriate package for your system and download it

$ curl -O https://releases.hashicorp.com/terraform/0.11.4/terraform_0.11.4_linux_amd64.zip

After downloading Terraform, unzip the package

$ sudo mkdir /bin/terraform
$ sudo unzip terraform_0.11.4_linux_amd64.zip -d /bin/terraform

After installing Terraform, verify the installation worked by opening a new terminal session and checking that terraform is available.

$ export PATH=$PATH:/bin/terraform
$ terraform --version

Installing Terraform provider Opennebula

You need to install go first: https://golang.org/doc/install

Install Prerequisites
$ sudo apt install bzr

Use the wget command and the link from Go to download the tarball:

$ wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz

The installation of Go consists of extracting the tarball into the /usr/local

 

$ sudo tar -C /usr/local -xvzf  go1.10.linux-amd64.tar.gz 

We will call our workspace directory projects, but you can name it anything you would like. The `-p` flag for the `mkdir` command will create the appropriate directory tree

$ mkdir -p ~/projects/{bin,pkg,src}

To execute Go like any other command, we need to append its install location to the $PATH variable.

$ export PATH=$PATH:/usr/local/go/bin

Additionally, define the GOPATH and GOBIN Go environment variables:

$ export GOBIN="$HOME/projects/bin"
$ export GOPATH="$HOME/projects/src"

After go is installed and set up, just type:

$ go get github.com/runtastic/terraform-provider-opennebula
$ go install github.com/runtastic/terraform-provider-opennebula
Optional post-installation Step

Copy your terraform-provider-opennebula binary in a folder, like /usr/local/bin, and write this in ~/.terraformrc:

$ sudo cp ~/projects/bin/terraform-provider-opennebula /usr/local/bin/terraform-provider-opennebula

Example for /usr/local/bin:

providers {
  opennebula = "/usr/local/bin/terraform-provider-opennebula"
}
Install Ansible

We can add the Ansible PPA by typing the following command:

$ sudo apt-add-repository ppa:ansible/ansible

Next, we need to refresh our system’s package index so that it is aware of the packages available in the PPA. Afterwards, we can install the software:

$ sudo apt-get update
$ sudo apt-get install ansible

Deploy a Kubernetes cluster

Terraform code is written in a language called HCL in files with the extension “.tf”. It is a declarative language, so your goal is to describe the infrastructure you want, and Terraform will figure out how to create it. This repository provide an Ansible playbook to Build a Kubernetes cluster with kubeadm. The goal is easily install a Kubernetes cluster on machines running CentOS 7. 

$ git clone https://github.com/mangelft/terransible-kubernetes-cluster.git

First, initialize Terraform for your project. This will read your configuration files and install the plugins for your provider:

$ terraform init

In a terminal, go into the folder where you created main.tf, and run the terraform plan command:

The plan command lets you see what Terraform will do before actually doing it. To actually create the instance, run the terraform apply command:

You can access Dashboard using the kubectl command-line tool by running the following command:

$ kubectl proxy --address $MASTER_IP --accept-hosts='^*$'

The last step is to complete the cluster life cycle by removing your resources, do: terraform destroy

 Fuente: https://github.com/mangelft/terransible-kubernetes-cluster

Buen vuelo!

by Miguel Angel Flores at April 20, 2018 02:36 PM

April 19, 2018

RooTeando

Tomando Un Café 28: Explicaciones

Trataré el tema de una buenas explicaciones en una formación,  la importancia que tienen tanto para el formador como la formación.

Música: Yung Kartz- April 2018-25. Bail Out
http://freemusicarchive.org/music/Yung_Kartz/April_2018/Bail_Out

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython
Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss
Blog(post y podcast)  https://rooteando.com/feed/
Whooshkaa   ...

April 19, 2018 01:50 AM

April 15, 2018

# rm-rf.es

Activar JMX en Weblogic

Una entrada rápida. Habilitar las Java Management Extensions (JMX) simplemente requiere añadir la configuración correspondiente al archivo setDomainEnv.sh, disponible en el directorio bin/ del dominio, que como sabréis, contiene gran parte de la configuración y parámetros de arranque de Weblogic. En la mayoría de casos, esta configuración ya viene preestablecida y comentada, por lo que sólo se require revisar la instancia a la que queremos activarla y reiniciar el servicio:

## Enable JMX for monitoring purpose
#if [ "${SERVER_NAME}" != "AdminServer" ] ; then
#   JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Djava.rmi.server.hostname=INSTANCE-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
#   export JAVA_OPTIONS
#fi
[...]

Descomentad, sustituid INSTANCE por el nombre de la instancia, reiniciad la instancia y ya estará escuchando en el puerto TCP correspondiente. Para acceder a JMX desde jConsole, echad un ojo a este otro artículo: Como conectar de forma remota a jconsole.

by Alex at April 15, 2018 03:35 PM

April 12, 2018

# rm-rf.es

Oracle VM manager: tabla OVM_STATISTIC y su crecimiento descontrolado

En instalaciones de Oracle VM, la tabla que almacena las estadísticas de Oracle OVM Manager suele crecer de forma descontrolada. Si no se toma ninguna acción al respecto, termina con toda probabilidad (si no está bien monitorizado) provocando el llenado del filesystem /u01.

[[email protected] ovs]# ls -ltrh | grep -i stat
-rw-rw----. 1 oracle dba  13K Jul 11  2016 OVM_STATISTIC.frm
-rw-rw----. 1 oracle dba 8.4K Jul 11  2016 Mgr_StatisticManager.frm
-rw-rw----. 1 oracle dba 8.4K Jul 11  2016 Mgr_StatsIntervalAdjusterTask.frm
-rw-rw----. 1 oracle dba  96K Apr 11 02:07 Mgr_StatisticManager.ibd
-rw-rw----. 1 oracle dba  96K Apr 11 02:07 Mgr_StatsIntervalAdjusterTask.ibd
-rw-rw----. 1 oracle dba  27G Apr 11 02:27 OVM_STATISTIC.ibd

Si no tienes demasiado apego a estas estadísticas (como la mayoría, supongo), puedes tranquilamente truncar la tabla y esperar a que vuelva a llenarse (o crear un script vía crontab que lo haga periódicamente por ti). Este problema (¡o feature!) tiene lugar en instalaciones de OVMM bajo MySQL así que para truncar la tabla, accederemos a la shell de MySQL, base de datos ovs y ejecutaremos el truncado:

[[email protected] ovs]# mysql ovs -u ovs -p -S /u01/app/oracle/mysql/data/mysqld.sock
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3201
Server version: 5.6.27-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)
 
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>
 
mysql> use ovs
Database changed
mysql>  truncate table OVM_STATISTIC;
Query OK, 0 rows affected (1.03 sec)
 
mysql>

Y solucionado.

by Alex at April 12, 2018 06:46 PM

April 11, 2018

# rm-rf.es

rsync: sincronizar únicamente estructura de directorios

Rsync permite copiar o sincronizar la estructura de directorios de un path sin necesidad de copiar ningún fichero de esos directorios.

En el caso de querer copiar de una ruta local a remoto la sintaxis del comando es la siguiente:

$ rsync -av -f"+ */" -f"- *" /ruta/local/ [email protected]:/ruta/remota/

A tener en cuenta los siguientes parámetros:

-a: modo archive ( -a, –archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v: modo verbose
-f"+ */" -f"- *": copiar todos los directorios y nada más.

Si fuera una copia local:

$ rsync -av -f"+ */" -f"- *" /ruta/origen/ /ruta/destino/

by Alex at April 11, 2018 03:15 PM

April 10, 2018

# rm-rf.es

Configurar Keepalived en modo Unicast en lugar de Multicast

Por defecto, Keepalived siempre funciona en modo multicast, es decir, un emisor (Master) envía un mensaje VRRP y son uno o varios los receptores (Backups/Slaves) que reciben el mismo. Como si fuera una conferencia, una comunicación de uno a varios.

En el caso de que nos encontremos en una infraestructura de red que no permita la comunicación Multicast, será necesario hacer el cambio a Unicast, de modo que la comunicación entre nodos sea de uno a uno y directa.

Importante indicar que Keepalived permite establecer el tráfico VRRP por Unicast a partir de la versión 1.2.8 (es vieja ya, así que no debería ser problema).

Ejemplo de comunicación VRRP por multicast:

15:45:20.455857 IP 192.168.33.183 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 50, prio 100, authtype simple, intvl 3s, length 28
15:45:23.460853 IP 192.168.33.183 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 50, prio 100, authtype simple, intvl 3s, length 28
15:45:26.465665 IP 192.168.33.183 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 50, prio 100, authtype simple, intvl 3s, length 28
15:45:29.460852 IP 192.168.33.183 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 50, prio 100, authtype simple, intvl 3s, length 28

Para pasar a Unicast, es necesario especificar en cada uno de los nodos de keepalived, quien es el PEER con el que se va a comunicar. En un entorno de dos nodos (Master/Backup), es sencillo, pues se comunicarán el único con el otro. Estableceremos la configuración dentro del bloque VRRP correspondiente

Nodo 1:

vrrp_instance foo {
   interface eth0
 
   state MASTER           
   virtual_router_id 10
   priority 50
 
   unicast_src_ip 10.0.0.200   
   unicast_peer {              
     10.0.0.100
   }
 
   virtual_ipaddress {    
     10.0.0.5 dev eth0
   }
 }

Nodo 2:

vrrp_instance foo {
   interface eth0
 
   state BACKUP
   virtual_router_id 10
   priority 100
 
   unicast_src_ip 10.0.0.100   
   unicast_peer {              
     10.0.0.200
   }
 
   virtual_ipaddress {    
     10.0.0.5 dev eth0
   }
 }

Como veis, es tan sencillo como especificar:

  • unicast_src_ip: IP/interfaz del nodo por la que se transimitirá el tráfico Unicast
  • unicast_peer: IP del Peer

Tras reiniciar Keepalived en ambos nodos, si analizamos el tráfico de red veremos que ya no hay tráfico Multicast para VRRP:

# tcpdump -vvv -n -i eth0 host 224.0.0.18

by Alex at April 10, 2018 08:03 PM

April 06, 2018

# rm-rf.es

Verificar datos de un CSR (Certificate Signing Request) con OpenSSL

Un CSR contiene información cifrada a partir de la cual se genera un certificado SSL. Entre esta información se encuentran datos como el common name del certificado (dominio), el nombre de la empresa que lo va a adquirir, su localización, dirección de correo electrónico, etc. Hay diversas formas de generarlo, por ejemplo como vimos en su día con OpenSSL o keytool.

Existen sitios web que permiten realizar la verificación de los datos del certificado online, básicamente para confirmar que los datos introducidos son los correctos y que el CSR está listo para enviar a la entidad certificadora. Evidentemente, cuanta menos información se manipule a través de Internet, y más de este tipo, mucho mejor. Para ello, lo lógico es no recurrir a estos sitios web y hacer la comprobación directamente en local con OpenSSL.

La sintaxis es sencilla:

$ openssl req -text -noout -verify -in server.csr

server.csr hace referencia al CSR a verificar. La salida del comando es similar a lo que veis a continuación:

$ openssl req -text -noout -verify -in server.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=ES, ST=Madrid, L=Madrid, O=Foo organization, OU=IT Department, CN=foo.bar.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ec:e4:e7:2a:c5:ce:0b:1f:6c:e3:cd:5d:7f:0c:
 [...]
                    dd:49:18:43:27:ae:2f:ab:70:68:eb:34:2d:3a:cf:
                    e4:97:21:ac:d0:77:53:82:bd:22:60:7c:56:7e:00:
                    fc:4b
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Subject Key Identifier: 
                63:9F:D3:B6:81:65:EC:95:01:DE:E6:1B:78:DC:7F:02:CB:49:F7:F5
    Signature Algorithm: sha256WithRSAEncryption
         e6:b1:bd:4d:62:06:af:90:88:ec:99:37:ed:a8:b2:e9:9a:6d:
 [...]

by Alex at April 06, 2018 09:10 PM

April 05, 2018

Entre Dev Y Ops

Podcast 38: Ciberseguridad con Alex Soler, CTO de Ackcent

En este episodio entrevistamos a Alex Soler, CTO de Ackcent, para que nos ponga al día sobre seguridad.

April 05, 2018 07:40 PM

# rm-rf.es

qemu-img: verificar la consistencia de una imagen qcow2″, “qed”, “vdi”

qemu-img es una utilidad de QEMU (emulador de procesadores basado en la traducción dinámica de binarios) que permite trabajar con imágenes de disco.

En caso de cualquier problema de corrupción con la imagen, esta utilidad permite analizar el estado y consistencia de la imagen y, en caso de problemas, intentar solucionarlos. Los formatos compatibles de imagen con esta utilidad son “qcow2“, “qed” y “vdi“.

El parámetro check all analizará el estado de la imagen:

   check [-f fmt] [-r [leaks | all]] filename
       Perform a consistency check on the disk image filename.
       If "-r" is specified, qemu-img tries to repair any inconsistencies
       found during the check. "-r leaks" repairs only cluster leaks,
       whereas "-r all" fixes all kinds of errors, with a higher risk of
       choosing the wrong fix or hiding corruption that has already
       occurred.
       Only the formats "qcow2", "qed" and "vdi" support consistency
       checks.
# qemu-img check all diskimage
No errors were found on the image.
Image end offset: 12582912

En caso de problemas, si utilizamos el parámetro -r, la heramienta intentará reparar los problemas encontrados:

# qemu-img check -r all diskimage
No errors were found on the image.
Image end offset: 12582912

by Alex at April 05, 2018 06:21 PM

RooTeando

Tomando Un Café 27: Sustitutos para mi Rasspberry Pi 2

En este audio comento mi busqueda para sustituir mi Raspberry Pi 2, las causas y las opciones que he escogido.
Odroid HC1: http://bit.ly/2q8vaJi
Rock64: http://bit.ly/2GBYfmP

Música: Scott Holmes-Music for TV and Film Vol1-12 Back On The Road Again http://freemusicarchive.org

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython
Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss ...

April 05, 2018 12:35 AM

April 04, 2018

# rm-rf.es

Arranque automático de dominio e instancias de Glassfish en Solaris

A través de la utilidad administrativa de Glassfish asadmin, es posible configurar el arranque automático tanto del dominio como de las diferentes instancias que maneja. El resultado final es la integración total de Glassfish en Solaris Service Management Facility (SMF).

El comando de asadmin que utilizaremos es create-service, tanto para el dominio con las instancias (con diferentes parámetros). Hay que tener en cuenta que si Glassfish se ejecuta usando un usuario sin privilegios (lo habitual), no tendrá permisos para crear o modificar servicios de SMF. Os explicaré como hacerlo como root y después dar el cambiazo.

Arranque automático de dominio

Como root, ejecutaremos la utilidad asadmin, disponible en el directorio bin/ de nuestra instalación de Glassfish con el subcomando create-service:

[email protected]:/opt/oracle/glassfish3/bin# ./asadmin
Use "exit" to exit and "help" for online help.
asadmin> 
asadmin> 
asadmin> create-service
The Service was created successfully. Here are the details:
Name of the service:application/GlassFish/domain1
Type of the service:Domain
Configuration location of the service:/opt/oracle/glassfish3/glassfish/domains
Manifest file location on the system:/var/svc/manifest/application/GlassFish/domain1_opt_oracle_glassfish3_glassfish_domains/Domain-service-smf.xml.
You have created the service but you need to start it yourself.  Here are the most typical Solaris commands of interest:

* /usr/bin/svcs  -a | grep domain1  // status
* /usr/sbin/svcadm enable domain1 // start
* /usr/sbin/svcadm disable domain1 // stop
* /usr/sbin/svccfg delete domain1 // uninstall
For your convenience this message has also been saved to this file: /opt/oracle/glassfish3/glassfish/domains/domain1/PlatformServices.log
Command create-service executed successfully.

Con esto ya tenemos el servicio creado, pero se ejecuta como root. El siguiente comando modifica el servicio para que corra con nuestro usuario dedicado “foo”:

[email protected]:/opt/oracle/glassfish3/bin# svccfg -s svc:/application/GlassFish/domain1:default setprop start/user = astring: foo
[email protected]:/opt/oracle/glassfish3/bin# svcadm refresh  svc:/application/GlassFish/domain1:default

Una vez realizado el cambio, ya se puede arrancar el servicio:

[email protected]:/opt/oracle/glassfish3/bin# svcadm disable svc:/application/GlassFish/domain1:default
[email protected]:/opt/oracle/glassfish3/bin# svcadm enable svc:/application/GlassFish/domain1:default

Arranque automático de instancias

El proceso es el mismo que para el dominio, pero en este caso pasando a create-service el nombre de la instancia. Ejemplo para la instancia glassfish01:

asadmin> create-service glassfish01 
The Service was created successfully. Here are the details:
Name of the service:application/GlassFish/glassfish01
Type of the service:Instance
Configuration location of the service:/opt/oracle/glassfish3/glassfish/nodes/localhost-domain1
Manifest file location on the system:/var/svc/manifest/application/GlassFish/glassfish01_opt_oracle_glassfish3_glassfish_nodes_localhost-domain1/Domain-service-smf.xml.
You have created the service but you need to start it yourself.  Here are the most typical Solaris commands of interest:

* /usr/bin/svcs  -a | grep glassfish01  // status
* /usr/sbin/svcadm enable glassfish01 // start
* /usr/sbin/svcadm disable glassfish01 // stop
* /usr/sbin/svccfg delete glassfish01 // uninstall
For your convenience this message has also been saved to this file: /opt/oracle/glassfish3/glassfish/nodes/localhost-domain1/glassfish01/PlatformServices.log
Command create-service executed successfully.

Y lo mismo, modificamos el usuario de ejecución para que no sea root:

svccfg -s svc:/application/GlassFish/glassfish01:default setprop start/user = astring: foo
svcadm refresh  svc:/application/GlassFish/glassfish01
svcadm disable svc:/application/GlassFish/glassfish01
svcadm enable svc:/application/GlassFish/glassfish01

by Alex at April 04, 2018 06:07 PM

April 03, 2018

www.rootzilopochtli.com

#MeetArmy – Cómo monitorear recursos sin morir en el intento

You know, there are 20 million guys out of work in Manhattan alone just waiting for my job and yours too | Tu sabes, hay 20 millones de hombres sin trabajo en Manhattan solo esperando mi trabajo y el tuyo también – Detective Robert Thorn (Soylent Green – 1973)

El pasado 12  y 28 de Marzo tuve la fortuna de poder presentar la plática Cómo monitorear recursos sin morir en el intento durante el #MeetupArmy y el Meetup de GDG UNAM. Muchas gracias a ambos por la oportunidad!!

Durante la plática, les conté algunas experiencias en cuanto al monitoreo de recursos y las herramientas más comúnes y básicas para estas actividades.

También les presenté el video basado en la película Soylent Green:

Ver en YouTube

Les dejo la presentación aquí.

Espero les sirva…

by Alex Callejas at April 03, 2018 05:50 PM

April 02, 2018

Ruben J Garcia

Cucumber REST Steps – BDD for your REST API

I like using Cucumber to do BDD Testing. Even when I have to test a REST API I use it, so I’ve created a library to do it: Cucumber REST Steps

Cucumber REST Steps in action

First of all, you need to add it to your pom.xml

<dependency>
  <groupId>es.rubenjgarcia</groupId>
  <artifactId>cucumber-rest-steps</artifactId>
  <version>1.0.0</version>
  <scope>test</scope>
</dependency>

Now, let’s create a Test Case class to add the steps

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(glue = {"es.rubenjgarcia.cucumber.rest.steps"}, features = "classpath:features")
public class CucumberTestCase {

}

You are ready to use the steps. Let’s see a couple of examples

Scenario: Empty response
  Given I call GET "http://localhost:8080"
  Then The response status should be 200
  And The response is empty

Easy, isn’t it?

Let’s see how you can verify the response

Scenario: With data
  Given I call POST "http://localhost:8080/withData" with data:
  """
    test: "test"
  """
  Then The response status should be 200
  And The response should be:
  """
    foo: "bar"
  """
  And The response should contain "foo"
  And The response should contain "foo" with value "bar"
  And The response should not contain "foo" with value "wee"
  And The response should not contain "bar"

If you want to verify complex objects, you can

Scenario: With array
  Given I call GET "http://localhost:8080/withArray"
  Then The response status should be 200
  And The response should contain array with size 3
  And The response should contain 3 entities
  And The response should contain at least 2 entity
  And The response should contain at most 4 entities
  And The response should contain more than 2 entities
  And The response should contain less than 4 entities
  And The response should be array:
  """
    - foo: "bar"
    - foo: 3
    - foos:
      - bar
      - wee
  """
  And Response entity "[0]" should contain "foo"
  And Response entity "[0]" should not contain "bar"
  And Response entity "[0]" should contain "foo" with value "bar"
  And Response entity "[0]" should not contain "foo" with value "wee"
  And Response entity "[2].foos" should contain array:
  """
    - bar
    - wee
  """
  And Response entity "[2].foos" should contain 2 entities
  And Response entity "[2].foos" should contain at least 1 entity
  And Response entity "[2].foos" should contain at most 3 entities
  And Response entity "[2].foos" should contain more than 1 entities
  And Response entity "[2].foos" should contain less than 3 entities

Find out more steps and examples in the official repository

The post Cucumber REST Steps – BDD for your REST API appeared first on Ruben J Garcia.

by Ruben Garcia at April 02, 2018 10:27 AM

March 30, 2018

Entre Dev Y Ops

Colaboración 1: Open Source Leadership Summit por José Miguel Parrella (@bureado)

Estrenamos nuevo formato, colaboraciones, y empezamos con una de José Miguel Parrella (@bureado) en la que nos explica el evento Open Source Leadership Summit 2018 (OSLS).

March 30, 2018 06:15 PM

www.sysadmin.org.mx

Reducción de latencia en arquitecturas híbridas con Amazon ElastiCache

El articulo es un aporte al AWS Database Blog y explica como utilizar Amazon ElastiCache para reducir la latencia en arquitecturas híbridas. Está en ingles y lo pueden leer en la siguiente dirección https://aws.amazon.com/blogs/database/latency-reduction-of-hybrid-architectures-with-amazon-elasticache/

by angel at March 30, 2018 01:39 AM

March 28, 2018

# rm-rf.es

Truco Gmail: encontrar adjuntos de mayor tamaño

El espacio que ofrece Gmail suele ser suficiente en la mayoría de los casos, y rara vez se requiere hacer limpieza de correos para liberar espacio. El problema viene cuando comienzas a utilizar otros servicios de Google, como Google Drive, entonces la cosa puede comenzar a complicarse.

Una forma rápida y eficiente de liberar espacio en Gmail es localizar los correos con adjuntos de mayor tamaño, pues los correos sin adjuntos no suelen ocupar demasiado. Gmail, al igual que Google, tiene bastantes opciones de búsqueda avanzadas, entre ellas se encuentra la de localizar los correos con un tamaño superior a lo indicado.

size:tamaño

El tamaño se especifica en bytes, así que para encontrar correos con tamaño superior a 5 megas:

size:5000000

Y solucionado, el resultado será los correos de más de 5MB.

gmail_attachments

by Alex at March 28, 2018 05:10 PM

March 27, 2018

RooTeando

Tomando Un Café 26: Diferencias entre un programador y un formador.

En este audio explico las diferencias, y una semejanza, entre un programador y un formador, mediante un lista de 5 puntos.
Semejanza.
Un buen programador requiere tiempo y esfuerzo, un buen formador requiere tiempo y esfuerzo.

La lista con las diferencias.
1. Un programador desarrolla código, un formador explica como desarrollar código.
2. Un programador desarrolla código para otros, un formador debe conseguir que otros desarrollen código.
3. La calidad de un programador se mide ...

March 27, 2018 01:51 AM

March 24, 2018

# rm-rf.es

Importar un certificado x509 (.crt .cer .der) y su clave privada en un keystore

Para importar un certificado x.509 (.crt .cer .der) y su clave privada en un keystore de java, previamente es necesario convertir el certificado y su clave privada en un archivo PKCS12. Una vez realizado, keytool de java ya nos permite importar el PKCS12 en un keystore.

Convertir clave privada y certificado a formato PKCS12

Utilizaremos openssl para hacer la conversión:

$ openssl pkcs12 -export -out foo.pfx -inkey foo.key -in foo.crt -name foo
  • foo.pfx: fichero PKCS12 de destino
  • foo.key: clave privada en formato X509
  • foo.crt: certificado en formato X509
  • foo: alias del certificado

Importar archivo PKCS12 en un keystore

Una vez que tenemos el archivo pfx, ya podemos utilizar la herramienta keytool para importar el certificado en un keystore:

$ keytool -importkeystore -deststorepass password -destkeypass password \
  -destkeystore keystore.jks -srckeystore /tmp/foo.pfx \
  -srcstoretype PKCS12 -srcstorepass password -alias foo
  • deststorepass: contraseña del keystore de destino
  • destkeypass: contraseña a asignar a la private key en el keystore
  • destkeystore: ruta al keystore
  • srckeystore: ruta al archivo PKCS12
  • srcstorepass: contraseña del archivo PKCS12 (especificada en el paso anterior)
  • alias: alias del certificado (especificado en el paso anterior)

by Alex at March 24, 2018 10:22 AM

March 23, 2018

UnLugarEnElMundo

Bootstrap 4. Primeros pasos

icono de php Bootstrap es una colección de elementos, plantillas y componentes HTML, CSS y Javascript para crear rápidamente páginas web con un aspecto moderno y “responsivo” (¡menudo palabro!) al tamaño de pantalla de cualquier dispositivo. Su versión 4 se liberó hace un par de meses y aporta algunos cambios significativos como, por ejemplo, la inclusión de Popper como librería javascript para “tooltips” y otros elementos emergentes y la eliminación de las tipografías Glyphicons para introducir símbolos y pictogramas.

Podemos trabajar con Bootstrap bien descargandonosla en nuestro propio servidor web, o bien usando sus librerías directamente desde los CDN que nos ofrecen. Aquí usaremos este segundo método por sus evidentes ventajas de cara a montar una primera plantilla para pruebas. Necesitamos incluir simplemente el siguiente tag en :

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />

Si vamos a usar los elementos javascript necesitamos incluir también las librerías correspondientes y, ademas, las de jquery y popper en nuestro proyecto las cuales también tienen disponible la posibilidad de enlazarlas directamente sin necesidad de descargarlas en local:

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.1/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

IMPORTANTE: los enlaces anteriores corresponden a las versiones estables más recientes en el momento de escribir esto. No suelen eliminar las versiones anteriores, pero conviene que te cerciores si llegas a este texto en un futuro lejano.

Con todo esto, la plantilla mínima de HTML para empezar a trabajar (incluyendo los enlaces correspondientes a las librerías javascript comentados) sería esta:

<!DOCTYPE html>
<html lang="es">
    <head>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />
    	<title>Plantilla Bootstrap</title>
  	</head>
  	<body>
		<h1>Plantilla Bootstrap</h1>

    
		<!-- Javascript opcional -->
		<!-- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    	     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.1/umd/popper.min.js"></script>
    	     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> -->
  	</body>
</html>

Sosa, verdad? Claro, aún no hemos empezado a trabajar… Si quieres ver algo más impactante, bootstrap dispone de plantillas con algo mas de chicha para tus diseños. Las tienes disponibles en este enlace. Si prefieres empezar desde cero, tienes disponible un montón de La documentación bastante fácil de seguir que incluye multitud de ejemplos prácticos para empezar a trabajar desde el primer minuto.

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: Bootstrap 4. Primeros pasos || Hospedado en un Cloud VPS de Gigas.

by Josemaría at March 23, 2018 12:29 PM

March 22, 2018

RooTeando

Tomando Un Café 25: Entornos virtuales y Virtualenvwrapper

En este audio explico la importancia de utilizar entornos virtuales de desarrollo para tus proyecto, como utilizar Virtualenvwrapper para gestionar estos entornos.

Nuevo proyecto, podcast @RadioDev con Daniel Primo y Joseda. En Ivoox RadioDev.

Musica: Dexter Britain-Dexter Britain-The Time To Run(Finale)http://dexterbritain.bandcamp.com

Canales de Telegram @UnDiaUnaAplicacion @UnPythonAldia @AprendePython
Correo [email protected]
Twitter https://twitter.com/Tomando_Un_Cafe

RSS
Anchor.fm  http://anchor.fm/s/18c0860/podcast/rss
Blog ...

March 22, 2018 02:09 AM

March 20, 2018

# rm-rf.es

Listar cifrados y protocolos SSL/TLS disponibles con nmap

Nmap, a través del script ssl-enum-ciphers, permite escanear un host y listar todos los algoritmos de cifrados y protocolos SSL/TLS disponibles.

El script inicia de forma secuencial conexiones SSLv3 y TLS sobre el host, utilizando cada vez un cifrado distinto con el fin de averiguar si lo soporta o no. Al final, muestra el resultado en un informe detallado por salida estándar. A continuación podéis ver un ejemplo de lo que muestra. Para más detalle visitad la página del script en el sitio web de NMAP.

[~] # nmap --script ssl-enum-ciphers -p 443 www.foo.com

Starting Nmap 7.60 ( https://nmap.org ) at 2018-03-08 15:11 CET
Stats: 0:00:44 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 60.00% done; ETC: 15:14 (0:01:09 remaining)
Nmap scan report for www.foo.com (10.0.0.4)
Host is up (0.17s latency).
rDNS record for 10.0.0.4: mail.foo.com

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   SSLv3: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_SEED_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_IDEA_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_SEED_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|     warnings: 
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher IDEA vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       CBC-mode cipher in SSLv3 (CVE-2014-3566)
|       Ciphersuite uses MD5 for message integrity
|   TLSv1.0: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_SEED_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_IDEA_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_SEED_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|     warnings: 
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher IDEA vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|   TLSv1.1: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_SEED_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_IDEA_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_SEED_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|     warnings: 
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher IDEA vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|   TLSv1.2: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_SEED_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_IDEA_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_SEED_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|     warnings: 
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher IDEA vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|_  least strength: C

Nmap done: 1 IP address (1 host up) scanned in 138.70 seconds

by Alex at March 20, 2018 05:50 PM