lunes, 27 de mayo de 2013

LINUX_UNIX HELP COMMANDS parte 2

Linux-Unix Help Commands

Bueno en esta ocasión y en base a que el post pasado relacionado con comando para UNIX/LINUX fue todo un éxito, en esta ocasión les dejare unos cuanto más, aparte de algunas sugerencias que mas comandos y combinación de los mismo  son utilidades propias del sistema operativo.


Te pasa que llega la ocasión en que uno o varios File System llegan a saturarse y quieres depurar pero no sabes por donde empezar, bueno pues para esto podemos utilizar el comando du, este comando con ayuda de algunos complementos como sort nos ayuda a saber que directorios o archivos son los mas grandes, para no estar divagando entre directorios y subdirectorios, a continuación les dejo el comando que utilizo.

 - du -s * | sort -n

*este comando ordenara los directorios de menos a mayor tamaño.

Otra cosa que debemos saber cuando se lleva a cabo una administración sobre SO Linux/Unix, es que podemos crear Alias, estos son por decirlo de alguna manera comandos que se pueden almacenar en una variable la cual se carga directamente con el perfil del usuario, por ejemplo;

podemos crear un alias con el nombre de pids al cual le podemos pasar el comando 'ps -fea | grep java' (listar los procesos java con todas sus columnas) y para esto solo tenemos que crear el alias en el archivo .profile(unix) ó .bash_profiles(Linux), como a continuación se describe.

 - alias alias_name = 'command'

ejemplo:

alias was_path = 'cd /opt/IBM/WebSPhere/AppServer/'

una vez realizado el cambio debemos recargar el el perfil del usuario con;

- . .prifile ó  . .bash_profile dependiendo del SO

*En caso de no cargar de forma automáticamente volverse a firma y listo.


Con la explicación anterior solo tenemos que escribir desde la linea de comando was_profile y nos posicionara en la ruta indicada. Así podremos optimizar nuestros propios comandos y los mismos del SO.


Te ha pasado que quieres ejecutar dos comando en una sola sentencia, ya sea para que se ejecuten consecutivamente o con una condicion?

Bueno para eso utilizamos;

; - Concatena dos comando, ejecutando primero el de la izquierda seguido del de la derecha

|| - concatena dos comandos, se ejecuta el de la derecha solo si el de la izquierda falla

&& - Concatena dos comando, Se ejecuta el de la derecha si se ejecuta correctamente el la izquierda.


Buenos espero les sea de gran utilidad, no olviden dejar sus comentarios, dar LIKE y pasar la liga entre sus contactos.



miércoles, 22 de mayo de 2013

El caracter ^M en archivos Unix y Linux

El caracter ^M en archivos Unix y Linux

Con demasiada frecuencia ocurre que importamos un texto de MS-DOS a UNIX, y al editarlo con el vi (por ejemplo), sale lleno de "^M" al final de todas las líneas. Esto de los ^M ocurre porque el delimitador de línea de los ficheros de texto en DOS es CR-LF (carriage return-linefeed, o sea, retorno de carro y salto de línea), y en UNIX son simplemente LF. Así, muchas herramientas de UNIX (al menos por defecto), buscan como delimitador de línea el LF, así que al final de cada línea hay un caracter extraño (el CR).
Esto, en vi, se puede arreglar fácilmente con la orden 

 :%s/<Ctrl-V><Ctrl-M>//g
 
NOTA. Con esto me refiero a abrir el archivo con vi y ejecutar el comando anterior.  
 
Descripción del comando: El "%" sirve para que se sustituya en todas las líneas, y no sólo en la actual, la "s" para que se realice una sustitución, el Ctrl-V Ctrl-M es necesario para que el vi no se crea que estamos pulsando un ENTER (Ctrl-V sirve para insertar literales), y, por supuesto, se sustituye por nada, así que entre la segunda y la tercera barras no ponemos nada.

Por si no te gusta el vi, puedes cambiar el formato de los ficheros de texto desde la línea de órdenes, escribiendo:

 sed 's/<Ctrl-V><Ctrl-M>//' fichero-CRLF >fichero-LF
 
