Что такое команда `GET` в Ubuntu?

Что такое Команда GET в Ubuntu? Когда я пробовал использовать telnet, я случайно набрал GET / слишком медленно, время истекло, и я случайно нажал Enter , и он выполнил команду GET .

Результат был:

HTML>
<HEAD>
<TITLE>Directory /</TITLE>
<BASE HREF="file:/">
</HEAD>
<BODY>
<H1>Directory listing of /</H1>
<UL>
<LI><A HREF="./">./</A>
<LI><A HREF="../">../</A>
<LI><A HREF="bin/">bin/</A>
<LI><A HREF="boot/">boot/</A>
<LI><A HREF="cdrom/">cdrom/</A>
<LI><A HREF="dev/">dev/</A>
<LI><A HREF="etc/">etc/</A>
<LI><A HREF="home/">home/</A>
<LI><A HREF="lib/">lib/</A>
<LI><A HREF="lib32/">lib32/</A>
<LI><A HREF="lib64/">lib64/</A>
<LI><A HREF="libx32/">libx32/</A>
<LI><A HREF="lost%2Bfound/">lost+found/</A>
<LI><A HREF="media/">media/</A>
<LI><A HREF="mnt/">mnt/</A>
<LI><A HREF="opt/">opt/</A>
<LI><A HREF="proc/">proc/</A>
<LI><A HREF="root/">root/</A>
<LI><A HREF="run/">run/</A>
<LI><A HREF="sbin/">sbin/</A>
<LI><A HREF="snap/">snap/</A>
<LI><A HREF="srv/">srv/</A>
<LI><A HREF="swapfile">swapfile</A>
<LI><A HREF="sys/">sys/</A>
<LI><A HREF="tmp/">tmp/</A>
<LI><A HREF="usr/">usr/</A>
<LI><A HREF="var/">var/</A>
</UL>
</BODY>
</HTML>

Что это за команда?

Когда я запускаю GET / HTTP / 1.1 , отображается http://www.i5.com/calacom в конце страницы ... Что это за веб-сайт?

Редактировать:

человек GET говорит:

LWP-REQUEST(1p)                                     User Contributed Perl Documentation                                    LWP-REQUEST(1p)

NAME
       lwp-request - Simple command line user agent

Серьезно! Я не запускал команду внутри telnet!

, где GET показывает GET: / usr / bin / GET /usr/share/man/man1/GET.1p.gz.

Все команды GET выполнялись на самом терминале! Не публикуйте в telnet ответы о HTTP. Я не новичок в HTTP.

-1
задан 19 June 2021 в 14:49

2 ответа

Это тоже было для меня в новинку. Однако, проведя небольшое расследование, я пришел к следующему выводу:

$ whereis GET
GET: /usr/bin/GET /usr/share/man/man1/GET.1p.gz

Итак, это «команда» в / usr / bin .

$ file /usr/bin/GET ; ll /usr/bin/GET
/usr/bin/GET: symbolic link to lwp-request
lrwxrwxrwx 1 root root 11 Jan 11 21:01 /usr/bin/GET -> lwp-request*

Это символическая ссылка для lwp-запроса в том же каталоге.

$ ll /usr/bin/ | grep lwp-request
lrwxrwxrwx  1 root root          11 Jan 11 21:01 GET -> lwp-request*
lrwxrwxrwx  1 root root          11 Jan 11 21:01 HEAD -> lwp-request*
lrwxrwxrwx  1 root root          11 Jan 11 21:01 POST -> lwp-request*
-rwxr-xr-x  1 root root       16200 Jan 11 21:01 lwp-request*

Есть и другие «символические ссылки» на тот же исполняемый файл.

$ file /usr/bin/lwp-request ; dpkg -S /usr/bin/lwp-request
/usr/bin/lwp-request: Perl script text executable
libwww-perl: /usr/bin/lwp-request

Это сценарий Perl, входящий в пакет libwww-perl .

$ man GET

Дополнительная информация о команде покажет, что существует опция -u :

-u Печать метода запроса и абсолютный URL-адрес по мере выполнения запросов.

Итак, если мы попробуем выполнить команду в вопросе с параметром -u :

$ GET -u / HTTP/1.1

отобразится:

GET file:/
<HTML>
<HEAD>
<TITLE>Directory /</TITLE>
<BASE HREF="file:/">
</HEAD>
<BODY>
<H1>Directory listing of /</H1>
...
</BODY>
</HTML>
GET http://www.HTTP.com/1.1
<html><head><title>www.http.com</title></head><frameset BORDER='0' frameborder='0' framespacing='0' rows='100%,*'>
<frame name='target' src='http://www.i5.com/calacom'>
<noframes>  <body BGCOLOR='#FFFFFF'>
This page requires that your browser supports frames.
<BR>You can access the page without frames with this <a href='http://www.i5.com/calacom'>link</A>.
</body></noframes></frameset></html>

Мы увидим, что когда команде GET дается два аргументов, он пытается получить доступ к двум URL-адресам:

  1. file: /
  2. http://www.HTTP.com/1.1

Первый - это список локального каталога / . Вторая - (вероятно, несуществующая) «страница» 1.1 веб-сайта http.com , которая содержит «фрейм» для отображения страницы http: / /www.i5.com/calacom.

0
ответ дан 28 July 2021 в 11:27

Это действительно метод HTTP GET, но не специфичный/связанный с telnet. GET просто посылает GET запрос и отображает вывод в STDOUT. Когда вы выполняете GET /, вы фактически отправляете GET запрос к вашей корневой папке. Чтобы проверить это, откройте любой браузер и просто введите / в строке URL. Теперь просмотрите элементы и вы заметите, что HTML страницы совпадает с тем, что вы получили в терминале.

Я разработал простой REST API для тестирования. Вот как выглядят результаты:

$ GET localhost:8090
{
    "bookID": 2091,
    "title": "Dear Genius",
    "authors": "Ursula Nordstrom-Leonard S. Marcus-Maurice Sendak",
    "average_rating": 4.39,
    "isbn": 64462358,
    "language_code": "eng",
    "ratings_count": 518,
    "price": 2107
}

Вы можете найти руководство по lwp-request(1): Простой пользовательский агент - Linux man page. Цитирую оттуда:

Эта программа может быть использована для отправки запросов к WWW-серверам и вашей локальной файловой системе. Содержимое запроса для методов POST и PUT считывается из stdin. Содержимое ответа выводится на stdout. Сообщения об ошибках выводятся на stderr. Программа возвращает значение статуса, указывающее на количество URL, которые не сработали.

1
ответ дан 28 July 2021 в 11:27

Другие вопросы по тегам:

Похожие вопросы: