[putty] et automatiser des commandes ssh

Bonjour,

Je travaille actuellement sur un script qui permettrait d'automatiser des commandes ssh.
Pour ce faire, j'utilise putty avec comme paramètres : putty.exe -ssh -2 -P 22 admin@ip -pw pass -m commande.txt

Le fichier commande.txt contient la liste des commandes à effectuer une fois la connexion ouverte.
La connexion se passe sans problème.
Le soucis, c'est qu'une fois la connexion effectué, la première chose que le serveur demande est "press any key to continue".
Quoi que je mette dans commande.txt, le serveur me jette.

D'où ma question :
Comment faire comprendre à putty d'envoyer le code ASCII d'une touche ? ou peut-être existe il une autre possibilité pour simuler le "press any key".

Any idea?
Merci.

7 réponses

  1. Salut,

    Moie pour faire cela j'ai trouvé un addon a putty extraputty ( http://extraputty.free.fr ).
    Ce soft gratuit, te permet de sauvgarder des commandes ou de faires des sequence de commandes afin d'automatiser tout cela.
    CE petti addon permet depuis peu ,de développer toi meme un soft pour automatiser tes tache car il offre une API (DLL) afin que des application win32 puissent envoyer ou recevoir des donnees via tout les protocoles putty.

    J'ai vu qu'il y avait un example en MFC.

    Voila j'espère que cela pourra t'aider car j'ai cherche longtemps avant de trouver.

    Asebt.
    5
    1. Il y aussi KiTTY (http://www.9bis.net/kitty/ qui permet d'automatiser une connexion à un serveur SSH et de lancer automatiquement des commandes à distance.
      0
  2. Contributeur
    Simuler l'envoi d'un <enter> :
    echo | commande
    0
    1. à mettre dans commande.txt ?
      si tel est le cas, ça ne peut pas fonctionner.
      en effet, putty envoie les commandes se trouvant dans commande.txt directement au server ssh, et ce dernier ne connais pas le "echo".
      0
      1. Contributeur
        C'est putty ou une commande dans command.txt qui demande press any key ?
        quel genre de commande dans command.txt ?
        0
        1. il s'agit en fait de changer un paramètre sur un switch.
          le script doit donc :

          1. se connecter en ssh sur le switch (grace a putty)
          putty.exe -ssh -2 -P 22 admin@ip -pw pass -m commande.txt

          2. une fois connecté, putty execute les différentes commandes entrées dans le fichier texte.
          commande.txt pourrait par exemple contenir : 'show ip' ou 'conf t'.

          Comme je le disais, la connexion passe sans problème.
          Mais, le switch demande, d'appuyer sur une touche pour continuer une fois la connexion établie.
          Si j'envoie directement une commande, 'show ip' par exemple, il me jette avec le message : "Server refused to start a shell/command".

          J'espère que c'est plus clair ..
          Merci.
          0
        2. Contributeur
          Le switch doit avoir une option pour automatiser une connection sans intervention.
          le fichier command.txt ne contient que des commandes du switch ?
          0
        3. Bonjour,
          J'ai exécuté la commande indiquée, à savoir :
          putty.exe -ssh -2 -P 22 admin@ip -pw pass -m commande.txt
          Ca marche (merci).
          Mais j'aurais un script commande.txt qui prend des arguments. Je voudrais donc faire un truc du style "putty.exe -ssh -2 -P 22 admin@ip -pw pass -m commande.txt argument"
          J'aurais voulu savoir si c'était possible et quelle était la syntaxe...
          Merci !
          0
        4. Contributeur
          il faudrait exécuter un .bat avant le putty qui modifie le fichier commande.txt avec les arguments et appelle putty avec le fichier commande.txt modifié
          0
        5. Merci
          0
      2. conf t, show ip.... un cisco, ou un bluecoat ? ;-)

        pour cet usage j'utilise Linux et le prog "Expect"
        il attend un mot clé et envoi ce que t'as programmé.

        Ca fonctionne au poil.

        sous windows? desolé!
        0
        1. Pourquoi tu ne peux pas utiliser une connexion en telnet?

          Moi a ta place voila le script que j'aurai fait en PERL
          #!/usr/bin/perl
          use strict;

          my $tmpfilename = "$ENV{TMP_PERL}\\tmp$$";
          my $deviceip = $ARGV[0];

          open(TMPFILE,"+>$tmpfilename");
          print TMPFILE <<ECHO;
          login telnet ##ici tes commandes à taper
          mdp telnet
          ter len 0 ## sert a ne pas s'areter à 25 lignes

          sh int status

          exit
          ECHO
          close(TMPFILE);

          system("type $tmpfilename | nc -w 20 $deviceip 23 | grep -i \"connect\" > conf.log ");

          Bon lla il te faut la commande nc.exe et ici le script attend que tu lui donne l'ip du Switch

          Cordialement
          -4