Si no conocías el sed (lo más probable, porque si lo conocieras ya se te habría ocurrido a ti el truco), es una herramienta bastante versátil de proceso de texto (no tanto como el perl), y no muy complicada de utilizar. 


lunes, 20 de mayo de 2013

java.lang.UnsatisfiedLinkError on Linux Fedora 17 x86_64 bits

Issue: java.lang.UnsatisfiedLinkError on Linux Fedora 17 

Buenos dias!!!!!!

Hoy le dejo la sulocion a este problema

java.lang.UnsatisfiedLinkError: Could not load SWT library

y es que este error es ocasionado cuando tratas de abrir el WebSphere MQ Explorer, realizar la instalación y configuración de Instalation Manager(El cual es necesario para instalar las ultimas versiones de los productos como MQ, Broker, WAS, Fixes, etc) en modo gráfico. Y es que este error se preseta debido a que la distribución de Linux no cuenta con la librerias adecuadas para lanzar el modo grafico de las tareas antes mencionadas:

1. ./IBMIM command - para lanzar la consola de IM.
2. ./install command - para lanzar la instalacion de IM.
3. ./strmqcfg - para lanzar MQ Explorer.

Para solucionar este problema basta con ejecutar el siguiente comando con privilegios de root.

yum install gtk2.i686 gtk2-engines.i686 PackageKit-gtk-module.i686 PackageKit-gtk-module.x86_64 libcanberra-gtk2.x86_64 libcanberra-gtk2.i686


Nota. Se utiliza YUM debido a la distribución pero podría variar de acuerdo a la misma.

Una vez realizado lo anterior deberíamos poder lanzar el modo gráfico sin ningún problema.

A continuacion el error completo:

----------------------------------------------------------------------------------------------------------------
!ENTRY org.eclipse.osgi 4 0 2013-05-13 22:57:12.833
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
        /opt/IB/InstallationManager/eclipse/configuration/org.eclipse.osgi/bundles/336/1/.cp/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        swt-pi-gtk (Not found in java.library.path)
        /tmp/swtlib-32/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        /tmp/swtlib-32/libswt-pi-gtk.so (/tmp/swtlib-32/liblibswt-pi-gtk.so.so: cannot open shared object file: No such file or directory)

----------------------------------------------------------------------------------------------------------------

miércoles, 13 de marzo de 2013

Certificados y Encriptamiento

Introduccion a certificados

Hola Amigos!!!!
 
El dia de hoy veremos los conceptos relacionados con certificados en WAS / IHS, y es que es my importante saber que es cada cosa y para que sirve pues con este panorama sera muy facil saber distinguir entre los distintos tipos de certificados y su forma de uso.

Certificado autofirmado: Este es un certificado por la misma empresa lo que significa que es valido dentro de su dominio o dentro de su LAN.

Certificado firmado por una entidad valida. Es un certificado firmado por una CA tal como Virisign, Geotrust, etc, y que nos garantizan el uso de un dominio valido y que no genera un sitio no seguro como lo hace un autofirmado.
 
Tamaño del cifrado. Es el algoritmo que nos ayuda a encriptar la informacion que transita por los puntos donde esta intalado, como por ejemplo si lo pusieramos en un webServer todas la peticiones que llegue a el por el puerto que se configuro para utilizar el certifcado se haran de forma cifrada.
 Este tamaño del cifrado del algoritmo puede variar, y con esto nos referimos a que su algoritmo puede ser entre 128, 256, 512, 1024, 2048 bits, siendo obviamente entre mas grande mucho mejor.
 
Otro punto importante que debemos entender es que un certificado simpre va almacenado en una base de datos de Certificados, como por ejemplo .kdb, .jks, por decir algunos.
 
Esta base de datos contiene dentro las siguientes opciones:
 
1. Personal Certificates (Certificados Personales): Los certificado que son expuestos  a la hora de contestar a una peticion, ya sean autofirmados o validos.

2. Signer Certificates (Certificados de Firmantes).Los certificados o llaves que se utilizan cuando se quiere hacer alguna llamada a algun servicio de un terceros que tienen configurado su propio certificado

