J'ai un script à réaliser depuis windows qui est sensé se connecter à une machine unix (Red Hat Linux Entreprise), uploader un fichier texte, lancer un bash sur le serveur et downloader vers windows le fichier de log.
J'avais pour idée de scripter putty et de passer en argument un fichier .sh qui serait exécuté sur la machine unix.
Si je retire le param -m, putty se lance et je suis authentifié, la connexion est ok.
Maintenant lorsque je mets bien le param -m, ma fenêtre putty se lance avec :
Using username "user".
et se ferme aussitôt. Mon fichier commandesPutty.sh :
#!/bin/bash
cd /logiciels
Je ne sais pas comment faire pour que ce fichier soit exécuté.
Il le trouve bien (si je mets un autre nom il sort une erreur).
Si ce fichier est vide, la fenêtre reste en :
(les -batch c'est juste pour dire "pas d'affichage interractif car on est en mode script")
avec un fichier de paramètre "c:\mon_chemin_local\commandes_sftp.cmd" qui contiendra :
cd /logiciels
get monfichier_à_récupérer
Vérifier aussi que la commande "commandesPutty.sh" que tu lances sur le serveur est executable et que tu as les droits.
EDIT : Il est bien sur le serveur le "commandesPutty.sh" ?
(Sinon utiliser l'option -m de plink en lui passant un fichier local comme avec le "-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)
Enfin si c'est un sujet sensible, de façon à pas avoir les mots de passes en clair dans un batch mettre en place le système de clef publiques / clefs privées entre ton serveur et ton client (en plus, plus besoin de taper le mot de passe à chaque fois, tu me diras, ça évite de l'oublier :) quoique à force de le taper ... )
Le script sh est du côté windows, d'où l'option -m. Mais j'ai vu dans les exemples sur le net qu'il pourrait être au format txt. Il contient juste des commandes unix à exécuter.
Donc dans un premier temps j'aimerais pouvoir exécuter des commandes unix via mon batch windows.
Ce que je ne comprends pas c'est pourquoi les commandes spécifiées dans mon fichier ne sont pas exécutées.
Plink et psftp ne font que dérouler les commandes qu'ils trouvent dans le fichier passé en paramètre (par -m ou -b). C'est forcément un fichier texte simple (réalisé sous bloc-note ou notepad+ ou vi ou autres éditeurs "propres" pour éviter les caractères parasites).
Pour débugger ça, faut lancer les commandes des fichiers de paramètres à la main vers une session Putty classique (copié/collé de la commande dans le terminal) et voir si elles se lancent normalement.
Un transfert de fichier est impossible dans putty (à moins qu'il y ait un serveur sftp ou ftp sur le client auquel cas on utilise le client du serveur pour envoyer, mais c'est une autre histoire :))) mais il peut y avoir un problème de droit ou de chemin dans les lancement passés par ton script au linux.
avec un fichier de paramètre "c:\mon_chemin_local\put_sftp.cmd" qui contiendra :
et un fichier de paramètre "c:\mon_chemin_local\get_sftp.cmd" qui contiendra :
(l'extension .cmd des fichiers de param est facultative, tu mets ce que tu veux ...)