[LUG.ro] ssh automatico con argumentos

Angel Aranciba lugro@lugro.org.ar
Tue, 4 Apr 2006 21:43:34 +0000


> Te recomiendo que uses directamente el cpan para bajar los modulos.
> #perl -MCPAN -e shell
>
> Y allí tenes comandos interactivos que te permiten bajar los modulos y solo se
> encarga de las dependencias y la compilación que necesite.

Lo voy a probar ...

> El tema es que controles que máquina se conecta y que usuario con que
> privilegios lo haga.
>

La idea es que sean 2 maquinas fijas, con 2 usuarios (con lo minimo de
permisos) fijos, qeu despues hagan sudo para 2 o tres operaciones.

En realida lo qeu quiero hacer es una modificacion al script de Andres
Gironacci  (de "VPN con IPSEC (freeswan) para dos nodos con IP
dinamicos" disponible en:
http://www.lugro.org.ar/biblioteca/articulos/vpnipsec.txt) para unir
dos redes por vpn, con ip dinamico. Uso la idea y gran parte de la
logica, pero unas de las principales diferencias qeu me llevaron a
hacer estos cambios fueron:

1) La ip me la dan por dhcp, por lo cual puedo saber (y lanzar algun
script) cuando cambia la ip. Con lo cual me ahorro de correr un
demonio mas, ya que ademas al ip me cambia cada 10 dias mas o menos.

2) Necesito alta disponibilidad (bue tampoco apra tanto..), y no puedo
esperar qeu se actualicen dinamicamente los dns dinamicos (dns-park en
mi caso) para re-levantar la vpn.

Entonces, mi idea es la siguiente:

Cuadno alguno (Left Right) cambia de ip ejecuta un script qeu
basicamente ahce lo mismo qeu el de Andres, pero antes de terminar (o
tratar de relevantar el tunel) llama (va, ejecuta con algunos
parametros) el mismo script del otro lado (por eso necesito el ssh no
dinamico con parametros), cuadno vuelve levanta el tunel y listo... en
menos de 4s el tunel esta andando de nuevo.

Ya tengo listo el script, esta bastante optimizado, pero me falta la
aprte del ssh. con el modulo de perl net::ssh::perl lo tenia listo
asi:

 sub sincronizar(){
        my $host=$remote_ip;
        my $ssh=Net::SSH:Perl->new($host);
        $ssh->login(USERNAME,PASSWORD);
        my ($stdout,$sterr,$exit)=$ssh->cmd(CMD," ".$lado." ".$ip);
        if ($exit!=1) return 0;
        return 1;
}

pero tuve problemas con el ese modulo. Voy a ver si con eso qeu
mencionaste antes lo puedo ahcer andar.



Bueno, eso es un poco lo que ando haciendo.
Saludos

PD: En caso qeu no me anden los modulos esos de perl, cual de los dos
metodos me recomiendan, sshpass, o ssh con public key??. mientras
espero que termine de resolver los problemillas la gente de debian.

--
-----
Angel Arancibia

GNU/Linux User Registered #358969
http://counter.li.org/

ICQ: 327093745
MSN: angel.arancibia@gmail.com
-------------------------------

"Computer science is no more about computers than astronomy is about
telescopes." - Edsger W. Dijkstra

"There are only 10 types of people in the world: Those who understand
binary, and those who don't"