es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo llamar a una subrutina de Perl en un host remoto (posiblemente a través de un comando de sistema)?

Quiero llamar a una subrutina de Perl en un host remoto. ¿Cómo se puede hacer?

Lo que estoy intentando hacer (que no funciona):

my $sshCmd = "ssh";
my $var1 = "ABC";

&sshToUpdateSim;

sub simUpdate 
{
    $var1 = "32";
    print "dentro de la subrutina, $var1 es var1\n";
}

sub sshToUpdateSim
{
    system("$sshCmd machinewin10 \"simUpdate()\"");
}

print "$var1 es var1 ahora";

Aquí, se requiere llamar a la subrutina “simUpdate” en un host remoto llamado “machinewin10”.

Se agradecerá mucho la ayuda.

¡Gracias anticipadas!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para llamar a una subrutina Perl en un host remoto, puedes usar el módulo Perl Net::OpenSSH. Aquí tienes un ejemplo de un fragmento de código:

    use Net::OpenSSH;
    
    my $ssh = Net::OpenSSH->new('machinewin10');
    $ssh->system('perl', '-e', 'sub simUpdate { print "¡Hola, mundo!\n" }; simUpdate()');
    

    En este ejemplo, creamos un nuevo objeto Net::OpenSSH conectado al host remoto “machinewin10”. Luego usamos el método system() para ejecutar un comando Perl en el host remoto. El comando define la subrutina simUpdate y luego la llama.

    Puedes reemplazar el comando en el método system() con tu propia llamada a una subrutina, de esta manera:

    $ssh->system('perl', '-e', 'sub simUpdate { my $var1 = "32"; print "Dentro de la subrutina, var1 es $var1\n" }; simUpdate()');
    

    Este comando define la subrutina simUpdate con la variable $var1 configurada en 32 y luego llama a la subrutina.

    Ten en cuenta que es posible que necesites configurar tu conexión SSH para autenticarte en el host remoto mediante autenticación basada en clave, en lugar de una solicitud de contraseña.

Comments are closed.