SCP dans un script Shell sans utiliser RSA

Résolu/Fermé
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 - 22 mars 2011 à 11:52
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 mars 2011 à 10:55
Bonjour,

Je viens vers vous pour un problème auquel je suis confronté depuis hier et que je n'arrive pas a régler.
En effet, j'ai développé un petit script de backup en Shell pour un serveur sous Linux, et j'aurais besoin d'envoyer l'archive ainsi crée sur un NAS distant.

Pour cela j'ai d'abord pensé à utilisé SCP, le problème étant que je ne peux pas utiliser d'authentification RSA car la conf du NAS est remise à zéro tous les jours.
Du coup je me demandais si il existait une autre solution, peut-être en passant le password depuis un fichier ou je ne sais quoi d'autre.

Dans le cas ou mon problème serait insoluble avec SCP, peut-être existe il d'autres solutions, comme monter le NAS sur le serveur avec Samba afin de copier directement mon archive...

En tout cas toute aide est la bienvenue.
Merci d'avance !


6 réponses

zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 566
22 mars 2011 à 12:24
Salut,

Tu peux utiliser "expect" pour transmettre le login et le password.
Tu peux utiliser "rsync" aussi si le NAS le permet et si la réinitialisation ne touche pas à la conf....
Si un serveur FTP est actif sur le NAS, via "lftp" ça doit être jouable.
0
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 3
22 mars 2011 à 16:10
Merci bien pour ces pistes, la commande expect a l'air de faire ce dont j'ai besoin, mais le man est plutôt fouillis, aurais-tu s'il te plait un exemple d'utilisation avec scp ?

Merci encore.
0
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 566
22 mars 2011 à 16:18
;-))
0
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 3
22 mars 2011 à 16:27
Oh parfait !
Merci beaucoup zipe ^^
0
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 3
22 mars 2011 à 18:04
Bon bon, après moults tests, je n'arrive pas à faire fonctionner expect, c'est étrange j'ai pourtant bien installé le paquet, mais il ne trouve pas les commandes d'expect

# sh testExpect.sh
testExpect.sh: line 4: spawn: command not found
couldn't read file "Password:\r": no such file or directory
testExpect.sh: line 6: send: command not found


Bref si quelqu'un a une idée... Je serais la demain matin =)
Bonne fin de journée tout le monde.
0
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 566
22 mars 2011 à 18:14
On peut voir le contenu de ton script (en masquant bien les choses sensibeules ;-)) )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 3
23 mars 2011 à 09:25
Voila mon script, il est très basique c'est juste pour tester le fonctionnement d'expect

#!/usr/bin/expect -f

set force_conservative 1 ;
set timeout 3

spawn scp /home/backup_global/log.txt root@192.168.69.210:/home/www/testscp/
expect "Password:\r"
send -- "[password_server]\r"


Je ne sais pas ce que font les lignes :
set force_conservative 1 ;
set timeout 3

Du coup j'ai essayé avec ou sans mais aucune différence.
0
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 566
23 mars 2011 à 10:10
Vérifie que "Expect" est bien dans "/usr/bin/expect".
Remplace les retours chariots "\r" par des sauts de ligne "\n".
Je viens de tester chez moi et y'a pas de soucis...

$ cat foo.sh
#!/usr/bin/expect -f

set force_conservative 1 ;

set timeout 2
spawn scp -P 222 plop root@192.168.10.20:/root/
expect "password:\n"
send -- "xxxxxxx\n"
expect -gl "\\\[*]\$*"

$ ./foo.sh
spawn scp -P 222 plop root@192.168.10.20:/root/
root@192.168.10.20's password:
plop   100%    0     0.0KB/s   00:00

$
0
VilainMelkor Messages postés 23 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 29 mars 2011 3
Modifié par VilainMelkor le 23/03/2011 à 10:54
Bon OK je viens de voir pourquoi depuis le début rien ne marche, je lançais mon script avec :
# sh testExpect.sh

Du coup en utilisant :
# ./testExpect.sh

ça marche beaucoup mieux ^^

Je viens de régler mes derniers petits soucis, ça marche sur la Debian et l'openSUSE.

Merci beaucoup en tout cas pour ta précieuse aide !
Je repasserai si d'autre petit problèmes se posent à moi.

Bonne journée
0
zipe31 Messages postés 36317 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 566
23 mars 2011 à 10:55
Happy for you ;-))

Bonne journée @ toi aussi.
0