Script Putty + fichier de commandes

Fermé
scriptPutty - 27 mai 2013 à 12:20
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 27 mai 2013 à 15:12
Bonjour,

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.

Dans mon .bat :

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

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 :

Using username "user".

sans jamais se fermer.

Merci pour vos idées.


A voir également:

2 réponses

ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 27/05/2013 à 14:44
Hello,

déjà il me semble que tu veux faire 2 choses en même temps avec ton putty :

lancer une commande en ssh (ok) et un transfert de fichier (en sftp) (pas ok).

Pourquoi ne pas plutôt utiliser les outils en ligne de commande proposés dans le répertoire de putty (plink et psftp ou pscp) dans un batch ?

ça donnera un .bat qui ressemblera à

@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

(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 ... )
7
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
27 mai 2013 à 14:54
En relisant je vois que tu déposes un fichier en premier donc cela sera certainement plus :

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


avec un fichier de paramètre "c:\mon_chemin_local\put_sftp.cmd" qui contiendra :

cd /logiciels
put monfichier_à_envoyer


et un fichier de paramètre "c:\mon_chemin_local\get_sftp.cmd" qui contiendra :

cd /logiciels
get monfichier_à_récupérer


(l'extension .cmd des fichiers de param est facultative, tu mets ce que tu veux ...)
0
scriptPutty
27 mai 2013 à 14:48
Merci pour la réponse.

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.

Si vous avez des idées, je suis preneur.

Merci
3
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 27/05/2013 à 15:36
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.
0