Question

Quelqu'un sait-il d'un moyen facile de créer un script qui peut se connecter à un serveur telnet, faire des trucs telnet d'habitude, puis vous déconnecter? Je traite avec des utilisateurs qui ne sont pas familiers avec telnet et les commandes dont ils auront besoin pour fonctionner. Tout ce que je veux est pour eux de double-cliquer sur un script, et ont ce script exécute automatiquement les commandes pour eux.

Vous vous demandez probablement, « Quelle plate-forme sont les utilisateurs sur? » Ils seront sur Windows et Linux. Dans d'autres langues comme Implémentations Perl, Java ou Python sont acceptables. Je vois que Perl a un module Net :: Telnet. Quelqu'un at-il utilisé que?

Ma solution idéale serait de créer deux fichiers de script. un fichier BAT pour Windows et un script shell pour Linux. Bien que cela ferait double entretien d'une question, cela voudrait dire que je ne voudrais pas installer Perl / Java / Python / etc ... sur toutes les machines. Malheureusement, je ne l'ai pas vu aucun moyen d'automatiser une session Telnet avec des fichiers de commandes ou des scripts shell.

Merci.

Était-ce utile?

La solution

Attendez-vous à est construit 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 fan TCL, il y a des modules pour Perl Expect / Python / Java.

EDIT: La page ci-dessus suggère que Wikipedia Expect entrée est une ressource utile :-)

Autres conseils

Je l'ai utilisé diverses méthodes pour les sessions telnet de script sous unix, mais le plus simple est probablement une séquence de commandes d'écho et le sommeil, avec leur sortie canalisé dans telnet. Redirigeant la sortie dans une autre commande est également une possibilité.

exemple idiot

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

(basicallly) récupère la table de routage d'un routeur Cisco.

Une autre méthode consiste à utiliser netcat (ou nc, en fonction de ce qui posix) dans le même format que celui des émissions de Vatine ou vous pouvez créer un fichier texte qui contient chaque commande sur sa propre ligne.

J'ai trouvé que certains telnets « posix ne gèrent pas correctement rediriger (ce qui est la raison pour laquelle je suggère netcat)

Ce script VBS un commutateur de recharge cisco, assurez-vous 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

Il peut ne pas sembler une bonne idée, mais j'utilisé java et utilisé la programmation socket TCP / IP simple pour se connecter à un serveur Telnet et communication d'échange. Et il fonctionne parfaitement si vous connaissez le protocole mis en œuvre. Pour SSH, etc, il pourrait être difficile à moins que vous savez comment faire la poignée de main etc, mais simple telnet fonctionne comme un régal.

Une autre façon je l'ai essayé, utilisait processus externe en java System.exec () etc, puis laisser les fenêtres construites en telnet font le travail pour vous et que vous venez d'envoyer et de recevoir des données au processus système local.

Vérifier la outil sendCommand .

Vous pouvez l'utiliser comme suit:

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

user = "admin"
password = "\r"

def connect(A):
    tnA = telnetlib.Telnet(A)
    tnA.read_until('username: ', 3)
    tnA.write(user + '\n')
    tnA.read_until('password: ', 3)
    tnA.write(password + '\n')
    return tnA
def quit_telnet(tn)
    tn.write("bye\n")
    tn.write("quit\n")

Couple de questions:

  1. Pouvez-vous mettre des choses sur l'appareil que vous telnetting en?
  2. Les commandes exécutées par le script même ou ils varient selon la machine / utilisateur?
  3. Est-ce que vous voulez la personne cliquant sur l'icône d'avoir à fournir un code d'utilisateur et / ou mot de passe?

Cela dit, je l'ai écrit un certain Java il y a un moment pour parler à un couple de bandes d'alimentation compatibles IP (BayTech RPC3s) qui pourrait être utile pour vous. Si vous êtes intéressé je vais voir si je peux le déterrer et l'afficher quelque part.

J'aime l'exemple donné par Active State en utilisant python. Voici le plein . J'ai ajouté le journal simple en partie à partir du lien, mais vous pouvez obtenir l'essentiel de ce que vous pourriez faire.

import telnetlib

prdLogBox='142.178.1.3'
uid = 'uid'
pwd = 'yourpassword'

tn = telnetlib.Telnet(prdLogBox)
tn.read_until("login: ")
tn.write(uid + "\n")
tn.read_until("Password:")
tn.write(pwd + "\n")
tn.write("exit\n")
tn.close()

shell Bash supporte cette out-of-box, par exemple.

exec {stream}<>/dev/tcp/example.com/80
printf "GET / HTTP/1.1\nHost: example.com\nConnection: close\n\n" >&${stream}
cat <&${stream}

Pour filtrer et seulement montrer quelques lignes, exécutez:. grep Example <&${stream}

Ecrire la session Telnet dans un fichier Dos BAT et exécuter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top