¿Existe alguna forma de acceder remotamente a una máquina diferente y ejecutar múltiples comandos en serie (utilizando Perl)?
Tengo un script de Perl. Quiero conectarme de forma remota a un host diferente y ejecutar múltiples comandos (no 5, 10 sino de 100 a 150 comandos) allí. Algo así,
Algoritmo del Script1.pl (el script en la máquina local):
ssh machine10
// Luego ejecutar comando1 en machine10
// Luego ejecutar comando2 en machine10
// Luego ejecutar comando3 en machine10
.
.
.
// Luego ejecutar comando100 en machine10, y así sucesivamente
Luego salir del host remoto.
Luego, ejecutar los comandos en la máquina local.
¿Cómo puede ser implementado?
Soy nuevo en Perl, y después de buscar en Internet, vi que el comando system podría ayudar [system (ssh remote_host “comando1; comando2;…”)], pero este comando system no parece ser viable ya que no se pueden escribir de esta manera 100-150 comandos para ejecutar.
¿Alguien puede ayudar, por favor? ¿Existe alguna forma de abrir un servidor SSH y ejecutar múltiples comandos, y luego cerrarlo? En realidad, estoy buscando este tipo de técnica.
¡Gracias!
davy.ai
Para ejecutar múltiples comandos en un host remoto utilizando un script de Perl y SSH, una forma es crear un archivo en la máquina local que contenga todos los comandos que deben ejecutarse en la máquina remota. Luego, utilizar SSH para enviar ese archivo a la máquina remota y ejecutarlo allí.
Aquí tienes un ejemplo:
En este ejemplo, primero creamos un objeto
Net::OpenSSH
para conectarnos al host remoto. Luego, creamos un archivo en la máquina local que contiene los múltiples comandos que deben ejecutarse en la máquina remota. Utilizamos el métodoscp_put
deNet::OpenSSH
para enviar el archivo a la máquina remota. Finalmente, utilizamos el métodosystem
deNet::OpenSSH
para ejecutar el archivo en la máquina remota utilizandobash
. La salida de los comandos se captura en la variable$output
.Después de que los comandos se ejecutan, podemos limpiar el archivo en la máquina remota utilizando otra llamada a
system
.De esta manera, podemos ejecutar múltiples comandos en una máquina remota utilizando un solo archivo y sin utilizar el comando
system
con una lista larga de comandos.