Envoi de fichier avec scp

Netbeans est un bon logiciel mais il souffre d'un défaut qui commence à être rédhibitoire : sa lourdeur ! Lorsque j'ouvre un projet conséquent (comme un projet avec Joomla / Virtuemart), je peux facilement me faire un café en attendant de pouvoir commencer. Si j'ai le malheur de laisser le projet ouvert sans rien faire dessus, il reste figé un bon moment avant de me rendre la main... Bref, il est temps pour moi de passer à plus léger et plus universel : Vi !

Au delà de l'autocomplétion et autres gadgets bien utiles, il est un aspect de Netbeans que j'adore (j'ai même quitté Eclipse et Aptana pour ça) : l'envoi de fichier par FTP via un raccourci clavier... Je n'ai pas encore réussi à retrouver ce comportement avec Vim mais ma petite découverte de ce soir va peut être changer la donne : j'ai trouvé comment envoyer un fichier par scp sans avoir à attendre pour saisir mon mot de passe (via http://www.lesitedemika.org/wika/scp-ssh-en-script-avec-expect)

La première chose est d'installer expect. La seconde est de créer le script suivant (scp_expect.sh par exemple) et de le rendre exécutable :

<code>
#!/usr/bin/expect -f

# effectue le transfert par SCP (sur SSH)
set timeout 3600

set localfile [lindex $argv 0]
set distfile [lindex $argv 1]
set servername [lindex $argv 2]
set password [lindex $argv 3]

spawn scp $localfile $servername:$distfile
expect "password:"
send -- "$password\r"
expect "100%"
exit 0
</code>

Il s'utilise de la façon suivante : scp-expect.sh /home/user-local/fichier.txt /home/user-dist/fichier.txt user-dist@serveur-dist.com pass-de-user-dist

Petite explication :

Plus qu'à mapper ça et à moi les joies de l'upload quasi automatique (de toute façon, avec Netbeans, je ne faisais que de l'envoi manuel :) )