Script Putty + archivo de comandos
scriptPutty
-
ryko1820 Mensajes publicados 1633 Fecha de registro Estado Miembro Última intervención -
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
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
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
(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á:
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 ... )
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 ... )
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.
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.
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.
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.
con un archivo de parámetros "c:\mon_chemin_local\put_sftp.cmd" que contendrá:
y un archivo de parámetros "c:\mon_chemin_local\get_sftp.cmd" que contendrá:
(la extensión .cmd de los archivos de parámetros es opcional, pones lo que quieras...)