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
-
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
-
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

Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 363
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.
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 363
;-))
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.
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 363
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.
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 363
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
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 363
Happy for you ;-))

Bonne journée @ toi aussi.