miércoles, 10 de agosto de 2016

Informix | Error ODBC - NS_CACHE


Error: 
En el momento del cambio de password del sistema operativo el ODBC (se cacheaba la conexión por 15 a 20 minutos) y posteriormente permitía usar la nueva contraseña en tanto el ODBC permitía usar la contraseña anterior.

Solución:
1. Editar el parámetro NS_CACHE
NS_CACHE host=0,service=0,user=0,group=0
2. Bajar y subir el motor luego del cambio
onmode -ky
oninit
Para leer al respecto: https://www.ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.adref.doc/ids_adr_1105.htm

jueves, 12 de noviembre de 2015

PuTTY | con soporte de impresión a texto y visor

ACTUALIZADO:
Actualice el codigo en github, por favor mira este link para mas información


Bien en esta oportunidad y de mucho tiempo (escribiendo en el blog), finalmente conclui la modificación del famoso PuTTY desarrollado principalmente por Simon Tatham.  Que en su versión original no tiene el soporte de impresión a texto (print to file).

Para aburrirlos un poco (Antecedentes): 

Terminales de conexión hay cientos, pero la mayoría son de pago el caso del SecureNetTerm que es el mas usado en el medio financiero también es el mas caro llegando a costar la licencia de 1 a 5 terminales (usuarios) hasta 70 dolares.

Según normativa de la ASFI vigente para entidades de intermediación financiera en la circular 193 claramente especifica  lo siguiente en el articulo 3,sección 3,capitulo II,Titulo VII del Libro 3:

Artículo 3° - (Licencias de software) Todo software utilizado por la entidad supervisada debe contar con las licencias respectivas. 

Ante esto los mismos supervisores de la ASFI omiten la supervisión de este aspecto,el uso de la terminal de conexión.

Ante esto y temiendo a una sanción o multa por incumplir el articulo decidí en el 2011 hacer uso de la herramienta PuTTY, que es gratuita (No tiene costo) tal y como indica en su web principal:

The PuTTY executables and source code are distributed under the MIT licence, which is similar in effect to the BSD licence. (This licence is Open Source certified and complies with the Debian Free Software Guidelines.)

Luego de leer mucho allá por el 2011 encontré esta implementación de puttyclip
misma que se encargaba de imprimir las salidas convencionales a impresora al ClipBoard haciendo uso del API propia del sistema operativo. 
Basto aplicar el patch a src de putty 0.60 para que todo funcione compilando con Cygwin esta implementación trabaja bien y hasta ahora lo hace, pero con el tiempo paso a estar en segundo plano ya que no actualicé las fuentes de putty desde la versión 0.60, ademas que había uno que otro fallo que por falta de tiempo no se corrigió en dicha versión.

También tropecé por el inconveniente de que para sacar el clipboard a texto requería un programa adicional, aquel entonces por la premura del tiempo opte por usar el tal vez no tan conocido winclip finalmente esa implementación inicial funciona bastante bien por no decir super bien (ja ja ja).

Implementación 0.65:

Un 18 de octubre de 2015 me preocupo bastante que el programa oficial ya se encuentra en la versión 0.65b mientras mi modificación estaba basada en la version 0.60, decidí comenzar el upgrade inmediatamente.

Tropecé con algunos inconvenientes, uno de ellos, las fuentes de putty entre la 0.60 y 0.65 cambiaron bastante debido a una re-organización del código fuente (Decisión del autor Simon).

Debido a esto se comenzó de cero, prácticamente tuve que reusar código de puttyclip, pero a la vez adecuarlo a la versión 0.65.

El binario de winclip me pareció exagerado dado un momento ya que podía incluirse el mismo en el putty original, entonces decidí hacer un método propio de "clipboard to file" el mismo funciona razonablemente bien y se quitó la necesidad de incluir un binario extra o adicional(que venia por separado).

Resultados obtenidos:

Como les comente a algunos colegas de trabajo, publicaré el binario de la modificación que realicé y cuando se estabilice completamente, liberaré el código que por cierto esta completamente en ANSI C (C puro para los amigos) para que compilen y modifique el programa  bajo los términos de licencia del autor original, por github en https://github.com/garysan/.

Mientras aquí el detalle de lo que tiene esta entrega:

1. Impresión a texto.


Para mejorar la impresión opté por incluir la ruta de instalación de notepad++ y obviamente si no esta instalado usa el notepad del sistema operativo.

2. Impresión a visor.

Así también como puede apreciarse en la figura del punto 1, se tiene otra opción, enviar al visor misma que se detalla a continuación, Visor es un programa desarrollado por AXON SRL. pero lamentablemente el visor requiere de otro programa llamado Agente, para funcionar así también requiere la instalación manual de otra impresora (Virtual) para enviar documentos al visor, mis pruebas con el agente prácticamente fueron frustrantes al inicio, funciona pero requiere mucha configuración y para un entorno donde se administran mas de 200 equipos y usuarios es una tarea maratonica!.

Por este motivo el visor, debe estar instalado en c:\axon\visor\ para que putty lo reconozca y envié a imprimir con este programa (Caso para las facturas).


3. Impresión de pantalla a texto.
Esta función permite sacar una especie de screenshot pero de la pantalla actual en moto texto(no imagen) muy útil en casos específicos.

4. Funciones de hotkeys:

Esto para acelerar tareas que demorarn en cambio de propiedades de la sesion actual. las hotkeys funcionan de la siguiente forma:

alt+F10 Impresión de pantalla a texto.
alt+F9 Duplicar sesión actual.

alt+F7 Cambia el modo de impresión a "Enviar a texto"
alt+F6 Cambia el modo de impresión a "Enviar a visor"
alt+F5 Restaura la impresora por defecto.

En los casos de cambio de impresora o modo de impresión se muestra un mensaje como este:

