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

Исходное сообщение
"Подскажите с чего начать скрипт на Перл."

Отправлено СергейКа , 05-Мрт-03 12:34 
Задача в следующем: Необходимо запрашивать страничку в интернете с курсом поставщика, затем сравниваем с курсом, сохраненным в файле, если курс изменился более чем на 1% отправляем письмо c bpvtytybtv на info@myserver.ru

как работать с файлами знаю, не знаю как запросить страничку с интернета  и отправить потом письмо.

Зарание спасибо


Содержание

Сообщения в этом обсуждении
"RE: Подскажите с чего начать скрипт на Перл."
Отправлено СергейКа , 05-Мрт-03 13:51 
>Задача в следующем: Необходимо запрашивать страничку в интернете с курсом поставщика, затем
>сравниваем с курсом, сохраненным в файле, если курс изменился более чем
>на 1% отправляем письмо c bpvtytybtv на info@myserver.ru
>
>как работать с файлами знаю, не знаю как запросить страничку с интернета
> и отправить потом письмо.
>
>Зарание спасибо
С отправкой разобрался
#!/usr/bin/perl
open(MAIL, '| /usr/libexec/sendmail/sendmail sss@myserver.ru</usr/home/sss/111');



"RE: Подскажите с чего начать скрипт на Перл."
Отправлено uldus , 06-Мрт-03 10:03 
>Задача в следующем: Необходимо запрашивать страничку в интернете с курсом поставщика,  

perldoc LWP, если нет скачай с http://cpan.org


"RE: Подскажите с чего начать скрипт на Перл."
Отправлено noname , 07-Мрт-03 19:28 
http://www.perl.com/pub/a/2003/01/22/mechanize.html

"Написал."
Отправлено СергейКа , 11-Мрт-03 18:08 
Может кому пригодится вот такой скрипт:

#!/usr/bin/perl

use Socket;

# подготавливаем строчку с параметрами формы
$forminfo = 'param1=val1¶m2=val2';

# подготавливаем и осуществляем соединение:

# выбираем работу через TCP
$proto = getprotobyname('tcp');

# открываем потоковый сокет
socket(Socket_Handle, PF_INET, SOCK_STREAM, $proto);

# подготавливаем информацию о сервере
$port = 80;
$host = "www.autopiter.ru";
$sin = sockaddr_in($port,inet_aton($host));

# соединяемся с сервером
connect(Socket_Handle,$sin) || die ("Cannot connect");

# передаем серверу команды, используя дескриптор сокета

# собственно команда GET
send Socket_Handle,"GET /about.asp HTTP/1.0\n",0;

# HTTP-заголовки
send Socket_Handle,"User-Agent: my agent\n",0;
send Socket_Handle,"SomeHeader: my header\n",0;
send Socket_Handle,"\n",0;

# начинаем чтение из дескриптора сокета аналогично
# тому, как читали из файла.

@mass=(<Socket_Handle>);
close (Socket_Handle);
$n=$#mass;
$s=0;
while ($s != $n) {
  if ($mass[$s]=~ m/EUR/) {
    $mass[$s]=~ s%<[^>]+>%%g;
    $mass[$s]=~ s%\s+% %g;
    @mmm=split / /, $mass[$s];
  }
  $s=$s+1;
}

$n=$#mmm;
$s=0;
while ($s != $n) {
  if ($mmm[$s]=~ m/EUR/) {
    $euro=$mmm[$s+1];
    $euro=~ s%\,%.%;
  }
  if ($mmm[$s]=~ m/USD/) {
    $usd=$mmm[$s+1];
    $usd=~ s%\,%.%;
  }
  if ($mmm[$s]=~ m/РУБ/) {
    $rub=$mmm[$s+1];
    $rub=~ s%\,%.%;
  }
  $s=$s+1;
}

open(K,"kurs.piter");
@kp=<K>;
close(K);
$oldeuro=$kp[1];
$oldusd=$kp[2];
$oldrub=$kp[3];

if (($rub/$euro)/($oldrub/$oldeuro)>1.01) {
  open(Z,">kurs.piter");
  print Z "Внимание компания ПИТЕР+ изменила курс. Замените курс в программе прайсы, (формат EURO, USD, РУБ)\n";
  print Z "$euro\n";
  print Z "$usd\n";
  print Z "$rub\n";
  close(Z);
  open (SENDMAIL, "|/usr/sbin/sendmail -t") || die "ERROR: Can not run sendmail";
  print SENDMAIL "MIME-Version: 1.0\n";
  print SENDMAIL "To: info,webmin,director\n";
  print SENDMAIL "Subject: PITER+, Izmenenie kursa\n\n";
  print SENDMAIL "Внимание компания ПИТЕР+ изменила курс. Замените курс в программе прайсы\n",
                 "Евро стал  $euro\n",
                 "Бакс стал  $usd\n",
                 "Рубль стал $rub\n";
  close (SENDMAIL);
}