[bash-expect] Redirection de port automatique avec SSH

Redirection de port automatique avec SSH [bash-expect] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-11-2010 à 09:25:49    

Bonjour,
 
J'ai cherché un peu partout mais je ne trouve pas de solution à mon problème :
 
J'ai un script bash qui doit ouvrir un tunnel via SSH vers une autre machine puis exécuter des commandes qui y feront transiter des infos par ce tunnel. Jusque là, pas de souci, j'utilise la commande suivante :  

Code :
  1. /usr/bin/ssh -f -L 7777:127.0.0.1:7777 user@192.168.0.1 sleep 5


Le -f permet à SSH de passer en arrière plan après la mise en place du tunnel (je suis donc assuré que le tunnel est en place lorsque les commandes exécutées après SSH sont exécutées, chose qui ne serait pas possible avec un & ).
 
Le problème est que je souhaite avoir une authentification automatique avec mot de passe (et sans utiliser de clé). La seule solution semble être l'utilisation d'expect pour injecter le mot de passe via la commande "send". Or, si ceci fonctionne parfaitement dans le cas d'un accès SSH classique (pour taper des commandes à distance), ceci ne fonctionne pas lorsqu'on souhaite exécuter SSH en arrière plan (pour un tunnel par exemple).
 
J'ai essayé avec le script de base suivant :

Code :
  1. #!/usr/bin/expect
  2. set force_conservative 1
  3. spawn /usr/bin/ssh -f -L 7777:127.0.0.1:7777 user@192.168.0.1 sleep 5
  4. expect "password: $"
  5. send "monmotdepasse\r"


 
- Résultat : SSH est tué quelque soit la valeur mise à "sleep"
- En ajoutant "interact" à la fin, SSH n'est pas tué mais le script se retrouve bloqué pendant les n secondes du sleep malgré le -f . Chose étrange : en regardant la liste des processus, j'ai un SSH zombi qui se balade en plus du SSH que j'ai lancé.
- Si je supprime le -f en laissant "interact" : le processus zombi disparait mais le script reste bloqué (là, c'est logique !)
 
Existe-t'il un moyen d'envoyer SSH en arrière plan tout en faisant un login automatique sans clé avec expect et de manière synchronisée ?
 
Merci d'avance  :)


Message édité par The Mauler le 16-11-2010 à 09:26:11
Reply

Marsh Posté le 16-11-2010 à 09:25:49   

Reply

Marsh Posté le 16-11-2010 à 10:29:39    

Moi j'arrivais à le faire avec  "sshpass", si j'amais ca peut t'aider.

Reply

Marsh Posté le 16-11-2010 à 13:59:46    

Merci, je ne connaissais pas l'existence de ce prog. Mais je viens d'essayer et j'ai le même problème qu'avec expect : création d'un processus zombi et ssh qui attend la fin de l'exécution de "sleep" avant d'exécuter la commande suivante. Il y a probablement un bout de code au niveau de ssh qui provoque ce problème (peut être une sécurité ?) lors de l'utilisation de l'option -f.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed