Mie Jun 04, 2008 1:40 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
| Instalación de Net::SFTP |
|
|
Buen día, Perleros, tengo una duda y es que yo tengo mi programa ssh.pl.
Al momento de correrlo me dice:
| Cita: | Can't locate Net/SFTP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ssh.pl line 3.
BEGIN failed--compilation aborted at ssh.pl line 3. |
Doy por hecho que no está instalado así que entro en -MCPAN -e shell; para dar un install, al Net:SFTP, pero al final cuando hace el test me dice.
| Cita: | Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01-load........Can't locate Net/SSH/Perl/Buffer.pm in @INC (@INC contains: /root/.cpan/build/Net-SFTP-0.10/blib/lib /root/.cpan/build/Net-SFTP-0.10/blib/arch /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Buffer.pm line 6.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Buffer.pm line 6.
Compilation failed in require at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Attributes.pm line 7.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Attributes.pm line 7.
Compilation failed in require at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP.pm line 8.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP.pm line 8.
Compilation failed in require at t/01-load.t line 5.
BEGIN failed--compilation aborted at t/01-load.t line 5.
t/01-load........dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED test 1
Failed 1/1 tests, 0.00% okay
t/06-circular....Can't locate Net/SSH/Perl/Buffer.pm in @INC (@INC contains: /root/.cpan/build/Net-SFTP-0.10/blib/lib /root/.cpan/build/Net-SFTP-0.10/blib/arch /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Buffer.pm line 6.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Buffer.pm line 6.
Compilation failed in require at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Attributes.pm line 7.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP/Attributes.pm line 7.
Compilation failed in require at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP.pm line 8.
BEGIN failed--compilation aborted at /root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP.pm line 8.
Compilation failed in require at t/06-circular.t line 5.
BEGIN failed--compilation aborted at t/06-circular.t line 5.
t/06-circular....dubious |
Busco los archivos con un find, y me dice que están en:
| Código: |
/root/.cpan/build/Net-SFTP-0.10/lib/Net/SFTP.pm
/root/.cpan/build/Net-SFTP-0.10/blib/lib/Net/SFTP.pm
------------ |
¿Alguien me podría dar un norte de lo que está pasando___¡??? o dónde estoy haciendo algo mal... |
|
|
|

Mie Jun 04, 2008 4:15 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Todo parece indicar que falto instalar antes el módulo IO::Socket, pero ahora aparece
| Cita: | cpan> install Net::SSH::Perl
Running install for module Net::SSH::Perl
Running make for D/DB/DBROBINS/Net-SSH-Perl-1.30.tar.gz
Is already unwrapped into directory /root/.cpan/build/Net-SSH-Perl-1.30
Has already been processed within this session
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01-compile.....ok
t/02-buffer......ok
t/03-packet......ok 1/10 |
Y se queda ahí pensado....  |
|
Mie Jun 04, 2008 4:20 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
| Cierto, se queda pensando mucho rato... ten paciencia. Está haciendo muchos cálculos. Abre otra terminal y ejecuta el comando top, para ver el consumo de CPU. |
|
Mie Jun 04, 2008 4:37 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Pues voy a dejarla toda la noche, a ver qué pasa.
Porque sin ese módulo no puedo acceder ni por ssh ni ftp, ni nada, así que se tiene que instalar, o que otra opción se sugieren para contactar a un equipo remoto, (donde pueda especificar el puerto) para bajar un archivo...
Y ya intenté wget (y se queda pensando) y sftp pero tampoco y se me están terminando las ideas...
 |
|
Mie Jun 04, 2008 4:47 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
A mi me tardó unos pocos minutos.
Si no te funcionó el comando sftp, es muy posible que no te funcione el módulo Perl. |
|
Jue Jun 05, 2008 2:23 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Pues algo pasa no que se que sea, pero se queda en esta parte.
| Cita: | Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01-compile.......ok
t/02-buffer........ok
t/03-packet........1/10 |
Y no se puede instalar |
|
Jue Jun 05, 2008 2:34 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
| ¿Alguna idea de cómo obtener un archivo, por medio de Perl, que no sea por Net:: ? |
|
Jue Jun 05, 2008 3:03 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
Programando los sockets, con el módulo Socket.
Te hará falta mucha paciencia... y no conseguirás nada.
El problema no está en la programación.
A ver... por el principio... ¿A qué puerto y con qué protocolo debes conectarte?
¿Has probado a hacer un
| Código: |
| telnet <servidor> <puerto> |
para comprobar si el servidor responde o no? |
|

