L'envoi des Commandes par le biais de Telnet via un Script Bash

Je cherche à automatiser une session telnet dans Debian, mais j'ai de la difficulté quand il s'agit de l'envoi des commandes.

Par la recherche ici, j'ai eu une bonne compréhension de ce que je devais faire.

spawn telnet localhost
expect "login:"
send "test\n"
expect "Password:"
send "password\n"
sleep 10 //Time for the connection to be established
send "ls\n"

D'exécuter le script, c'correctement insérés le nom d'utilisateur. Il y a eu le champ mot de passe et je suis en supposant qu'il y est entré (même si je ne peux pas être pour vous comme les mots de passe sont vides dans Debian lors de la saisie). Elle s'est arrêtée pour l'attente, puis m'a ramené à mon compte (racine). Il n'a pas jamais se connecter à "test".

Modifier mon code pour être plus comme ma référence:

spawn telnet localhost
expect "login:"
send "test\n"
expect "Password:"
send "password\n"
interact

Cela conduit immédiatement à la connexion et à la connecter à mon "test" compte.
À partir d'ici j'ai essayé d'ajouter des commandes après interagir à l'aide d'envoyer, de l'écho, et juste en tapant la commande. Rien ne se passe jusqu'à ce que je suis sorti de la session telnet, puis je voudrais obtenir cette erreur.

Pour envoyer:

send: spawn id exp6 not open
    while executing
"send "ls\n""
    (file ".telnet.sh" line 8)

Pour echo:

invalid command name "echo"
    while executing
"echo "ls\n""
    (file ".telnet.sh" line 8)

Avec juste le nom de la commande "ls"
non valide le nom de la commande "ls"
lors de l'exécution
"ls"
(fichier ".telnet.sh" ligne 8)

Je me rends compte interagir donne le contrôle à l'utilisateur, mais pour une raison que c'est la seule façon de réellement me connecter sur le compte.

Personne ne sait pourquoi il est d'avoir des problèmes de connexion sans interagir? Si non, pourquoi je ne peut pas envoyer ces commandes jusqu'à la session telnet a terminé avec interact?

MODIFIER
Après quelques recherches, j'ai trouvé ce lien, qui à la fin s'résoudre qu'un script expect se termine immédiatement après, tout est fini, la fermeture de la session telnet. Ils ont dit ils ont résolu le problème en ajoutant s'attendre à un "$ " pour laisser le script en savoir plus les commandes sont envoyées à sa façon. J'ai essayé tout à l'aide de la '$' symbole comme le site proposé, mais il a fini les coups de pied de nouveau de moi. J'ai donc essayé ce.

Voici mon code mis à jour:

#!/usr/bin/expect
spawn telnet localhost
expect "debian login"
send "test\n"
expect "Password:"
send "password\n"
expect "test@debian:~$"
send "ls\n"

Maintenant, je suis toujours dans la session telnet pendant environ 10 secondes, puis il donne le coup de me. Si j'essaie d'entrer dans une commande en ce moment, il s'arrête pendant ce temps, puis exécute la commande, j'ai tapé après la session telnet ferme.

Des progrès sont réalisés. Lentement mais sûrement.

InformationsquelleAutor Dylan | 2014-09-08