Esto con el fin de notificar y no causar inconvenientes posteriores.

5. El binario (Lo que esperaban):

Por cuestiones de seguimiento subí una versión del programa a mi DropBox en:
Comentarios y sugerencias a:

gary.gsv (Skype) o por los comentarios en este blog :D


Finalmente un vídeo de su funcionamiento:


happy hacking!!!

domingo, 20 de abril de 2014

Repositorios Debian y Ubuntu Offline |Script


Primeramente
apt-get install debmirror

Script para debian, requiere crear la estructura /home/usuario/debian/debian , /home/usuario/debian/updates
#!/bin/sh
ARQUITECTURA=amd64
METODO=http
RAMA=wheezy
RAMAS=wheezy
HOST=ftp.debian.org
HOST_SEGURIDAD=security.debian.org
DIR_MIRROR=/home/gary/debian/debian
DIR_SEGURIDAD=/home/gary/debian/updates

SECCIONES=main,contrib,non-free
SECCION=main

echo "================================================================"
echo "Actualizando los repositorios PRINCIPALES; main, contrib, non-free"
echo "================================================================"
echo ""
debmirror -a ${ARQUITECTURA} \
-s ${SECCIONES} \
-h ${HOST}/debian \
-d ${RAMA} -r / --progress \
-e ${METODO} --ignore-release-gpg --nosource \
${DIR_MIRROR}

echo "=================================================================="
echo "Actualizando repo de SEGURIDAD; main, contrib, non-free"
echo "=================================================================="
echo ""
debmirror -a ${ARQUITECTURA} \
-s ${SECCIONES} \
-h ${HOST_SEGURIDAD} \
-d ${RAMA}/updates -r /debian-security --progress \
-e ${METODO} --ignore-release-gpg --nosource \
${DIR_SEGURIDAD}


Para ubuntu de igual forma se requiere la estructura: /home/usuario/ubuntu/ubuntu

#!/bin/sh
ARQUITECTURA=amd64
METODO=http
RAMA=trusty
RAMAS=trusty
HOST=cc.archive.ubuntu.com
HOST_SEGURIDAD=cc.archive.ubuntu.com
DIR_MIRROR=/home/gary/ubuntu/ubuntu

SECCIONES=main,restricted,universe,multiverse
SECCION=main

echo "================================================================"
echo "Actualizando los repositorios PRINCIPALES                       "
echo "================================================================"
echo ""
debmirror -a ${ARQUITECTURA} \
-s ${SECCIONES} \
-h ${HOST}/ubuntu \
-d ${RAMA} -r / --progress \
-e ${METODO} --ignore-release-gpg --nosource \
${DIR_MIRROR}

Guardan los script's por separados en un archivo .sh  posteriormente corren los archivo desde una terminal, sh archivo.sh y listo!


sábado, 9 de noviembre de 2013

Cambiar JDK de NetBeans |Debian Linux

Tuve este problema al migrar de equipo ya que instalé por error el openjdk y luego el netbeans, ya luego cuando se procede a instalar el oracle-java7-jdk el netbeans aún sigue usando el openjdk incluso después de des-instalar el paquete (openjdk).
La solución es totalmente simple:
Editar el archivo /usr/local/netbeans-7.3/etc/netbeans.conf
cambiar la variable netbeans_jdkhome

De:
 netbeans_jdkhome=" /usr/lib/jvm/default-java"

a:
 netbeans_jdkhome=" /usr/lib/jvm/java-7-oracle/"

Con esto basta para usar el jdk correcto.

miércoles, 19 de junio de 2013

Fail2Ban a openfire

Sumamente Util:
En el /etc/fail2ban/jail.local
definir adicionalmente
msg = mensaje
debajo de la ultima linea del action usado insertar:
%(msg)s[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
Ejemplo:
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
              %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
                %(msg)s[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
action = %(action_mw)s
Dentro de /etc/fail2ban/action.d/ crear el archivo mensaje.conf con el siguiente contenido
# Fail2Ban configuration file
# Author: Gary Sandi Vigabriel
#
# $Revision$
#
actionstart = 
actionstop = 
actioncheck =
actionban = /usr/bin/python /home/scripts/notificar.py "correo@ejemplo.com" "El IP <ip> fue baneado despues de <failures> intentos via <name>"
actionunban = 
[Init]
name = default
dest = root
sender = fail2ban
El script  /home/scripts/notificar.py   se explica en este post
Los comentarios están para ayudarlos en lo que falte

Mensajes desde python a openfire

Previamente se debe tener instalado python-xmpp
apt-get install python-xmpp

El script debe contener lo siguiente:
import xmpp
login = 'usuario@dominio.com'
pwd   = 'clave'
persona = sys.argv[1]
mensaje = sys.argv[2]
jid = xmpp.protocol.JID(login)
cl  = xmpp.Client(jid.getDomain(), debug=[])
if cl.connect(('dominio.com',5222)):
    print "Conectado"
else:
    print "Fallo la conexion"
if cl.auth(jid.getNode(), pwd):
    cl.sendInitPresence()
    cl.send(xmpp.Message( persona ,mensaje ))
else:
    print "Fallo autentificacion"
La forma de usar el script de python es:
/usr/bin/python /home/scripts/notificar.py "usuario@ejemplo.com" "Mensaje"

viernes, 28 de diciembre de 2012

El paquete está en un estado muy malo e inconsistente - debe reinstalarlo

En caso de que Debian o Ubuntu muestre un error con algun paquete:

El paquete está en un estado muy malo e inconsistente - debe reinstalarlo

dpkg --remove --force-remove-reinstreq [paquete]

para mi caso usé:



dpkg --remove --force-remove-reinstreq firefox-mozilla-build



ñ_ñ