Script Putty + archivo de comandos

scriptPutty -  
ryko1820 Mensajes publicados 1633 Fecha de registro   Estado Miembro Última intervención   -
Hola,

Tengo un script que necesito realizar desde Windows que se supone que debe conectarse a una máquina Unix (Red Hat Linux Enterprise), subir un archivo de texto, lanzar un bash en el servidor y descargar hacia Windows el archivo de registro.

Tenía la idea de scriptar putty y pasar como argumento un archivo .sh que se ejecutaría en la máquina Unix.

En mi .bat:

start /w putty.exe -load "SESSION" -l user -pw mdp -m comandosPutty.sh

Si quito el parámetro -m, putty se lanza y estoy autenticado, la conexión está bien.

Ahora, cuando coloco bien el parámetro -m, mi ventana de putty se lanza con:

Using username "user".

y se cierra de inmediato. Mi archivo comandosPutty.sh:

#!/bin/bash
cd /logiciels

No sé cómo hacer para que este archivo se ejecute. Lo encuentra bien (si pongo otro nombre da un error). Si este archivo está vacío, la ventana permanece en:

Using username "user".

sin cerrarse nunca.

Gracias por sus ideas.

Configuración: Windows Vista / Chrome Indeterminado

2 respuestas

ryko1820 Mensajes publicados 1633 Fecha de registro   Estado Miembro Última intervención   310
 
Hola,

ya me parece que quieres hacer 2 cosas al mismo tiempo con tu putty:

lanzar un comando por ssh (ok) y una transferencia de archivos (en sftp) (no ok).

¿Por qué no usar las herramientas de línea de comandos ofrecidas en el directorio de putty (plink y psftp o pscp) en un batch?

Eso dará un .bat que se parecerá a

@echo off "C:\Program Files (x86)\PuTTY\plink" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch /home/toto/commandesPutty.sh "C:\Program Files (x86)\PuTTY\psftp" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch -b c:\mon_chemin_local\commandes_sftp.cmd

(los -batch es solo para decir "sin salida interactiva porque estamos en modo script")

con un archivo de parámetros "c:\mon_chemin_local\commandes_sftp.cmd" que contendrá:

cd /logiciels get monfichier_à_récupérer


Verifica también que el comando "commandesPutty.sh" que lanzas en el servidor es ejecutable y que tienes los derechos.

EDIT: ¿Está bien en el servidor el "commandesPutty.sh"?

(De lo contrario, utiliza la opción -m de plink pasándole un archivo local como con el "-b c:\temp\test.cmd de psftp" = "C:\Program Files (x86)\PuTTY\plink" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch -m c:\mon_chemin_local\commandesPutty.sh)

Por último, si es un tema sensible, para no tener las contraseñas en claro en un batch, establece el sistema de claves públicas / claves privadas entre tu servidor y tu cliente (además, no tendrás que escribir la contraseña cada vez, me dirás, eso evita olvidarla :) aunque a fuerza de escribirla ... )
7
ryko1820 Mensajes publicados 1633 Fecha de registro   Estado Miembro Última intervención   310
 
Al releer, veo que depositas un archivo primero, así que esto será seguramente más:

@echo off :: Depósito de archivo "C:\Program Files (x86)\PuTTY\psftp" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch -b c:\mon_chemin_local\put_sftp.cmd :: Lanzamiento de comando "C:\Program Files (x86)\PuTTY\plink" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch /home/toto/commandesPutty.sh :: Retiro de archivo "C:\Program Files (x86)\PuTTY\psftp" 192.168.1.XX -l tonutilisateur -pw tonmotdepasse -batch -b c:\mon_chemin_local\get_sftp.cmd


con un archivo de parámetros "c:\mon_chemin_local\put_sftp.cmd" que contendrá:

cd /logiciels put monfichier_à_envoyer


y un archivo de parámetros "c:\mon_chemin_local\get_sftp.cmd" que contendrá:

cd /logiciels get monfichier_à_récupérer


(la extensión .cmd de los archivos de parámetros es opcional, pones lo que quieras...)
0
scriptPutty
 
Gracias por la respuesta.

El script sh está del lado de Windows, de ahí la opción -m. Pero he visto en los ejemplos de internet que podría estar en formato txt. Solo contiene comandos unix para ejecutar.

Así que, en primer lugar, me gustaría poder ejecutar comandos unix a través de mi batch de Windows.

Lo que no entiendo es por qué los comandos especificados en mi archivo no se están ejecutando.

Si tienes alguna idea, estaré agradecido.

Gracias.
3
ryko1820 Mensajes publicados 1633 Fecha de registro   Estado Miembro Última intervención   310
 
Plink y psftp solo ejecutan los comandos que encuentran en el archivo pasado como parámetro (por -m o -b). Tiene que ser necesariamente un archivo de texto simple (realizado con bloc de notas, notepad+ o vi u otros editores "limpios" para evitar caracteres extraños).

Para depurar esto, es necesario ejecutar los comandos de los archivos de parámetros manualmente en una sesión clásica de Putty (copiar/pegar el comando en el terminal) y ver si se ejecutan normalmente.

Una transferencia de archivos es imposible en putty (a menos que haya un servidor sftp o ftp en el cliente, en cuyo caso se utiliza el cliente del servidor para enviar, pero esa es otra historia :))) pero puede haber un problema de permisos o de ruta en los comandos ejecutados por tu script en Linux.
0