l'automatisation de la session telnet à l'aide de scripts bash
Je suis en train de travailler sur l'automatisation de certaines telnet tâches connexes, à l'aide de scripts Bash.
Une fois automatisé, il n'y aura aucune interaction de l'utilisateur avec telnet. (c'est totalement automatisé)
les scripts ressemble à quelque chose comme ceci:
# execute some commands on the local system
# access a remote system with an IP address: 10.1.1.1 (for example)
telnet 10.1.1.1
# execute some commands on the remote system
# log all the activity (in a file) on the Local system
# exit telnet
# continue on with executing the rest of the script.
Il y a 2 problèmes, je suis confronté ici:
-
Comment exécuter des commandes sur le système distant à partir du script (sans intervention humaine)?
De mon expérience avec certains codes de test, j'ai pu en déduire que lorsque le telnet 10.1.1.1 est exécutée, telnet va dans une session interactive et les lignes suivantes de code dans le script sont exécutées sur le système local. Comment puis-je exécuter les lignes de code sur le système distant plutôt que les locaux?
-
Je ne suis pas en mesure d'obtenir un fichier journal pour l'activité dans la session telnet sur le système local. Le stdout de redirection que j'ai utilisé pour faire une copie sur le système distant (je ne veux pas d'effectuer une opération de copie pour copier le connecter au réseau local). Comment puis-je obtenir cette fonctionnalité?
Vous devez vous connecter pour publier un commentaire.
Écrire un
attendre
script.Voici un exemple:
À exécuter:
\r
séquence à la fin de la commande, et quand j'ai cliqué sur entrer moi-même il n'a pas fonctionné pour une raison quelconqueBien que je suggère à l'aide d'attendre, aussi, pour les non-utilisation interactive de la normale des commandes shell pourraient suffire. Telnet accepte sa commande sur l'entrée standard stdin, donc vous avez juste besoin de tuyau ou d'écrire les commandes en elle:
(Edit: à en Juger par les commentaires, la commande à distance a besoin de temps pour traiter les entrées ou au début de l'SIGHUP n'est pas pris correctement par le telnet. Dans ces cas, vous pouvez essayer une courte nuit de sommeil, sur l'entrée:)
En tout cas, si ça devient interactif ou quoi que ce soit, de l'utilisation
expect
.sleep
et embrassa expressionssleep
fonctionne comme un rêve 😉 j'ai aussi ajouté| tee /dev/tty |
entre avoir la pleine session sur l'écran 😉echo -e "command\r";
Telnet est souvent utilisé quand vous apprenez le protocole HTTP. J'ai l'habitude d'utiliser ce script comme une partie de ma web-grattoir:
disons que le nom du script est get-page.sh alors:
vous donnera un document html.
Espère que ce sera utile à quelqu'un 😉
{ echo "GET / HTTP/1.1"; echo "Host: www.example.com"; echo; sleep 1; } | telnet www.example.com 80
. Notez que le sommeil n'est pas nécessaire au début (sauf si vous utilisez la commande ouvrir) et que seul un vide d'écho et de sommeil 1 au lieu de 2 est nécessaire à la fin.{ echo "GET / HTTP/1.1"; echo "Host: example.com"; echo; sleep 1; } | ncat --ssl example.com 443
Cela a fonctionné pour moi..
Je cherche à automatiser de multiples connexions telnet qui nécessite un nom d'utilisateur et mot de passe. La session telnet doit s'exécuter en arrière-plan indéfiniment puisque je suis l'enregistrement des journaux à partir de différents serveurs de ma machine.
telnet.sh automatise la connexion telnet à l'aide de la "prévoir" de commande. Plus d'informations peuvent être trouvées ici: http://osix.net/modules/article/?id=30
telnet.sh
sample_script.sh est utilisé pour créer un processus d'arrière-plan pour chacune des sessions telnet en cours d'exécution telnet.sh. Plus d'informations peuvent être trouvées dans la section des commentaires du code.
sample_script.sh
la commande "screen-ls'.
http://www.gnu.org/software/screen/manual/screen.html#Stuff à lire
plus sur l'écran et de ses options.
présélectionne et le rattache à une fenêtre spécifique pour envoyer une commande via
l'option ‘-X’ option sinon vous obtiendrez un "Pas d'écran session trouvé d'erreur".
Vous pouvez utiliser s'attendre à des scripts instaed de bash.
L'exemple ci-dessous montrent comment telnex dans une intégré conseil ayant pas de mot de passe
Suivante est de travailler pour moi...
placez tous vos IPs vous voulez en telnet IP_sheet.txt
Utiliser ssh pour ce but. Générer des clés sans l'aide d'un mot de passe et de le placer dans .authorized_keys de l'ordinateur à distance. Créer le script à exécuter à distance, de le copier sur l'autre machine, et puis il suffit de l'exécuter à distance à l'aide de ssh.
J'ai utilisé cette méthode plusieurs fois avec un grand succès. Notez également qu'il est beaucoup plus sécurisé que telnet.
ssh
est certainement plus sûr quetelnet
, mais certains périphériques IP il suffit de ne pas fournirssh
service et de s'appuyer surtelnet
protocole pour l'utilisation de l'appareil.Ici est de savoir comment utiliser telnet dans le shell bash/attendre
Jouer avec
tcpdump
ouwireshark
et voir ce que les commandes sont envoyées au serveur lui-mêmeEssayer cette
Certains serveurs nécessitent un retard avec le mot de passe qu'il ne détient pas les lignes sur la pile