martes, 31 de mayo de 2016

For system admins: Know where 'they' can write ...


Have you ever feel anguished allowing untrusted users access to terminal emulation in your systems?

I was in that situation with some Docker ssh containers I shared, so I decided to know which are my writables directories in my systems for an user. I share with you my python script to report that:

https://github.com/jvillaraco/sys/blob/master/testRights.py

 Any suggestion will be welcome!

jueves, 26 de mayo de 2016

Instalación de Docker sobre Debian con personalización del interfaz docker0

De la serie manos a la obra ...

Intro

Últimamente he tenido que dar solución a una situación compleja y, de las alternativas, la mejor posicionada era el contenedor del tipo Docker. A pesar de que los servidores de explotación los tenemos sobre RHEL, utilizo algún Debian para hacer pruebas de concepto (creo que un día documentaré las razones para mantener una Debian para este tipo de pruebas por su facilidad) ...


Problema

En principio una instalación que parecía que iba a ser del tipo 'siguiente, siguiente' (si eso es realmente aplicable al mundo de la consola), se complicó (solo un poco) ya que el segmento de red donde Docker asigna la IP de las máquinas/aplicaciones que levanta COINCIDÍA con el segmento que usamos en la oficina para los PC de trabajo de la red interna, la 172.17.0.0/16 (Un post explicativo). Ya os imagináis, cuando le levanta el servicio docker se deja de ver el servidor a nivel de IP. Si le añadimos al hecho del cambio de Debian al Systemd (no sin ruido ...), hace que todas las soluciones en doc. existente no funcionara. Ahí están expuestas las razones para escribir el artículo.


Instalación

Se puede seguir la documentación del fabricante para la instalación sobre Debian:
https://docs.docker.com/engine/installation/linux/debian/

(La verdad es que hasta aquí es trivial)


Configuración

La solución pasa por modificar la red docker0 para que no sea la 172.17.0.0/16. Para ello (se ejecuta como root o mediante sudo):

Se edita el fichero /lib/systemd/system/docker.service

Se modifica la linea siguiente:
  ExecStart=/usr/bin/docker daemon -H fd://

Por la siguiente:
  ExecStart=/usr/bin/docker daemon -H fd:// --bip=192.168.133.1/24

systemctl daemon-reload

systemctl show docker --property ExecStart
  (se verifica que aparezca la opción añadida)

systemctl restart docker

docker run hello-world



Se explican los comandos utilizados:
  • La linea ExecStart del fichero /lib/systemd/system/docker.service: Como se puede deducir, corresponde a la linea executada por el Systemd en el momento de arrancar el servicio configurado.
  • El parámetro --bip de la linea ExecStart: Asigna la IP del Ethernet Bridge docker0 creado por el servicio Docker. Se puede ampliar la documentación de esta operación en el doc.: https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/.
  • systemctl daemon-reload: Recarga el system con las nuevas unidades o las modificaciones de las existentes
  • systemctl show docker --property ExecStart: Verifica la propiedad ExecStart de la unidad docker.
  • systemctl restart docker: Rearranca el servicio docker
  • docker run hello-world: Arranca un contenedor de la imagen hello-word. En el siguiente enlace encontraréis más información sobre esta imagen: https://hub.docker.com/_/hello-world/










domingo, 22 de septiembre de 2013

Codificando en Python peticiones POST de http

De la serie bocaditos de código ...

Hola, iniciamos una pequeña serie de programación python sobre la red.

En este caso os presento un pequeño procedimiento para realizar una petición POST de http e imprimir el resultado. No os voy a complicar con parseado (¿existe este palabro?) de la respuesta, ni los parámetros de llamada al programa de ejemplo, centrémonos en la rutina de la llamada.

Un requisito: para validar el funcionamiento podríamos preparar una maqueta con servidor web, cgi o equivalente. Pero casualmente, he encontrado un servicio publicado por Henry Cipolla que nos permite validar la llamada y el paso de parámetros via post, podeis encontrarlo en  http://www.posttestserver.com/ asi como su manual de instrucciones que permite verificar a posteriori los datos de las variables de entorno y los parámetros enviados al servidor.

Aquí va el código:


#!/usr/bin/python
# postExample.py Version: 1.0
#
# Execucion: python postExample.py

import urllib
import urllib2

# Constants
ADRECA = "http://www.posttestserver.com/post.php"

def requestData(par1, par2, timeout):
    query_args = {'p1':par1, 'p2':par2}
    print query_args
    encoded_args = urllib.urlencode(query_args)
    r = urllib2.urlopen(ADRECA, encoded_args, timeout)
    return r.read()

if __name__ == '__main__':
	print "Output: %s" %requestData(11, 22, 10)

lunes, 31 de diciembre de 2012

libre ERP: Use case (2nd part)


From the serie: Get down to the job

Previous part of this article: New series: libre ERP for small companies (Part 1)

We agree this the client (in fact a friend) the use case for the analysis of the libre ERP (free software). These are:
  • Party management (customers and providers)
  • Product inventory management (detailed and massive introduction)
  • Product de-activation (no removing)
  • Product retail (POS)
  • Provider purchase
  • Product reporting (screen and printing)
  • Invoice reporting (screen and printing)
  • Receipt printing

ERP libres: Casos de uso (2a Parte)

De la serie: Manos a la obra

Siguiente parte del artículo: Nueva serie: ERP libres para pequeñas empresas (1a parte)

Se han pactado con el cliente (en realidad amigo) los casos de uso sobre los que se va a realizar el análisis de los productos ERP libres. Estos van a ser los siguientes:
  • Alta/Baja de terceros (clientes y proveedores)
  • Entrada de producto en inventario (al detalle y masiva)
  • Venta de producto (TPV)
  • Baja de producto (marcado de no activo)
  • Gestión de compras de proveedores
  • Listado de todos los productos (pantalla e impresora)
  • Listado de ventas diarias (pantalla e impresora)
  • Impresión de facturas
  • Impresión de tickets de caja o recibos



viernes, 28 de diciembre de 2012

Nueva serie: ERP libres para pequeñas empresas (1a parte)

Hace algunos meses un amigo me hizo una consulta sobre la posibilidad de poder quitarse de encima el Microsoft Window$ que estaba utilizando en su pequeña tienda. En aquel comento le tuve que responder que no sabía que alternativas tenía, pero me comprometí a estudiar como podía ayudarlo. Estos últimos meses he estado un poco liado con el curso de Python en Coursera (para quien no lo conozca, el famoso MOOC) y con mis estudios de inglés (a pesar de que no se note mucho con los errores que comento en este mismo blog ;)

Voy a comenzar una serie de artículos sobre software ERP para pequeñas y medianas empresas, por supuesto, con sofware libre. El primero escogido es Tryton. No hay ninguna razón especial para escogerlo excepto que está escrito en Python por lo que, se supone, me será más fácil en el caso que me interese toquetear el código en caso de necesidad.

Manteneos conectados, mis tres o cuatro lectores.

Joan.

New series: libre ERP for small companies (Part 1)

A few months ago a friend of mine ask me to give up using Microsoft Window$ in this small shop. I had to answer I didn't know anything any software to manage his little company but I promise I find out how can I help him. This last month I've been involved in a Python course in Coursera (you know the famous MOOC) and with my English studies (although not very clear with my many mistakes in this blog ;)  

I'm going to begin working on a new series of articles about ERP software for small companies, of course with free (libre) software. The first one I've choose is Tryton. There is no special reason about why I've chosen this one except it's written in Python and it should be easer for my to hack in the case I need to.

Keep connected ...

Joan