Posts Tagged ‘Software’

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.

Aplicaciones portátiles en un USB

Viernes, agosto 31st, 2007

Tu vida digital a donde sea” reza el lema de el sitio http://portableapps.com/ .

Dicho sitio provee programas GNU plenamente configurados para que puedan ser instalados y usados directamente desde un pendrive o memoria USB, lo que permitiría por ejemplo, en el caso de usar ThunderBird, tener tus correos electrónicos en tu pendrive y poderlos ver y gestionarlos desde cualquier computador, o guardar todas tus acciones de firefox y poder usar esto en cualquier computador.

Es más para aquellos desarrolladores de aplicaciones LAMP ( Linux Apache MySQL Php ), podrían instalar XAMPP en el USB y llevar su aplicación a donde sea y poder hacer una demostración a un cliente, por ejemplo ( no todos tienen un laptop ).

El listado de aplicaciones disponibles puede verse desde el siguiente enlace -> http://portableapps.com/apps

Entre las más famosas tenemos:

  • vlc y mplayer ( reproductores multimedia )
  • notepad++ ( una abominación del notepad hecha en GNU para desarrolladores de software )
  • Nvu y Kompozer ( un editor de html y css  potente y mucho más fácil de usar que dreamweaver )
  • Sudoku ( juego muy de moda, también hay otros )
  • Gimp ( un programa de tratamiento y manipulación de imágenes )
  • Filezilla ( cliente ftp GNU )
  • Pidgin ( cliente de mensajería instántanea multiprotocolo, maneja talk, msn, yahoo, aol, ic, etc )
  • OpenOffice ( suite ofimática )
  • ClamWin ( Antivirus )

Como nota final, doy mi comentario al respecto:

Nada de esto se puede con el software propietario, por que aunque se pueda instalar una aplicación en un pendrive, el poder distribuir tantas aplicaciones desde un mismo sitio y en  un entorno común para todas es un verdadero problema ( coordinar empresas es difícil ya que cada una quiere su propio beneficio ).

Estas aplicaciones, son el disfrute para aquellos que son usuarios de computadoras con cuentas limitadas en su trabajo, ya que les permite lanzar aplicaciones desde el pendrive e incluso algún sistema operativo emulado y el dolor de cabeza para todos los SysAdmin :-D

Php Form Mail

Domingo, febrero 26th, 2006

Php Form Mail es una aplicación vía web que facilita la creación de formularios de una forma muy intuitiva, es opensource y bajo licencia GPL, entre sus principales características tenemos:

- Chequeo de errores.
- Crear campos que sean de uso obligatorio.
- Validación de direcciones de email.
- Envío de múltiples archivos adjuntos.
- Auto respondedor de email.
- Mensaje de confirmación de que los datos ingresados fueron enviados satisfactoriamente.

La aplicación esta desarrollada en php, por lo tanto para ser usada se debe disponer de un servidor web con php y el asistente es estilo página web, al finalizar el asistente se crearon dos archivos, el formulario en si y uno *.lib.php que es la librería que se encarga de enviar el mail, cabe aclarar que los datos ingresados al formulario son enviados a cualquier dirección de email que se configure y el código del archivo del formulario puede ser empotrado en cualquier página web.

phpform

página del proyecto : http://phpfmg.sourceforge.net/home.php
demo : http://phpfmg.sourceforge.net/generator.php
download : http://phpfmg.sourceforge.net/download.php

P.D.: Se me ocurre que damog puede usar esta aplicación para crear el formulario de ingreso de nuevos blogs en http://www.planetalinux.org

Estoy también en:
Galería
Causas

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