remplir des saisies clavier automatiquement ?

remplir des saisies clavier automatiquement ? - Shell/Batch - Programmation

Marsh Posté le 27-02-2006 à 09:07:17    

Salut, en fait je voudrais automatiser des entrées clavier lorsque je lance de nombreuses fois un binaire qui les demande :
 

  • Exemple théorique :

Est il possible de faire qq chose dans le genre :
j'ai un script ou un binaire qui demande des entrées clavier du genre 3 yes/no d'affilée.  
Comme je lance le script souvent je voudrai faire un fichier qui contient par exemple  
no
yes
no
et le mettre en "injection" dans la commande avec un appel comme ceci :  
$commande < fichier_entrees_clavier
question1 : no
question2 : yes
question3 : no
done :)
 

  • Exemple concret :

je suis amené à établir une connexion ssh sur une centaine de postes afin d'établir les authorized_keys et known_hosts pour la première fois. Donc j'aimerai le faire via une boucle et ne pas rentrer les mots de passe à la main...
y a t il moyen de faire un truc sur le même modèle que précédemment :  
$ssh damcmoi@mon_ordi < fichier_passwd
?
 
Merci et bonne journée.
 

Reply

Marsh Posté le 27-02-2006 à 09:07:17   

Reply

Marsh Posté le 27-02-2006 à 11:07:37    

ya ptèt un moyen avec expect. Qq'un connait? Je cherche :)...

Reply

Marsh Posté le 27-02-2006 à 13:00:16    

damcmoi a écrit :

Salut, en fait je voudrais automatiser des entrées clavier lorsque je lance de nombreuses fois un binaire qui les demande :
 

  • Exemple théorique :

Est il possible de faire qq chose dans le genre :
j'ai un script ou un binaire qui demande des entrées clavier du genre 3 yes/no d'affilée.  
Comme je lance le script souvent je voudrai faire un fichier qui contient par exemple  
no
yes
no
et le mettre en "injection" dans la commande avec un appel comme ceci :  
$commande < fichier_entrees_clavier
question1 : no
question2 : yes
question3 : no
done :)
 

  • Exemple concret :

je suis amené à établir une connexion ssh sur une centaine de postes afin d'établir les authorized_keys et known_hosts pour la première fois. Donc j'aimerai le faire via une boucle et ne pas rentrer les mots de passe à la main...
y a t il moyen de faire un truc sur le même modèle que précédemment :  
$ssh damcmoi@mon_ordi < fichier_passwd
?
 
Merci et bonne journée.


 
Je présume que tu es sous Unix puisques tu parles de ssh...
2 solutions :

  • 1) tu crées un fichier "fic" ne contenant que les réponses, une réponse par ligne, puis tu lances

commande <fic


 

  • 2) tu lances la commande avec la double redirection entrante suivie d'un token de ton choix. Tout ce qui sera entre la commande et le token sera interprété comme réponse attendue. ex:

commande << _EOT_
yes
no
yes
no
no
yes
_EOT_
...suite du script...


Message édité par Sve@r le 27-02-2006 à 13:02:15

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 27-02-2006 à 19:30:54    

et sur windows , ca marcherais comment ? :)
mais j ai pas tres bien compris , serait ce la meme commande que si je demandais a mon .bat de lancer le blok note et d ecrire a l ecran par exemple la phrase "salut comment ca va ?" ?  
si ca l est , et si kkun voulais bien me dire qu elle est la commande , je serai ravi ! :)
merci d avance et j esper que tu a trouver damcmoi ;)

Reply

Marsh Posté le 27-02-2006 à 22:00:05    

payes a écrit :

et sur windows , ca marcherais comment ? :)


J'en sais rien, je ne vois pas de quoi tu parles. Win... dows ? fenêtre ??? kekckeça ? Connais que Unix/Linux moi...

payes a écrit :

mais j ai pas tres bien compris , serait ce la meme commande que si je demandais a mon .bat de lancer le blok note et d ecrire a l ecran par exemple la phrase "salut comment ca va ?" ?


notepad.exe
echo Salut comment ça va ?



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 28-02-2006 à 00:01:59    

Le coup du < ne marchera pas pour les mots de passe. La meilleur solution est effectivement d'utiliser expect.

Reply

Marsh Posté le 28-02-2006 à 09:38:24    

merci bcp pour la réponse Sve@r :)
Je suis effectivement sous Linux et interessé par les 2 cas de figure : avec et sans mot de passe.
J'ai trouvé un truc pour expect mais j'aimerais juste avoir une précision si vous savez :
dans l'exemple suivant :

#!/usr/bin/expect -f
 
spawn ssh -l mon_identifiant mon_hote_distant
expect {
    -re mon_invite_mot_de_passe {
      send mon_mot_de_passe\r
      expect {
        -re mon_invite {
          send "ma_commande et ses arguments\r"
          sleep 1
        }
      }
    }
}


ce qui est après "-re" est la question à laquelle je dois répondre? donc par exemple : "Password :" pour le premier -re?  
 
D'autre part, j'ai trouvé autoexpect, mais je ne comprends pas à quoi ça sert : en effet : on le lance et ensuite toutes les commandes que l'on tape sont entrées dans un fichier automatiquement créé qu'on pourra relancer si on veut (d'ailleurs je n'ai pas réussi à le faire marcher avec les mots de passe). Quelle peut bien être la différence avec un script shell où n'entrerait qu'une suite de commandes?
 
merci les gars :)


Message édité par damcmoi le 28-02-2006 à 09:47:07
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed