SCP dans un script Shell sans utiliser RSA

Résolu
VilainMelkor Messages postés 23 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. VilainMelkor Messages postés 23 Statut Membre 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.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      ;-))
      0
  3. VilainMelkor Messages postés 23 Statut Membre 3
     
    Oh parfait !
    Merci beaucoup zipe ^^
    0
  4. VilainMelkor Messages postés 23 Statut Membre 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.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      On peut voir le contenu de ton script (en masquant bien les choses sensibeules ;-)) )
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. VilainMelkor Messages postés 23 Statut Membre 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.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  7. VilainMelkor Messages postés 23 Statut Membre 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
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Happy for you ;-))

      Bonne journée @ toi aussi.
      0