Как я делаю рукописный шрифт в bash, чтобы использовать команду telnet в перекурсивной форме?

Я хочу сделать рукописный шрифт в bash (простой цикл), чтобы тестировать сервер в c, который я сделал в linux (и он работает локально) и у меня есть проблема, чтобы делать "GET" просьбы HTTP. То, что я сделал, так это следующее:

#!/bin/bash
for i in `seq 1 10`;
do
telnet 127.0.0.1 8000
echo GET /faca.txt HTTP/1.1
done   

Но когда я это выполняю в консоли, он появляется у меня:

./script.sh
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

И если я пишу что-то:

./script.sh
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
escribo algo y doy enter
HTTP/1.1 404 Not Found
Content-type: text/html

<html>
 <body>
  <h1>Not Found</h1>
  <p>The requested URL was not found on this server.</p>
 </body>
</html>
Connection closed by foreign host.
GET /faca.txt HTTP/1.1
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Костлявая, что продолжает ждать "GET /faca.txt HTTP/1.1" хотя мы можем видеть, что после он это печатает. Мне нужно, чтобы, когда я буду работать, я сделал следующее:

./script.sh
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /faca.txt HTTP/1.1

Извините, если я не объясняюсь хорошо, но новый в сообществе. Большое спасибо.

3
задан 04.10.2016, 08:19
3 ответа

У твоего рукописного шрифта есть две проблемы.

Первый находится в просьбе, которую ты реализуешь, потому что просьба 'GET' должна заканчиваться линией в мишени. Следовательно, ты будешь должен изменять из-за 'я бросаю GET /faca.txt HTTP/1.1\r\n\r\n' (первый 'enter', чтобы посылать GET и второго для линии в мишени, которая закрывает просьбу).

Второй находится в последовательности команд: до тех пор, пока он не закончит выполнение 'telnet' он не работает я 'начинаю'. Следовательно, ты будешь должен secuenciarlo с трубопроводом ('pipe'). Также я рекомендую добавлять ожидание, потому что выполнение команд обычно является быстрее, чем связь сервера.

Так он у тебя остался бы:

#!/bin/bash
for i in `seq 1 10`;
do
(echo "GET /faca.txt HTTP/1.1\r\n\r\n"; sleep 1) | telnet 127.0.0.1 8000
done 
3
ответ дан 24.11.2019, 13:13

Другой выбор, он состоит в том, чтобы использовать wget

GNU Wget - утилита, чтобы загружать файлы Веба. Вынеси HTTP, HTTP и FTP.

А именно, с wget, ты сможешь загружать info любого Веба, и загрузишь все Ваши файлы в конечном каталоге.

wget http://google.com

И он загрузится index.html присоединенный с этим адресом.

Сейчас, если ты это хочешь сделать перекурсив, например, для списка адресов:

cat lista.dat
http://google.com
http://foo.web
-------

script.sh:

i=0
for a in `cat lista.dat`
do
  ((i++))
  mkdir $i
  wget $a
done

Это создаст каталог для каждого Веба, и загрузит файлы, ассоциируемые с url. Я надеюсь, что он помогает тебе

1
ответ дан 24.11.2019, 13:13

Если ты нуждаешься в том, чтобы сделать ее conexiГіn несколько раз, ты можешь использовать curl и можешь делать вызов следующего способа:

~$ curl 127.0.0.1:8000

с конечной остановки.

0
ответ дан 24.11.2019, 13:13
  • 1
    Просвет но идея состоит в том, чтобы делать это в bash используя " telnet" чтобы симулировать petici и # 243; n с браузера, не, если я объясняюсь. – Faca Poveda 06.10.2016, 00:37
  • 2
    Равный большое спасибо из-за твоего ответа. – Faca Poveda 06.10.2016, 00:37
  • 3
    с curl ты можешь делать точно то же самое (симулировать вызов с browser), проблемы telnet состоит в том, что он будет оставлять conexi и # 243; n открытая до тех пор, пока ты не закроешь ее вручную с combinaci и # 243; n клавиш. – Hugo Angeles 06.10.2016, 20:26