[..] Telnet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Manwe
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mer. 08 oct. 2008 09:21
Status : Hors ligne

[..] Telnet

#1

Message par Manwe »

Bonjour,

Je fais du support et de la validation, et je suis amené a refaire souvent les même commandes sur des équipements en telnet.
Après avoir cherché comment automatiser telnet avec Autoit, je vous présente mes résultats:

Tout d'abord, je n'utilise pas le client telnet de microsoft car il y a des problèmes pour récupérer la sortie standard. Mais si quelqu'un a réussi proprement je suis preneur.
J'utilise donc plink.exe, (qui est en fait putty en ligne de commande, ), que vous pouvez trouver ici: http://the.earth.li/~sgtatham/putty/lat ... /plink.exe
plink.exe est a placer au même endroit que le script.

Faire de l'automatisation de telnet pour moi c'est :
créer la connexion a l'équipement en utilisant Run plink.exe IP
Envoyer une commande, et attendre un prompt ou une certaine chaine de caractère, pendant un certain temps, en loguant ou pas le contenu.
J'ai donc créé une fonction 'sendExpect' qui envoie une chaine de caractères, et qui en attend une autre.
► Afficher le texte
Modifié en dernier par Manwe le jeu. 02 sept. 2010 11:54, modifié 1 fois.
Un clavier azerty en vaut deux.
Avatar du membre
Manwe
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mer. 08 oct. 2008 09:21
Status : Hors ligne

Re: [..] Telnet

#2

Message par Manwe »

Ce que je vais surement ajouter a cette fonction sendExpect:
Pouvoir rechercher une chaine de caractères (ce qui est fait aujourd'hui), ou un tableau de chaines, et pouvoir rechercher plusieurs prompts par exemple dans une seule commande afin de gérer les cas d'erreurs.
Gérer de très gros buffers (on m'a demandé d'afficher et de logguer un fichier de plus de 500Mo)
Un clavier azerty en vaut deux.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Telnet

#3

Message par Tlem »

Est-ce que ceci ne pourrait pas convenir ?
http://www.autoitscript.fr/forum/viewto ... 722#p30722
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Manwe
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mer. 08 oct. 2008 09:21
Status : Hors ligne

Re: [..] Telnet

#4

Message par Manwe »

J'ai essayé directement avec les sockets et ca marche avec un serveur telnet simple, mais avec d'autres serveurs (notamment des machines Unix qui vont utiliser des fonctions avancées du serveur telnet au niveau authentification il me semble) ca ne marche pas.
Comme j'ai certains scripts qui se connectent sur les 2 types de machines, j'ai préféré utiliser une seule méthode de connexion. L'idéal serait le client telnet.exe de Microsoft, mais je n'ai pas réussi a le faire fonctionner correctement pour lire la sortie standard.

Il y a aussi le ssh (telnet crypté)
Je n'ai pas essayé mais plink permet de faire du ssh, et avec cette méthode il y a juste un paramètre à changer lors de la connexion.
Un clavier azerty en vaut deux.
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..] Telnet

#5

Message par xeno »

je suis sous seven x64 et je n'arrive pas a me connecter

en message d'erreur" j'ai expected string 'login' not found."

j'ai bien essayer de modifer la partie

If sendExpect($telnet_pid, '', 'login', 3, $file, 'Unable to connect equipment : ' &

avec "login as:"

mais c'est pareil, quand je fais a la main, sous dos, je me connect sans problème avec plink.exe

une idée


et j'ai le même soucis avec le script de Tlem

http://www.autoitscript.fr/forum/viewto ... 722#p30722
Avatar du membre
Manwe
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mer. 08 oct. 2008 09:21
Status : Hors ligne

Re: [..] Telnet

#6

Message par Manwe »

Dans mon exemple je recherche 'login', mais tu peux chercher une autre chaine de caractères.
Quand tu fais un telnet sur un equipement tu n'auras pas forcement les même choses.

Si je fais un telnet sur une Fedora, j'aurais quelque chose comme:
En vert ce que j'envoie comme texte. En rouge ce que j'attends.

Fedora Core release 4 (Stentz)
Kernel 2.6.17.1 on an i686
login: toto
Password: totopassword
Last login: Wed Sep 29 09:17:18 from 1.2.3.4
[toto@PC0 ~]$ date
Wed Sep 29 09:35:36 CEST 2010
[toto@PC0 ~]$


Ce qui donnerais avec ma fonction :
If sendExpect($telnet_pid, '', 'login', 3, $file) < 1 Then Return -1 ; je n'envoie rien, mais j'attends l'affichage de 'login'. Ca aurait pu être 'Fedora Core release 4'
If sendExpect($telnet_pid, 'toto', 'Password', 3, $file) < 1 Then Return -1 ; j'envoie toto, et j'attends qu'on me demande le mot de passe
If sendExpect($telnet_pid, 'totopassword', '$', 3, $file ) < 1 Then Return -1 ; j'envoie le mot de passe et j'attends le prompt
sendExpect($telnet_pid, "date", "$", 3, $file) ; ; j'envoie la commande 'date' et j'attends le prompt
Un clavier azerty en vaut deux.
Répondre