2010-03-24 3 views
1

Я хотел бы запустить скрипт telnet для проверки обработки входных данных моего веб-сайта. Я могу сделать это вручную:Сценарий telnet на веб-сервере

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


...html response 

Но я могу передать команду telnet в свой скрипт оболочки!

Я пробовал:

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

Это не дает никаких результатов!

ответ

2

(Возможно, это не единственная проблема) Вы должны «echo -en» и использовать одиночную кавычку для закрытия строк. Это делает Баш интерпретировать \ п правильно

С уважением

3

Я считаю, что netcat, иначе nc, гораздо лучше подходит для такого рода задачи.

Также, как упоминает Джузеппе, вы должны будете исправить цитату. Альтернативой bash -e является цитата с использованием $'this form', в которой \n, \t и т. Д. Интерпретируются bash при анализе командной строки, а не передаются по echo. Таким образом, эта форма применима ко многим различным утилитам.

+0

+1, nc лучше подходит для этого ИМХО. –

+0

Кроме того, последние версии bash распознают псевдофайл «/ dev/tcp/host/port». Используя эту функцию (если доступно), telnet больше не нужен. Bye –

+0

afaik,/dev/tcp не является особенностью bash, это зависит от конфигурации ядра, или от модулей, или ..something. В любом случае некоторые дистрибутивы (включая ubuntu и я считаю, большинство дебианских) не имеют этого средства. Но я мог ошибаться .. есть ли лучший способ проверить, чем 'ls/dev/tcp'? Это дает мне «Нет такого файла или каталога» в разделе ubuntu 9.10. – intuited

1

Обычный ответ на вопрос "Как создать скрипт?" «expect»