3. Personal Certificate Request (Peticion de certificado Personal). Estas son las llaves o certificados que se crean y que posteriormente se manda a firma ya sea con una entidad valida o no.
 
A continuacion una imagen de una base de datos de certificados.



Como obtener un certificado valido?

Un certificado valido consiste de algunos pasos para poder tramitarlo, y a continuacion se enlistan:
 
1. Crear una Base de datos de ccertificados (KDB, JKS, etc).
 
2. Crear una peticion de certificado (Personal Certificate request) dentro de la base de datos de certificados (MyKDB.kdb)
 
3. A continuacion se muestran los datos que generalemente se necesitan:



4. Una vez creado el Request se genera un archivo .arm que es el que se manda con firma con el area de segurirdad de cada empresa.
 
5. Abrir la Base de datos y en la Opcion de Personal Certificates dar clic en Receive, este proceso hace que la peticion con el certificado Firmado se fusionen.



6. En la opcion de Signer Certificate instalar los certificados de los intermediarios que puede considerarse a estos como los responsables del nuevo dominio.


 
7. Configurar la Herramienta que hara uso del nuevo certificado.
 
8. Una ves que se no devuelve el certificado firmado a su ves se no entrega los certificados de intermediario, que puede tomarse esto como los responsables del nuevo dominio.

Como obtener un certificado autofirmado

Este certificado simplemente se crea directamente en Personal Certificates con opcion de New Certificate


Se proporcionan los datos y se configura la herramienta que hara uso del certificado.

NOTA. Las imagenes que se tomaron fueron ejemplos de certificados para la creacion de un KDB para un IBM HTTP Server.
Saludos

jueves, 7 de febrero de 2013

Automatico redireccionamieto de http a https

Redireccionamiento HTTP a HTTPS en IBM HTTP Server 

Regularmente es necesario que todas y cada una de las aplicaciones que se encuentran instaladas en un ambiente de producción sean consumidas por medio de HTTPS y no por HTTP como regularmente sucede, y para esto hay una solución, la cual consiste en configurar el archivo httpd.conf del WebServer para hacer que todas las peticiones que entran por algún puerto no seguro sean redireccionadas a un puerto seguro.

A continuación las lineas que se deben de agregar:

# Redireccionar peticiones HTTP hacia HTTPS para ciertas aplicaciones en un servidor sin dominio
 
RewriteCond %{SERVER_PORT} ^[HTTP Port]$
RewriteCond %{REQUEST_URI} /("ContextRoot")
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
 
#Redireccionamiento hacia un dominio

RewriteCond %{SERVER_PORT} ^[HTTP Port]$
RewriteCond %{REQUEST_URI} /("ContextRoot")
RewriteRule (.*) https://"NombreDelDominio"%{REQUEST_URI} [L]


Donde:

[HTTP Port] = Puerto no seguro a donde se hacen las peticiones a la aplicación, regularmente suele ser el puerto 80

"ContextRoot" = Contexto de la aplicación y puede ser uno o varios solo hay que agregar "|" entre contextos: por ejemplo (MyWeb01|MyWeb02|....).

"Nombre del Dominio" = El dominio Web: por ejemplo. MyWeb.com.mx

Cabe mencionar que para que esto se puede llevar a cabo debe de haber una configuración previa de SSL v2 o en su caso SSL v3 con el propósito de habilitar los puertos seguros y tener una certificado instalado para la encriptación de datos.

jueves, 10 de enero de 2013

Comandos utiles para administración en UNIX / LINUX

Comando útiles en la administración de WAS en Unix o Linux

La administración sobre Windows como es de método gráfico muchas veces suele ser muy sencilla ya que se puede se pueden realizar muchas tareas de manera gráfica muy fácilmente, tal como:

Detener Servicios
Listar archivos
Navegar entre directorios
Crear directorios
Hacer busquedas
Editar archivos
Realizar Filtros
Comprimir y descomprimir Archivos
Matar procesos

entre otras cosas

Pero que pasa a la hora de llevar a cabo estas tareas en un SO donde solo es posible la linea de comandos?

Bueno pues aquí se muestra una lista con una breve descripción de algunos comando que sirven para realizar cada una de las tareas que se llevan a cabo en un ambiente windows en un SO Linux o Unix.