Jue Jun 05, 2008 3:14 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Correcto El problema esta en la conf
En principio
| Cita: | root@apolo:~$ nmap XXX.XXXX.XXX
Starting Nmap 4.53 ( http://insecure.org ) at 2008-06-05 16:09 CDT
Interesting ports on XXX.XXX.XXX:
Not shown: 1649 closed ports
PORT STATE SERVICE
20/tcp open ftp-data
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
135/tcp open msrpc
136/tcp open profile |
Si yo me conecto por ssh usuario@XXX.XXX.XXX
SI me puedo conectar
Si me quiero conectar por telnet
| Código: |
root@apolo:~$ telnet XXX.XXX.XXX:23
telnet: could not resolve XXX.XXX.XXX:23/telnet: Name or service not known |
Y si me quiero conectar por Filezila,
Si me conecto y se supone q filezila utila SFTP
O en su caso se puede hacer algo asi con perl?
O en su caso de pude hacer esto en un cron??
Quen
Como ves,
 |
|

Jue Jun 05, 2008 3:37 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
No es telnet xxx.xxx.xxx.xxx:23, sino telnet xxx.xxx.xxx.xxx 23.
Está claro que funciona el puerto del ssh, por lo que entonces se puede acceder por ese puerto, incluso de forma programada. La cuestión es hacer una instalación correcta. Como el caso es que esa instalación puede ser compleja (porque intervienen varios módulos criptográficos), recuerda que existen versiones de los módulos escritos en puro Perl (sin librerías compiladas).
De todas formas... esos módulos son tan importantes que la gran mayoría de las distribuciones Linux/Unix ya disponen de esas librerías como paquetes de software de la distribución.
No uses el comando cpan para instalarlos, sino que debes usar el programa de gestión de software del sistema operativo.
Y finalmente, la programación. Hay algunos módulos que son muy fáciles de usar, pero otros no. Un ejemplo es Net::SFTP, que, además, tiene 3 años de edad.
Pero ese módulo no es el único. Por ejemplo, Net::SFTP::Foreign. Este módulo no depende de ninguna librería, sino que usa el comando ssh del sistema. Si dices que haciendo un ssh te funciona, entonces este módulo te vendrá como anillo al dedo. Tiene más opciones que Net::SFTP, a cambio de tener que ejecutar un proceso nuevo (el comando ssh) y que solo soporta la versión 2 del protocolo.
Ya nos dirás...
P.D. Cuando te conectas por ssh, ¿tienes que meter una contraseña o no? ¿Tienes que meter además una passphrase? |
|

Jue Jun 05, 2008 5:27 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Efectivamente ese módulo es la solución aunque sería:
| Perl: | use Net::SFTP::Foreign;
use Net::SSH::Expect; |
Pero no logro hacer que funcione y en teoría es muy simple.
| Perl: | #!/usr/bin/perl
use Net:: SFTP:: Foreign;
use Net:: SSH:: Expect;
##################################
# You can do SSH authentication with user-password or without it.
# Making an ssh connection with user-password authentication
# 1) construct the object
my $ssh = Net:: SSH:: Expect-> new (
host => "XXX.XXX.XXX",
password=> 'elpasword',
user => 'apolo',
raw_pty => 1
);
# 2) logon to the SSH server using those credentials.
# test the login output to make sure we had success
my $login_output = $ssh-> login();
if ($login_output !~ /Welcome/ ) {
die "NO SE PUDO CONECTAR $login_output";
}
#############################
my $remote = "/usr/users/equipo/";
my $local = "/home/apolo/Desktop/";
Net:: SFTP:: Foreign-> new($sftp-> get($remote, $local, ))or die "No se Puede logear ", $sftp-> message. "\n";
$sftp-> quit; |
|
|

Jue Jun 05, 2008 7:25 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
|
|
|
|
|
Ese código es muy curioso... ¿de dónde lo has sacado?
Yo he instalado Expect, no el módulo Net::SSH::Expect.
A mí me funciona muy bien, pero claro, la comunicación con el servidor se basa, no en contraseñas, sino que cada máquina se intercambia las cables públicas. Como dice el módulo, es mucho mejor ese tipo de verificación.
Si no puedes hacer lo de la verificación por claves, este es el código que a mi me funciona, usando el clásico usuario/contraseña.
| Perl: | #!/usr/bin/perl
use Net:: SFTP:: Foreign;
my $host = 'aproxi38.aproxi.net';
my $port = 2222;
my $user = 'jferrero';
my $pass = 'defensor';
my $sftp = Net:: SFTP:: Foreign-> new(
host => $host,
port => $port,
user => $user,
password => $pass,
# more => '-v', # No es compatible esto con la opción 'password' anterior
);
$sftp-> error and die "SSH connection failed: " . $sftp-> error;
print $sftp-> cwd, "\n";
my $ficheros = $sftp-> ls;
print join("\n", map { $_-> {filename } } @ $ficheros ); |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|