Aprende a automatizar tareas complejas (y no exentas de errores) desde la línea de comando usando PuTTY.

Cómo ejecutar un script .sh en un servidor remoto (Linux y Ubuntu) usando PuTTY en Windows

PuTTY no necesita presentación ya que es una de las utilidades de consola más remota. PuTTY es un cliente SSH y telnet.

Aunque usar la consola ya es simple y fácil, es más probable que a veces cometa errores (y borre la carpeta del proyecto accidentalmente). Puede automatizar las tareas del servidor sin escribir todo lo que necesita todos los días (ir a una carpeta, hacer algo allí, luego salir, navegar a otro, etc.).

Hágalo fácil para usted y su equipo. En este artículo, aprenderá a ejecutar un script de shell desde Windows a un servidor remoto usando PuTTY y el símbolo del sistema de Windows.

Creando un archivo .sh

Normalmente, un archivo .sh es un script de shell que puede ejecutar en una terminal. Este formato de archivo se usa comúnmente para archivos de shell de Unix, creados por el programa de utilidad shar de Unix.

¿Qué tan seguro es?

Puede que le resulte extraño que deba realizar otra tarea manualmente para ejecutar un archivo. Pero esto se debe en parte a la gran necesidad de seguridad.

Básicamente, cuando descargas y ejecutas un script bash, es lo mismo que alguien te dice "ejecuta todos estos comandos en secuencia en tu computadora, te prometo que los resultados serán buenos". Pregúntese si confía en la parte que le ha proporcionado este archivo, pregúntese si está seguro de haber descargado el archivo desde el mismo lugar en el que pensaba, tal vez incluso eche un vistazo al interior para ver si algo parece fuera de lugar ( aunque eso requiere que sabe algo sobre los comandos * nix y la programación bash ).

Conclusión: ejecute solo los comandos que conozca, y solo si sabe cómo funcionan.

Para comenzar, cree un archivo en algún lugar con la extensión .sh ( command_file.sh ) en algún lugar. Luego, escribe un script de shell.

En este ejemplo (el más básico), vamos a imprimir la fecha en la consola de Putty.

# command_file.sh

# Imprime la fecha en masilla
echo `date`
# No cierre putty para ver el resultado de la fecha.
read -rsp $'Press any key to continue...\n' -n1 key

Eso fue, realmente fácil ¿no ?.

Si lo desea, comience a crear el suyo propio, el siguiente ejemplo muestra una interacción básica con los comandos que normalmente ejecuta usando putty (comando de subversión svn update):

Nota: como es la primera vez que crea un archivo .sh para ejecutarlo, asegúrese de qué hacer para evitar cualquier daño que pueda hacerle a su servidor. Le recomendamos que pruebe solo con el script anterior y cuando tenga más experiencia, pruebe con el suyo.

# command.sh

# Crea una variable llamada directoryPath
# contiene dónde se encuentra su proyecto
directoryPath=/var/www/vhosts/myproject
# Ve al proyecto usando el comando cd
cd $directoryPath
# Actualizar usando el comando subversion
svn update
# Listo ! eso fue todo.
# ¡Pero hagamos algo más!
# Eliminar el contenido de una carpeta en el proyecto
# Nota: el nombre de la carpeta es "deleteMe" y está dentro de / myproject
# Por lo tanto, el camino es relativo al lugar donde estamos ubicados.
# Ruta real de la carpeta = /var/www/vhosts/myproject/deleteMe
folderToDelete=deleteMe
#Navega a la carpeta deleteMe
cd $folderToDelete
# Eliminar contenido usando el comando rm
rm -rf *

# Pedazo de pastel!

Empiece a leer más sobre todas las cosas que puede hacer con los archivos .sh en su servidor. Ahora que nuestro script está listo, solo necesitamos aprender a ejecutarlo automáticamente.

Ejecutar el script usando PuTTY desde el símbolo del sistema de Windows

Ahora que su archivo de secuencia de comandos está listo y (teóricamente) sabe lo que quiere lograr con él, solo tenemos que ejecutarlo y ahorrar un tiempo precioso.

La estructura del comando es la siguiente:

putty.exe [connection (-ssh)] [[email protected]] [parameter (-pw password)] [parameter (-m (read a remote command or script from a file) sh file to local path)]

La opción -m de espera que se le de un nombre de archivo local, y se leerán un comando de ese archivo.
Con algunos servidores (particularmente los sistemas Unix), puede incluso poner varias líneas en este archivo y ejecutar más de un comando en secuencia, o un script de shell completo; pero podría decirse que esto es un abuso y no se puede esperar que funcione en todos los servidores. En particular, se sabe que no funciona con ciertos servidores "integrados", como los enrutadores Cisco.
Esta opción no está disponible en las herramientas de transferencia de archivos PSCP y PSFTP.

El comando completo se puede ejecutar en el símbolo del sistema (cmd.exe) en Windows fácilmente, por ejemplo:

C:\path\to\putty.exe -ssh [email protected] -pw "password" -m "C:\path\to\command_sh_script_file.sh"

# Ejemplo

C:\Program Files\Putty\putty.exe -ssh [email protected] -pw "ComplexPassword" -m "C:\Users\Admin\Desktop\command_file.sh"

Nota: en lugar de usar la ruta completa al ejecutable putty, puede definir una variable de entorno para putty en Windows y luego usarla como %putty%.

Abra el cmd.exe y ejecute el comando reemplazando respectivamente las credenciales y los parámetros:

cmd.exe putty implementation

Finalmente, luego de la ejecución de su comando en el cmd.exe, se abrirá putty y se ejecutará su script como hicimos con el primer ejemplo, la fecha del servidor se imprimirá en la consola:

Shell Script

Consejo : puede crear una interfaz utilizando otro lenguaje como C # para automatizar aún más con un solo clic

Que te diviertas .

Capturar salida de masilla (opcional)

Si su script bash no es sencillo (puede generar resultados con información sobre errores, información, etc.), es posible que desee guardar el contenido para analizarlo cuando se cierre la ejecución del script.

Como putty normalmente cierra la consola si no hay una declaración que la pause cuando se ejecuta la última línea de su script y no hay forma de redirigir la salida (pero se puede lograr con la utilidad plink), debemos especificar esta tarea a la aplicación PuTTY.

1) Abra la masilla, haga clic en el icono superior y seleccione cambiar configuración.

Step 1 Putty log in external file

2) Haga clic en el elemento Registro en la lista del lado derecho. Ahora seleccione el botón de opción Salida de todas las sesiones en el área de registro de la sesión.

Putty step 2 log output in external file

Finalmente, elija una ruta al archivo putty.log en su sistema y haga clic en aplicar.

Toda la salida generada por Putty se escribirá en este archivo de registro.


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores