Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/05/2007, à 17:12

Edwin

Automatiser en bash des commandes telnet

Bonjour,

#!/bin/bash

telnet mailserver.com 25
sleep 5
HELO
sleep 5
MAIL FROM:bill@gates.com
sleep 5
RCTP TO:edwin@totoland.com
sleep 5
DATA
sleep 5
Test
sleep 5
.
sleep 5
QUIT

Voilà mon problème est le suivant : comment automatiser des commandes telnet ? En effet le script n'arrive qu'à se connecter en telnet et ignore ensuite les autres commandes. Merci de m'aider. smile

Hors ligne

#2 Le 09/05/2007, à 17:38

Freddy

Re : Automatiser en bash des commandes telnet

Tu mets tes commandes dans un fichier texte, disons «commandes», puis un petit «cat commandes | telnet mailserver.com 25» devrait faire l'affaire.


There is no system but GNU, and Linux is one of its kernels.

Hors ligne

#3 Le 09/05/2007, à 22:17

kaworu

Re : Automatiser en bash des commandes telnet

Salut !
Si tu as un fichier avec les commandes, tu peux faire soit comme Freddy a dit :

cat commandes  | telnet mailserver.com 25

soit sans utiliser cat, c'est un peu mieux que le premier car un pipe ouvre un sous-processus, et que le shell a prévu une fonction exprès pour ça :

telnet mailserver.com 25 < commandes

Autrement si tu veux dans le même fichier tu peux utiliser un document en ligne :

telnet mailserver.com 25 << EOF
ici pleins de commandes telnet
EOF

Par contre telnet est vraiment une mauvaise idée, car tout passe en clair. Je te conseil vivement de préférer SSH.


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#4 Le 14/05/2007, à 16:46

hunterboo

Re : Automatiser en bash des commandes telnet

Vous avez raison seulement Etes-vous sur que tout cela gère le temps de réponse du serveur?
je supose que si ed a mis des "sleep 5" c'est pour anticiper cela...
Pensez-vous que c'est possible de faire un "telnet ip<commandes" en mettant de sleep dans les commandes?
A moins que le processus envoye bien les commandes une fois un résultat arrivé...

Hors ligne

#5 Le 15/05/2007, à 21:24

JoelS

Re : Automatiser en bash des commandes telnet

hunterboo a écrit :

Vous avez raison seulement Etes-vous sur que tout cela gère le temps de réponse du serveur?
je supose que si ed a mis des "sleep 5" c'est pour anticiper cela...
Pensez-vous que c'est possible de faire un "telnet ip<commandes" en mettant de sleep dans les commandes?
A moins que le processus envoye bien les commandes une fois un résultat arrivé...

Non, il n'y aura pas de problème dans les cas simples: les commandes envoyées sont bufferisées par les différents niveaux, et arriveront dans l'ordre au fur et a mesure que le processus aura besoin ou décidera de lire les lignes. Donc au contraire, il faut virer les 'sleep', sauf s'ils ont un sens à l'autre bout de la connexion.

Les problèmes apparaissent quand il faut traiter le retour pour générer l'envoi. Par exemple simplement quand on veut envoyer TOTO (respectivement TITI) si le processus a l'autre bout à envoyer TATA (respectivement TUTU). Bon l'exemple est débile, mais c'est un exemple. La, la bufférisation devient un vrai cauchemar.

Dans ce cas, une seule solution compléte: expect. Basé sur TCL, donc à la syntaxe tcl, c'est un toutil tout simplement génial pour faire ce genre de truc sans limite.

Hors ligne