Автор Тема: Как получить данные из внешней программы  (Прочитано 6591 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Привет молодцы! (ударение на первый слог :)

Подскажите как можно получить выходные данные из прораммы которая запускается из скрипта, т.е. в скрипте я запускаю wget и мне нужно его остановить когда появится любая ошибка (301 302 404 500 401 и т.д) если 200 ОК то двигаем дальше.

Пробовал так:
$temp=`wget $durl`;
if ($temp eq "404 Not Found"){
   print"Error";
   exit();
}
else{
   print"OK"
}

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как получить данные из внешней программы
« Ответ #1 : 19 Августа 2003, 17:11:24 »
Посмотри что в твоем случае содержит $temp

if ($temp =~ m/200 OK/){
print "Ok!";
}else{
print "Bad news...";
}
The documentations is your friend

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #2 : 19 Августа 2003, 17:35:06 »
Пробовал.

temp ничего не содержит.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как получить данные из внешней программы
« Ответ #3 : 19 Августа 2003, 17:45:22 »
??? Что выдает print $temp?
The documentations is your friend

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #4 : 19 Августа 2003, 17:56:18 »
temp как бы чист, но в общем скирп работает.

я писал m/"..."/ (в кавычках).

Благодарствую.

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #5 : 19 Августа 2003, 18:02:59 »
А так?

$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
   print"OK"
} else {
   print"Error"
}
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #6 : 19 Августа 2003, 18:04:58 »
теперь другой вопрос.
 если файл уже сущействует wget  так и пишет (локализированная)
файл уже, существует, получение не производтся.

если добавляю условие
if ($temp =~ m/200 OK/){
print "Ok!";
}
elsif($temp =~ m/уже существует/){
print "Ok!";
}
else{
print "Bad news...";
}

скрипт выводит Bad news

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #7 : 19 Августа 2003, 18:06:52 »
Цитировать

А так?
$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
   print"OK"
} else {
   print"Error"
}


print $temp все равно ничего не выводит

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #8 : 19 Августа 2003, 18:14:51 »
Цитировать
/IE][A:
скрипт выводит Bad news

Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Как получить данные из внешней программы
« Ответ #9 : 19 Августа 2003, 19:28:22 »
perldoc perlipc
2B OR NOT 2B = FF

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #10 : 20 Августа 2003, 13:07:34 »
Цитировать
Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.


Я так понимаю что wget должен выводит в KOI8-r.
Строка для сообщения написана тоже в КОИ.

А если wget выводит в другой кодировке, то как узнать в какой именно.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как получить данные из внешней программы
« Ответ #11 : 20 Августа 2003, 13:23:31 »
Цитировать
/IE][A:
Я так понимаю что wget должен выводит в KOI8-r.

Ничего он не должен.
набери wget http://www.webscript.ru и посмотри на ответ
The documentations is your friend

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #12 : 20 Августа 2003, 13:41:20 »
Цитировать
...посмотри на ответ

Если я тебя правильно понял, то wget выдает:
Proxy request sentawaiting response... 200 OK

А если неправильно, то какой ответ ты имел ввиду?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Как получить данные из внешней программы
« Ответ #13 : 20 Августа 2003, 13:56:40 »
#!/usr/bin/perl
use strict;

my $durl = "http://www.webscript.ru";

my $temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
print"OK";
} else {
print"Error"
}

open FH, \'./index.html\';
print ;
close FH;

Что тебе еще непонятно?
The documentations is your friend

Оффлайн /IE][A

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как получить данные из внешней программы
« Ответ #14 : 20 Августа 2003, 17:37:57 »
Все пучком, работает, вот только теперь появилась трабла:
wget перестал выводит индикатор загрузки в real-time, выводит всю инфу уже после загрузки файла.
Можно это как то исправить.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28