Script shell pour envoyé un mot de pass

Résolu
Bonjour all, j'ai crée un petit script pour accéder à ssh mais je nesais comment lui envoyé le mot de pass pour qu'il ne le demande plus à l'exécution du script? je vous donne le bout du code que j'ai envie de faire (effacer automatiquement le contenu du dossier documents le soir) :

ssh -l monpc 192.168.0.5
là je dois envoyé le mot de pass
rm -rf ~/documents/*
logout
exit

Merci à tous
Configuration: Linux
Mozilla 1.6

24 réponses

Résumé de la discussion

Automatiser une connexion SSH et une suppression de fichiers sur un dossier distant sans intervention humaine pose un problème: envoyer le mot de passe lors de l'exécution et utiliser rm -rf ~/documents/*. Pour cela, plusieurs approches sont évoquées: installation de modules TCL et d'Expect, puis l'utilisation de spawn et send pour automatiser la saisie du mot de passe et lancer la commande distante. Enfin, des exemples concrets montrent l'utilisation d'Expect pour automatiser la saisie du mot de passe puis lancer la commande distante, bien que l'adaptabilité dépende du système et des paquets disponibles.

Bobot (l’IA à votre service)
  1. Merci à tous, ça marche bien maintenant. il fallait juste réinstaller mon system
    1. Bonjour, j'ai réinstallé mon system directement avec mandriva 2007 sans update mandrake 10, et mon script arrive à se connecter via ssh avec une machine. les commandes sont bien accéptées mais j'aimerai savoir comment executer une commande une fois la connexion établie car après le login je ne peux rien faire?? merci
      1. Modérateur
        Même en faisant comme au post#20 avec "interact" ?
    2. Pardon, oui c'est comme ça je fais et mon script et déjà un executable mais il dit toujous que la commande spawn et send sont inconnus. Merci encore
      1. Merci à tous mais ça marche pas avec le mien. est ce du à mon install : mandrake 10.0 update mandriva 2006 update mandriva 2007 ? si c'est le cas je vais réinstaller mon système et je vous tiens au courant.
        1. Modérateur
          Tu peux répondre aux questions posées au post #20 s'teuplé ;-))
      2. Modérateur
        Comment lances-tu ton script ? (./ton_script)
        Est-il exécutable ? (chmod +x ton_script)

        Je viens de refaire des essais et je n'ai aucun problème :
        #!/usr/bin/expect -f
        
        set force_conservative 1;
        
        set timeout 3
        spawn ssh -l $user $server -p222
        expect "password: $"
        send "xxxxxx\n"
        interact
        ;-))
        1. ssh s'est sur le port 22 donc il me semble qu'un :
          spawn ssh -l $user $server -p22 marchera mieux
          ;-)
        2. Modérateur
          @natasExact, sauf si on l'a changé, ce qui est mon cas ;-))
      3. essaye ça

        #!/usr/bin/expect -f
        set timeout 10
        spawn ssh username@server
        expect "password: \r"
        send -- "ton_password\r"
        rm -rf /pc/documents/*
        1. Merci, j'ai bien relu les liens et je ne vois de difference que le set forceinteractive, mais ça change rien car mon script s'arrête au niveau de spawn, send qui sont inconnus. Sauf s'il y a autre chose que j'ai oublié.
          1. J'ai arrangé le script comme ceux des liens :

            #!/usr/bin/expect -f
            set timeout 60
            spawn ssh -l username server
            expect "password: $"
            send "password\n"
            rm -rf /pc/documents/*

            voilà. Mais les commandes send et spawn sont inconnus
            1. Modérateur
              Salut,

              Tu pourrais nous afficher ton script (en masquant l'identifiant et la mot de passe) s'il te plaît, merci ;-))
              1. Quand je fais whereis tcl8.4-dev, il me donne tcl8: /usr/lib/tcl8.4
                urpmi tcl me donne Tous les paquetages sont déjà installés
                1. Modérateur
                  Salut,

                  tcl 8.4 est déja compris dans mon distrib

                  Oui, dans la mienne aussi :-)
                  Mais il doit avoir aussi un tcl8.4-dev
                  urpmi tcl 
                  te donne quoi
                  1. Merci, c'est possible mais j'ai pas trouver sur le net car tcl 8.4 est déja compris dans mon distrib (mdv 2007). j'ai insatllé expect.rpm, je l'ai désinstallé et j'essai d'installé expect-5.43.tar.gz mais au ./configure, il me dit que il n'y a aucun config de tcl alors que tclConfig.sh est bien présent.
                    1. je sais que ssh c'est pour une connexion sécurisée mais mon but c'est surtout d'apprendre, alors ça fait trop rien. surtout que c'est seulement sur mes machines même.Merci pour le conseil.
                      1. Modérateur
                        Euh es-tu sûr de ce que tu fais ? Parce que si tu mets un mot de passe dans ton script il sera en clair ce qui est très moyennement top d'un point de vue sécurité. A ta place j'établirais plutôt un système de clé ssh.

                        Bonne chance
                        1. Merci encore.
                          expect et tcl sont bien installés.

                          /usr/bin/expect /usr/lib/expect5.44 /usr/share/man/man1/expect.1.gz

                          /usr/lib/tcl8.4 /usr/share/tcl8.4

                          j'ai regardé man expect mais c'est toujours pareil que ceux qui étaient dans les liens.
                          1. Merci pour ta réponse mais je veux me connecter en utilisant un mot de pass et je crois ça marche en suivant les liens plus haut mais avec moi il plante au niveau de spawn.
                            • 1
                            • 2