43 votes

Créer un script pour une session Telnet ?

Est-ce que quelqu'un connaît un moyen facile de créer un script qui peut se connecter à un serveur telnet, faire quelques trucs courants de telnety, puis se déconnecter ? J'ai affaire à des utilisateurs qui ne sont pas familiers avec telnet et les commandes qu'ils devront exécuter. Tout ce que je veux, c'est qu'ils puissent double-cliquer sur un script, et que ce script exécute automatiquement les commandes pour eux.

Vous vous demandez sans doute : "Sur quelle plate-forme les utilisateurs travaillent-ils ?" Ils seront à la fois sur Windows et sur Linux. Les implémentations dans des langages comme Perl, Java ou Python sont acceptables. Je vois que Perl a un module Net::Telnet. Quelqu'un l'a-t-il utilisé ?

Ma solution idéale serait de créer deux fichiers script... un fichier BAT pour Windows, et un script shell pour Linux. Bien que cela rende la double maintenance problématique, cela signifierait que je n'aurais pas à installer Perl/Java/Python/etc... sur chaque machine. Malheureusement, je n'ai vu aucun moyen d'automatiser une session telnet avec des fichiers batch ou des scripts shell.

Merci.

42voto

Vatine Points 8884

J'ai utilisé diverses méthodes de scriptage de sessions telnet sous unix, mais la plus simple est probablement une séquence de commandes echo et sleep, dont la sortie est envoyée à telnet. Le transfert de la sortie dans une autre commande est également une possibilité.

Exemple stupide

(echo password; echo "show ip route"; sleep 1; echo "quit" ) | telnet myrouter

Il s'agit (en gros) de récupérer la table de routage d'un routeur Cisco.

14voto

Brian Agnew Points 143181

Attendez-vous à est conçu pour cela et peut gérer les entrées/sorties ainsi que les délais d'attente, etc. Notez que si vous n'êtes pas un fan de TCL, il existe des modules Expect pour Perl/Python/Java.

EDIT : La page ci-dessus suggère que l'extrait de Wikipédia L'entrée est une ressource utile :-)

12voto

KevinDTimm Points 10056

Une autre méthode est d'utiliser netcat (ou nc, selon la posix) dans le même format que celui montré par vatine ou vous pouvez créer un fichier texte qui contient chaque commande sur sa propre ligne.

J'ai constaté que certains réseaux posix' ne gèrent pas correctement la redirection (c'est pourquoi je suggère netcat).

8voto

Arjan Keij Points 51

Ce vbs script recharge un switch cisco, assurez-vous que telnet est installé sur Windows.

Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "telnet"
WScript.Sleep 1000
oShell.Sendkeys "open 172.25.15.9~"
WScript.Sleep 1000
oShell.Sendkeys "password~"
WScript.Sleep 1000
oShell.Sendkeys "en~"
WScript.Sleep 1000
oShell.Sendkeys "password~"
WScript.Sleep 1000
oShell.Sendkeys "reload~"
WScript.Sleep 1000
oShell.Sendkeys "~"
Wscript.Quit

3voto

Vérifiez que le Outil SendCommand .

Vous pouvez l'utiliser comme suit :

perl sendcommand.pl -i login.txt -t cisco -c "show ip route"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X