Lista de archivos

ls -lrt : Enlista los directorios de manera que el primero es el mas antiguo y el ultimo el mas recientemente modificado
ls -lrt -R : Lo mismo que el anterior pero además enlistara todo el contenido de los subdirecorio y subdirectorios de subdirectorios y asi sucesivamente

cd Directory : Para entrar a un directorio
cd .. : Para salir de un directorio

mkdir Directory_Name : Para crear un directorio.
rmdir Directory: Eliminar directorio.

lsvg :  Enlista los Volume Group de un sistema Unix

lsvg -l "volGrp" : Los File System montados en un Volume Group

lsvg -L "VolGrp" : Lista las características de un VG asi como su tamaño libre y ocupado, por lo que es útil para cuando queremos aumentar el tamaño de un FS y no sabemos si hay recursos disponibles.

vi : Editor de archivos de texto plano. Este comando es muy poderoso por lo que seria bueno consultar una guia dedicada para poder sacar todo el poder de esta utilidad.

tail -f File.log : Para monitorear un archivo en tiempo real.

grep -i "Cadena de texto" file.txt : Para buscar una cadena de texto en un archivo

df -g : Enlista los File Syetem Montados y su tamaño (libre y ocupado) en GB, se puede utilizar -m -k para MB o Kb.b

cp -Rf Directory Directory_Copy : Para copiar un directorio y su contenido.
cp File File_Copy : Copiar un archivo

find "Path" -name "file or Directory Name" 2>/dev/null : Para hacer busquedas de archivos y directorios. "2>/dev/null" es utilizado para que si el usuario no tiene permisos sobre algun archivo o alguna otra restriccion sobre algun directorio donde se trate de llevar a cabo la busqueda no arroje un "Access Denied" en la consola, o mensajes de caracter nulo.

ps -fea | grep -i "Java" : Enlista todos los procesos Java y su descripcion, lo cual es muy util ya que si recordamos los procesos de WAS son Java, de esta manera identificamos los procesos de WAS y podemos matarlos en caso de esta colgados.

ps -fea | grep java | awk '{print($2)}' : Enlista solo los PID de cada proceso Java

netstat -na | grep "port" : Sirve para identificar la conexiones de algun puerto, este es importante ya que alguna veces puede haber conexiones colgadas a algun puerto de WAS(por ejemplo el puerto 9080, 9443, etc).

netstat -na | grep "port" | wc -l : No arroja la cantidad de conexiones al puerto

netstat -na | grep "port" | grep -i "[Listen | Established | Time_Waiting]" | wc -l : Este arroja la cantida de conexiones a un puerto en algun estado Listen, Established, Time_Waiting entre otras. Se selecciona solo un estado [Listen | Established | Time_Waiting].

gzip `find {WAS_HOME]/ -name System*_*.log 2>/dev/null` : este comando es muy util si tenemos configurados los logs para que se cree uno diario ya que para no saturar el File System seria bueno comprimir los archivos logs diario, esto mediante un Shell programado en algun cron. Cabe mencionar que si manda un error de que la cadena es demasiado grande, seria bueno primero hubicarse en {WAS_HOME} y desde ahi ejecutarlo para no poner todo el Path en el comando.

{WAS_HOME}/java/bin/jar -cfv file.zip file : No apoyamos de la Java de WAS para poder crear un archivo ZIP

grep -Eoc "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.* 200"  archivo.log : Nos ayuda a buscar una IP en un archivo log, para poder entender un poco mas este comando seria bueno tener en cuenta las Expresiones Regulares.

prtconf : En los Sistemas AIX/UNIX arroja la informacion del Servidor, tal como: IP, Mascara de red, subred, Memoria fisica, Memoria de paginacion, Tipos de procesador, etc.

traceroute IP/HostName: Sirve para hacer una traza hacia un punto destino, ya sea dentro de una red local o hacia internet.

kill -9 PID : Patar de manera ruda un proceso.

kill -3 PID : Genera un archivo javacore.txt en WAS_HOME con informacion de los metodos y clases que se estan ejecutando en algun proceso.


Hasta la proxima.