SCP dans un script Shell sans utiliser RSA [Résolu/Fermé]

Signaler
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
-
zipe31
Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
-
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 !


Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
4284
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.
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
3
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.
zipe31
Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
4284
;-))
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
3
Oh parfait !
Merci beaucoup zipe ^^
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
3
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.
zipe31
Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
4284
On peut voir le contenu de ton script (en masquant bien les choses sensibeules ;-)) )
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
3
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.
zipe31
Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
4284
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

$
Messages postés
23
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
29 mars 2011
3
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
zipe31
Messages postés
37642
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 décembre 2019
4284
Happy for you ;-))

Bonne journée @ toi aussi.