Posts Tagged ‘Scripting’

WebService SOAP para enviar correo con php

Miércoles, marzo 2nd, 2011

Hace poco me encontré con una aplicación java que usa un WebService SOAP para enviar correos de notificaciones, así que configure un servidor de correo local ( sin ssl, sin TLS, sin seguridad ) para hacer pruebas pero luego de intentar mucho nunca funciono, así que para descartar el WebService propio de la aplicación, me hice uno en tiempo récord en php para probar, ya que desde el servidor usando el comando mail, se podían enviar correos sin ningún tipo de problemas, acá les dejo el código y de antemano les digo que el mismo es solo una prueba de concepto, no es algo para colocar en producción, así que si requiere algo parecido adapte a sus necesidades y mejorelo ( sobre todo del punto de vista de validaciones y seguridad ).

El código del servidor SOAP es el siguiente:

asdf
asp
fds
';document.write(content);
[code snippet: http://snipt.org/wnlkj]

El código fuente del servicio SOAP grabelo en un archivo con el nombre sendEmail.php y ubiquelo apropiadamente en su webserver, el código fuente del cliente es:

asdf
asp
fds
';document.write(content);
[code snippet: http://snipt.org/wnlkl]

Guarde el código del cliente en un archivo llamado cliente.php, tome en cuenta la url del wsdl donde está alojado el servicio SOAP ( http://localhost/sendEmail.php?wsdl ) y editela a según su conveniencia, también edite la dirección jhon@doe.com y cambie  la dirección a la cual quiere que enviar correo, para probar , acceda mediante su navegador al archivo cliente y observe la funcionalidad, si usa firefox, puede ver un bonito wsdl en http://localhost/sendEmail.php?wsdl y si no obtiene el resultado esperado no dude en revisar los archivos de logs /var/log/maillog y /var/log/httpd/error.log ( en sistemas fedora o redhat y derivados )

Referencias:

Requerimiento, instalar la librería: yum install php-pear-soap

Exportar archivo o script a html en vim

Jueves, diciembre 24th, 2009

Eventualmente quien a usado vim en algún momento a necesitado exportar un script con su sintaxis coloreada a html, para realizar está acción se requiere tener instalado el paquete vim-enhanced ( en fedora ) , abres tu archivo usando vim y en el modo comando ejecutas:

:TOhtml

Guardas y sales y tendrás en el mismo path de tu archivo uno llamado igual pero que se le a agregado la extensión .html al final

Exportar a html en vim

Barra de progreso en tus scripts BASH

Jueves, julio 9th, 2009

En estos días he estado realizando un script interactivo en BASH y decidí darle una buena presentación gráfica en el terminal usando dialog como generador de interfases , una de las dudas que me surgió es como colocar una barra de progreso en uno de los pasos que se tarda un poco de tiempo a manera de tener una presentación un poco más agradable al usuario.

Desgraciadamente la documentación de dialog no explora muy bien esta parte, así que me dedique a investigar y esto fue lo que obtuve:

Antes de continuar debes tener dialog instalado:

yum install dialog

Y ahora mediante el siguiente comando podemos probar más o menos el uso de la barra de progreso

find /etc/ -name *.conf 2>&1  | awk ‘{ print (Total+=1)/3.7,”=>”,$0}’ | dialog –gauge “Espere un momento…” 7 70

En donde el valor 3.7 es un factor que tiene que ser calculado mediante ensayo y error dependiendo del tiempo que se considere que va a tomar el comando find en ejecutarse, en este caso y para mi computador el valor 3.7 fúe el adecuado, como se ve no es un método muy adecuado para tener una barra de progreso debido a que no sabemos en realidad cuanto puede tardar nuestra acción en el computador de cada quien.

Otra caso de uso, puede ser el del siguiente script, el cual va a ir sumando 1% por cada segundo en la barra de progreso:

#!/bin/bash

i=0
while [ $i -le 100 ]
do
echo $i | dialog –gauge “Progreso…” 7 30
i=`expr $i + 1`
sleep 1
done

Usando modificaciones al script pasado puede darse una mejor manera de usar la barra de progreso en dialog, ya que por ejemplo y solo de manera academica ( no creo que sea un caso muy útil de uso ),  la variable $i podría ser el porcentaje de memoria RAM o CPU usado ( previamente calculado con otra operación ).

Otra manera que consegui de hacer una barra de progreso, pero sin usar dialog, más al estilo de la que se muestra cuando se usa el comando wget, se puede conseguir en:

http://www.theiling.de/projects/bar.html

La barra de progreso se ve más o menos así:

Barra de progreso

Para conseguir más información de su uso o descargar el código, visita el enlace anterior.

Condicionales en BASH

Jueves, enero 22nd, 2009

Hace unos días me encontraba haciendo unos scripts en BASH y necesitaba realizar algunas comprobaciones con un simple if, sin embargo tuve un lapsus mental y se me olvido como revisar la página del manual en donde explican exactamente lo que es cada condicional y tuve que resolver googleando.

Hoy me acorde de repente la cuestión y para al menos no tener que googlear de nuevo y saber donde la puedo encontrar de nuevo fácilmente en caso de otro olvido, la coloco acá:

man test

En realidad test es un comando para comparar archivos sin embargo sus condicionales son exactamente iguales a los usados en programación de BASH script ( o tal vez internamente el interprete usa test para hacer las comprobaciones ), así que sirve, además de que están bien explicados :-D

Actualización automática de Blacklist en Dansguardian

Martes, agosto 5th, 2008

Junto a un compañero de trabajo hemos realizado un cochino script en Bash que permite mantener actualizadas de forma automática tus archivos de blacklist ( listas negras ).

Cualquier comentario o recomendación usa el sistema de comentarios del blog, por favor.

El Script pueden verlo en formato html en:

http://www.richzendy.org/scripts/update_blacklist.sh.html

scp a múltiples máquinas de forma automática con password

Miércoles, junio 18th, 2008

Ayer tenía la tarea de hacer una modificación en un archivo de configuración ( con privilegios de root ) en una serie de máquinas clientes con GNU/Linux, al preguntar a un grupo de amigos me dieron las siguientes soluciones:

1. Usar claves compartidas de ssh

Ajá, esto seria válido si ya tuviera las llaves compartidas,  en este caso como no las tengo, tendría que entrar a cada máquina y hacer la configuración, lo cual no es una opción no viable ya que eso es justo lo que quiero evitar.

2. Usar la opción sudo -S de la siguiente manera: echo “password” | sudo -S

Tengo un script que puede ejecutarse automáticamente en cada máquina, pero este se ejecuta con privilegios de usuario, dicho script puede ser modificado y cargado masivamente en cada máquina de la red vía rsync, el detalle con esta solución es que en la distribución cliente los usuarios no están por defecto en el grupo que pueden hacer sudo, por lo cual tendría que configurar /etc/sudoers máquina a máquina para poder implementar esta opción, con lo cual esto ya no es viable.


Viendo ya que la solución debería investigarla por mis medios, pensé en usar la librería:

http://search.cpan.org/~bnegrao/Net-SSH-Expect-1.09/lib/Net/SSH/Expect.pod

Que ya he usado con anterioridad  para otras cosas y hacerme un scriptcito en perl, pero de verdad me daba fastidio y pereza instalarla vía CPAN, investigando un poco más di con la solución mas perezosa usando el programa expect, acá hay un ejemplo de como ( el cual use ):

http://modp.com/wiki/sshpasswords

Expect no se usa necesariamente para hacer login remoto ssh o scp, realmente es un programa hecho en tcl que permite controlar programas en consola o linea de comandos ( CLI ) que tienen una interfase interactiva, por ejemplo esos programas que te preguntan opciones y opciones para poder realizar alguna función y requieren una intervención vía teclado para contestarlas, bueno expect bien configurado puede ser usado para responder todas esas preguntas de forma automática.

Sin más preámbulo acá está el cochino script que realice, cabe destacar que no tenía idea de cuantas máquinas cliente existían en la red ( aunque más o menos calculo que podrían ser unas 100 al menos ) ni de sus direcciones ip ( el cliente tiene eso registrado, pero me dio fastidio pedírselo):

#!/bin/bash
for n in {1..9} ; do
for i in {100..140} ; do

expect -c “set timeout 10; eval spawn scp /tmp/rc.local root@192.168.$n.$i:/etc/ ; expect ‘yes: $’; send yes\n ; \ expect ‘password: $’; send algunpassword\n ; expect ‘$ $’”

done
done

La linea realmente importante es la que empieza con el comando “expect” precisamente y vamos a explicar sus opciones:

set timeout 10 : Esta opción permite configurar 10 segundos de timeout en caso de no conseguir una respuesta.

eval spawn scp /tmp/rc.local root@192.168.$n.$i:/etc/ :

Esta opción es la que ejecuta realmente el scp, al final los últimos 2 octetos de la dirección ip, son variables, provistas por los for de arriba.

expect ‘yes: $’; send yes\n : Esas 2 opciones pueden ser consideradas una sola, y es que como en muchas de esas máquinas clientes nunca se ha conectado vía ssh, entonces se debe aceptar primero la clave RSA del ssh, entonces  “expect ‘yes: $” espera que se presente una linea que diga “yes:” y “send yes\n”  envía como respuesta yes y aplica un enter luego ( \n).

expect ‘password: $’; send algunpassword\n : Como en la anterior, esto puede ser considerado una sola instrucción y es muy similar a la anterior, se espera la cadena “password:” y cuando se reciba, se contesta con  “send algunpassword\n” enviando la password de la sesión e iniciando la transferencia.

expect ‘$ $’ : ya al final coloque esta opción la cual simplemente espera que se entregue un prompt para salir, realmente no se si era necesaria pero sin embargo la coloque por si acaso :-D

Espero que le llegue a servir a alguno, como me sirvio a mi, en menos de 20 minutos ya tenía todos las máquinas cliente plenamente configuradas :-D , tal vez hayan otras opciones incluso más elaboradas, pero me pareció buena esta debido a su sencillez, solo basta con instalar el paquete expect, el cual está en los repositorios de la mayoría de las distribuciones de GNU/Linux.

Por cuestiones de seguridad no me preocupe mucho, debido que todas esas máquinas están en una red local sin acceso a internet y los clientes son prácticamente terminales tontos en donde el usuario tiene perfiles de desktop muy bien delimitados y no tienen acceso a tty, además ya scp cifra la comunicación en la transferencia, incluso en la sesión de login.

PassReminder

Miércoles, octubre 10th, 2007

He desarrollado PassReminder, que es un sencillo script que ayuda en funciones administrativas en organizaciones que usan autenticación mediante algún servidor LDAP como  Fedora Directory Server u otro servidor LDAP ( a pesar de que se probo solo con FDS, tal vez funcione como está o con pocas modificaciones en openldap ), ya que permitirá poder enviarle un correo electrónico a cada usuario del directorio al cual tenga a punto de expirar su cuenta, recordando que debe cambiar su contraseña.

Si desea saber más al respecto, descargar el script, saber como instalarlo puede ver el siguiente link:

http://www.proyectofedora.org/wiki/index.php/Fedora_Directory_Server_PassReminder

Si tiene algún tipo de pregunta al respecto, por favor hagamelo saber.

Muine XChat Announcer 0.1 release

Sábado, septiembre 23rd, 2006

Ahora estoy usando un reproductor de música muy cool para gnome hecho en mono, se llama muine, es como la versión light de amarok, me mantiene actualizado mi audioscrobler ( hoy en día  last.fm ) via un plugin y me permite ver las letras de las canciones vía otro, lo que mas me agrada es que me mantiene organizada mi lista reproducción en forma de albums  y me muestra las caratulas de los mismos ( creo que se las baja de algún sitio ) o por orden alfabético de canciones, también me agrada que se pueda iconificar completamente ( lo trae por defecto ) y que hay un applet para la barra de gnome que ofrece control de el desde allí :-D .

Bueno el detalle es que me fui inmediatamente a buscar un plugin para xchat de el y encontré uno pero era muy feo ( creo que no me funciono ) así que decidí hacerme uno, pueden ver el script en formato html en el siguiente link:

http://richzendy.org/scripts/xchat_muine.html

Muine Xchat Script

El que lo use, por favor, envíeme sus comentarios, bugs o sugerencias, en los comentarios de este post, o a mi e-mail ( sabrán donde encontrarlo ), realmente les recomiendo este player, es muy liviano y fácil de usar ,el que use Fedora Core, pregunte por los repositorios de donde lo descargue vía yum :-D .

Ver vídeo del script en acción:

Estoy también en:
Galería
Causas

Copyright © 2012 Richzendy.org. Search Engine Optimization by Star Nine. Distributed by Wordpress Themes