ssh
o similar. Vea el siguiente ejemplo:
pp2@nereida:~/src/perl/perlssh$ cat -n prueba.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use IPC::PerlSSH; 4 5 my $ips = IPC::PerlSSH->new( Host => 'user@orion.pcg.ull.es' ); 6 7 $ips->eval( "use POSIX qw( uname )" ); 8 my @remote_uname = $ips->eval( "uname()" ); 9 print "@remote_uname\n"; 10 11 # We can pass arguments 12 $ips->eval( "open FILE, '> /tmp/foo.txt'; print FILE shift; close FILE;", 13 "Hello, world!" ); 14 15 # We can pre-compile stored procedures 16 $ips->store( "slurp_file", <<'EOS' 17 my $filename = shift; 18 my $FILE; 19 local $/ = undef; 20 open $FILE, "< /tmp/foo.txt"; 21 $_ = <$FILE>; 22 close $FILE; 23 return $_; 24 EOS 25 ); 26 27 my @files = $ips->eval('glob("/tmp/*.txt")'); 28 foreach my $file ( @files ) { 29 my $content = $ips->call( "slurp_file", $file ); 30 print "$content\n"; 31 }El objeto de conexión es creado en la línea 5. También podríamos crearlo mediante la llamada:
my $ips = IPC::PerlSSH->new( Command => 'ssh user@orion.pcg.ull.es perl' );
o también:
my $ips = IPC::PerlSSH->new( Command => bless ['ssh', 'casiano@orion.pcg.ull.es', 'perl'], 'UNIVERSAL' );
Al ejecutar el programa obtenemos la salida:
pp2@nereida:~/src/perl/perlssh$ prueba.pl Linux orion 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 Hello, world!El método eval posibilita la ejecución de código Perl en la máquina remota. El método store permite almacenar una función en la máquina remota. La función puede ser llamada posteriormente mediante el método call .
Casiano Rodríguez León