URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5096
[ Назад ]

Исходное сообщение
"Выдача кода 200 с помощью telnet"

Отправлено unlock , 12-Июл-07 12:59 
Всем привет!

Есть нетривиальная задачка, нужна небольшая подсказка как её реализовать.
Задача:
Проверить с юникс-машины выдачу кода 200 по запросу HEAD в определённое время.
В обычном режиме проверяем с формированием запроса при помощи telnet:
telnet hostname 80
Trying hostname...
Connected to hostname.
Escape character is '^]'.
вводим:
HEAD / HTTP/1.1
HOST: hostname

выдаётся код 200 OK
соединение закрывается.

Вопрос в том, чтобы это пихнуть в скрипт. Пробовал:

#!/bin/bash
(sleep 2; echo "HEAD / HTTP/1.1"; sleep 2; echo "HOST: hostname"; sleep 2; exit) | telnet hostname 80 >hostname.log

но похоже не передаю тем самым команды телнету.
Как их передать и чтобы всё в лог вписалось?


Содержание

Сообщения в этом обсуждении
"Выдача кода 200 с помощью telnet"
Отправлено vic , 12-Июл-07 15:08 
утилита expect в помощь


"Выдача кода 200 с помощью telnet"
Отправлено unlock , 12-Июл-07 17:26 
>утилита expect в помощь

А как справиться со следующим...:

мм есть к примеру скрипт:
#!/usr/bin/expect -f # Выполнение операции используя telnet
spawn telnet cisco.test.ru
expect  "login:" { send "adm\n"}
expect  "Password:" { send "пароль\n"}
expect "#" {send "show users\n"}
expect "#" {send "exit\n"}

тут всё ясно. Появляются #, посылаем команду.
А когда коннект идёт телнетом по 80 порту никаких # не появляется - пустая строка. Как передать и что сделать в этом случае?
Что-то вроде
#!/usr/bin/expect -f
spawn telnet hostname 80
expect "" {send "HEAD / HTTP/1.1\n"}
expect "" {send "HOST: hostname\n"}
expect "" {send "exit\n"}

не отрабатывает. Также не отрабатывают с \n и просто с send без expect.


"Выдача кода 200 с помощью telnet"
Отправлено Anonymous , 03-Май-08 21:58 
nc надо

"Выдача кода 200 с помощью telnet"
Отправлено wtf , 21-Авг-08 09:41 
На perle можно так:

use Net::Telnet();

my $t = new Net::Telnet(host => 'host.ru',
                        port => '80');

$t->open();
$t->print("HEAD / HTTP/1.0");
$t->print("\n");
my $respon;
($respon)=$t->waitfor('/200 OK/');
exit();