vendredi 16 octobre 2009

Automatiser les accès FTP,SFTP,SSH avec python pexpect

Voici un des moyens d'automatiser le téléchargement avec FTP,SFTP ou le lancement d'une commande avec ssh ou telnet, dans l'exemple, j'utilise le module python pexpect qui se connecter sur un serveur SFTP puis telecharge des fichiers. Pour ssh on peut utiliser le système de clés mais pour FTP, telnet ce n'est pas possible et si vous n'etes pas aussi l'admin du serveur distant.

Voici de code, évidemment il faut installer les paquets openssh-client et python-pexpect si vous utilisez ubuntu ou debian


#!/usr/bin/env python

import pexpect

p=pexpect.spawn('sftp -C -R 128 thierry@113.231.167.XXX')
p.expect("thierry@113.231.167.XXX's password: ")
p.sendline('MyVerySecurePassword')
p.expect('sftp> ')
p.sendline('get foo.bar /home/thierry/')
p.expect('sftp> ',timeout=None)
p.sendline('bye')


Ceci est un simple exemple vous pouvez l'améliorer en ajoutant un expect s'il demande d'accepter la clé du serveur ...