2010-03-24 8 views
1

Je voudrais scripter telnet pour tester la gestion des entrées de mon site web. Je peux le faire manuellement:Script telnet sur le serveur web

telnet localhost 8888 
... 
GET/HTTP/1.1\n 
Host: localhost 


...html response 

Mais je peux passer commande à telnet dans mon script shell!

J'ai essayé:

(echo "GET/HTTP/1.1\n"; echo "Host: localhost \n\n"; sleep 1) | telnet localhost 8888 

Il ne donne aucun résultat du tout!

Répondre

2

(Probablement pas le seul problème) Vous devriez "echo -en", et utiliser des guillemets simples pour fermer les chaînes. Ceci fait de bash interpréter \ n correctement

Cordialement

3

Je trouve que netcat, alias nc, est beaucoup mieux adapté à ce genre de tâche.

De même que Giuseppe mentionne que vous devrez corriger le devis. Une alternative à bash -e est de citer en utilisant $'this form', dans lequel \n, \t, etc. sont interprétés par bash lors de l'analyse de la ligne de commande plutôt que d'être transmis à echo. Donc, ce formulaire est applicable à de nombreux utilitaires différents.

+0

+1, nc est mieux adapté pour cette IMHO. –

+0

De plus, les versions récentes de bash reconnaissent le pseudofichier "/ dev/tcp/host/port". En utilisant cette fonctionnalité (si disponible) telnet n'est plus nécessaire. Bye –

+0

afaik,/dev/tcp n'est pas une fonctionnalité de bash, cela dépend de la configuration du noyau, ou des modules activés, ou ..quelque chose. Quoi qu'il en soit, certaines distributions (y compris Ubuntu et je crois que la plupart des goûts de Debian) n'ont pas cette facilité. Mais je peux me tromper ... y a-t-il une meilleure façon de vérifier que 'ls/dev/tcp'? Cela me donne "No tel fichier ou répertoire" sous Ubuntu 9.10. – intuited

1

La réponse habituelle à "Comment puis-je scripter x?" est "expect"

Questions connexes