Форумы

Geek's Notes Universe :: Форумы :: Web-Server

How to check HTTP server work using telnet

root
[ Истинный ДАО ]
Сообщений: 493
Возникла необходимость проверить из консоли работу HTTP сервера:

Начнем:

$ telnet mail.ru 80
Trying 194.67.57.26...
Connected to mail.ru.
Escape character is '^]'.
HEAD / HTTP/1.0
Host: mail.ru         "тут надо два раза нажать Enter"

HTTP/1.0 200 OK
Date: Fri, 12 Dec 2008 06:00:08 GMT
Server: Apache/1.3.27 (Unix) mru_xml/0.471 gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8 mod_mrim/0.17
Connection: close
Content-Type: text/html; charset=windows-1251
Content-Length: 94350
Set-Cookie: Mpopl=95482732; expires=Fri, 12 Dec 2008 06:15:08 GMT; path=/; domain=.mail.ru
Set-Cookie: mrcu=B8A34941FDE80C3792850AD6B051; expires=Mon, 10 Dec 2018 06:00:08 GMT; path=/; domain=.mail.ru
Cache-Control: no-cache,no-store,must-revalidate
Pragma: no-cache
Expires: Thu, 13 Dec 2007 06:00:08 GMT
Last-Modified: Fri, 12 Dec 2008 09:00:08 GMT

Connection closed by foreign host.


Ага теперь посмотрим html код главной страницы:

$  telnet gnu.su 80
Trying 77.221.154.202...
Connected to gnu.su.
Escape character is '^]'.

GET / HTTP/1.0
Host: gnu.su       "тут надо два раза нажать Enter"               

Server: nginx/0.6.32
Date: Fri, 12 Dec 2008 06:56:09 GMT
Content-Type: text/html
Connection: close
Last-Modified: Sat, 01 Nov 2008 09:15:39 GMT
ETag: "5198437-d92-490c1e3b"
Accept-Ranges: bytes
Content-Length: 3474

 ...............................
 Connection closed by foreign host.


Теперь напишем скрипт для запуска через cron, который выдает ошибку (которая отправится на почту пользователю запустившему скрипт) в случае проблем с сервером. Этот скрипт разместим на сервере который будет наблюдать за нашим сервером.

    (sleep 2 && echo "HEAD / HTTP/1.0" && echo "Host: gnu.su" && echo && sleep 2) \
    | telnet gnu.su 80 2>/dev/null | grep "HTTP/.*\..* 200 OK" \
    | awk 'BEGIN{k=0}{if ($0~" 200 OK") k=1}END{if (k==0) print "Сервер gnu.su недоступен!" }'


Все.

P.S. После тестирования оказалась, что фокус со sleep не всегда проходит. В этом случае можно решить проблему с помощью утилитой expect. Создадим скрипт и сделаем его исполняемым:

$ cat gnu.su.expect
  #!/usr/local/bin/expect
  spawn /usr/bin/telnet gnu.su 80
  expect scape {send "HEAD / HTTP/1.0\r"}
  send "Host: gnu.su\r"
  send "\r"
  expect eof


Теперь можно воспользоваться предыдущим примером :

./gnu.su.expect \
 | telnet gnu.su 80 2>/dev/null | grep "HTTP/.*\..* 200 OK" \

Модераторы: root, Frizze, andrey, Bender

<< Предыдущая тема | Следующая тема >>

Перейти:     Наверх