#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.
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
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