141 lines
5.4 KiB
Perl
141 lines
5.4 KiB
Perl
#!/usr/bin/perl
|
|
use warnings "all";
|
|
use strict;
|
|
use POSIX qw(strftime);
|
|
|
|
# берём курс валют с сайта ЦБ РФ
|
|
my $data = `curl -s http://www.cbr.ru/scripts/RssCurrency.asp | iconv -f cp1251 -t utf8`;
|
|
|
|
$data = (split(/\[CDATA\[ /, $data))[1];
|
|
$data = (split(/\]\]/, $data))[0];
|
|
my @data = split(/<br> /, $data);
|
|
$data = undef;
|
|
|
|
my ($usd, $eu, $gbp, $swf, $jy, $chy);
|
|
foreach (@data){
|
|
if ($_ =~ /^Швейцарский франк/) { $swf = (split(/ \- /, $_))[1]; $swf =~ s/\,/\./; }
|
|
if ($_ =~ /^Фунт стерлингов Соединенного королевства/) { $gbp = (split(/ \- /, $_))[1]; $gbp =~ s/\,/\./; }
|
|
if ($_ =~ /^Доллар США/) { $usd = (split(/ \- /, $_))[1]; $usd =~ s/\,/\./; }
|
|
if ($_ =~ /^Евро/) { $eu = (split(/ \- /, $_))[1]; $eu =~ s/\,/\./; }
|
|
if ($_ =~ /^Японская иена/){ $jy = (split(/ \- /, $_))[1]; $jy =~ s/\,/\./; $jy =~ s/<br>//;}
|
|
if ($_ =~ /^Китайский юань/) { $chy = (split(/ \- /, $_))[1]; $chy =~ s/\,/\./; }
|
|
}
|
|
|
|
# Берём цену бочки нефти с портала mfd.ru
|
|
my $date = strftime "%d.%m.%Y", localtime;
|
|
my $oil = `curl -s -q 'http://mfd.ru/export/handler.ashx/_Brent_Crude_Oil_15min_09122015_09122015.txt?TickerGroup=2&Tickers=1*&Alias=false&Period=4&timeframeValue=1&timeframeDatePart=day&StartDate=$date&EndDate=$date&SaveFormat=0&SaveMode=0&FileName=_Brent_Crude_Oil_15min_09122015_09122015.txt&FieldSeparator=%253b&DecimalSeparator=.&DateFormat=yyyyMMdd&TimeFormat=HHmmss&DateFormatCustom=&TimeFormatCustom=&AddHeader=true&RecordFormat=2&Fill=true'`;
|
|
my @a = split(/\n/, $oil);
|
|
$oil = $a[@a - 1];
|
|
$oil = (split(/;/, $oil))[4];
|
|
|
|
# берём цену бакса и еврика у альфабанка
|
|
$data = `curl -q -s https://alfabank.ru/_/rss/_currency.html|iconv -f cp1251 -t utf8`;
|
|
my ($alfadollarbuy, $alfadollarsell, $alfaeurobuy, $alfaeurosell);
|
|
if ($data =~ /<td id="Доллар СШАcashBy">(\d+\,?\d*)<\/td>/){
|
|
$alfadollarbuy = $1;
|
|
$alfadollarbuy =~ s/,/\./;
|
|
}
|
|
if ($data =~ /<td id="Доллар СШАcashSell">(\d+\,?\d*)<\/td>/){
|
|
$alfadollarsell = $1;
|
|
$alfadollarsell =~ s/,/\./;
|
|
}
|
|
|
|
if ($data =~ /<td id="ЕвроcashBy">(\d+\,?\d*)<\/td>/){
|
|
$alfaeurobuy = $1;
|
|
$alfaeurobuy =~ s/,/\./;
|
|
}
|
|
if ($data =~ /<td id="ЕвроcashSell">(\d+\,?\d*)<\/td>/){
|
|
$alfaeurosell = $1;
|
|
$alfaeurosell =~ s/,/\./;
|
|
}
|
|
|
|
# берём цену бакса и еврика у банка москвы
|
|
$data = `curl -s -q http://www.bm.ru/ru/personal/services/exchange/`;
|
|
my($bmdollarbuy, $bmdollarsell, $bmeurobuy, $bmeurosell);
|
|
if($data =~ /Доллар США\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>/){
|
|
$bmdollarsell = $2;
|
|
$bmdollarbuy = $1;
|
|
$bmdollarsell =~ s/,/\./;
|
|
$bmdollarbuy =~ s/,/\./;
|
|
}
|
|
if($data =~ /ЕВРО\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>/){
|
|
$bmeurosell = $2;
|
|
$bmeurobuy = $1;
|
|
$bmeurosell =~ s/,/\./;
|
|
$bmeurobuy =~ s/,/\./;
|
|
}
|
|
|
|
# берём цену бакса и еврика у райффазена
|
|
$data = `curl -s -q http://www.raiffeisen.ru/currency_rates/`;
|
|
my ($raifdollarbuy, $raifdollarsell, $raifeurobuy, $raifeurosell);
|
|
if($data =~ /"USD":{"UNITS":1,"RUR_BUY":"(\d+\.\d+)","RUR_SALE":"(\d+\.\d+)","USD_BUY":.+,"USD_SALE":1}/){
|
|
$raifdollarbuy = $1;
|
|
$raifdollarsell = $2;
|
|
}
|
|
if($data =~ /"EUR":{"UNITS":1,"RUR_BUY":"(\d+\.\d+)","RUR_SALE":"(\d+\.\d+)","USD_BUY":.+,"USD_SALE":.+}/){
|
|
$raifeurobuy = $1;
|
|
$raifeurosell = $2;
|
|
}
|
|
|
|
# берём цену бакса и еврика у сбера
|
|
$data = `curl -s -q http://data.sberbank.ru/moscow/ru/quotes/currencies/?base=beta|iconv -f cp1251 -t utf8`;
|
|
my $sberdollarbuy = (split(/\s+</, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[1]))[0];
|
|
$sberdollarbu =~ s/,/\./;
|
|
my $sberdollarsell = (split(/\s+</, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[2]))[0];
|
|
$sberdollarsel =~ s/,/\./;
|
|
my $sbereurobuy = (split(/\s+/, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[3]))[0];
|
|
$sbereurobuy =~ s/,/\./;
|
|
my $sbereurosell = (split(/\s+/, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[4]))[0];
|
|
$sbereurosel =~ s/,/\./;
|
|
|
|
# берём цену бакса и еврика у втб24
|
|
$data = `curl -s -q 'http://www.vtb24.ru/_vti_bin/Vtb24.Internet/CurrencyRateWebService.svc/GetCurrencyRatesJson?filter=8'`;
|
|
my ($vtbdollarbuy, $vtbdollarsell, $vtbeurobuy, $vtbeurosell);
|
|
if($data =~ /Buy.:.(\d+\,\d+).+USD.+Sell.:.(\d+\,\d+).+Title.:.Доллар США./){
|
|
$vtbdollarbuy = $1;
|
|
$vtbdollarsell = $2;
|
|
$vtbdollarbuy =~ s/,/\./;
|
|
$vtbdollarsell =~ s/,/\./;
|
|
}
|
|
if($data =~ /Buy.:.(\d+\,\d+).+EUR.+"Sell":"(\d*\,\d+)"\,.+"Title":"Евро"/){
|
|
$vtbeurobuy = $1;
|
|
$vtbeurosell = $2;
|
|
$vtbeurobuy =~ s/,/\./;
|
|
$vtbeurosell =~ s/,/\./;
|
|
}
|
|
|
|
|
|
open (DATA, ">/var/cache/munin/currency.txt");
|
|
print DATA <<TEXT;
|
|
usd:$usd
|
|
eu:$eu
|
|
gbp:$gbp
|
|
swf:$swf
|
|
jy:$jy
|
|
chy:$chy
|
|
oil:$oil
|
|
alfadollarbuy:$alfadollarbuy
|
|
alfadollarsell:$alfadollarsell
|
|
alfaeurobuy:$alfaeurobuy
|
|
alfaeurosell:$alfaeurosell
|
|
bmdollarbuy:$bmdollarbuy
|
|
bmdollarsell:$bmdollarsell
|
|
bmeurobuy:$bmeurobuy
|
|
bmeurosell:$bmeurosell
|
|
raifdollarbuy:$raifdollarbuy
|
|
raifdollarsell:$raifdollarsell
|
|
raifeurobuy:$raifeurobuy
|
|
raifeurosell:$raifeurosell
|
|
sberdollarbuy:$sberdollarbuy
|
|
sberdollarsell:$sberdollarsell
|
|
sbereurobuy:$sbereurobuy
|
|
sbereurosell:$sbereurosell
|
|
vtbdollarbuy:$vtbdollarbuy
|
|
vtbdollarsell:$vtbdollarsell
|
|
vtbeurobuy:$vtbeurobuy
|
|
vtbeurosell:$vtbeurosell
|
|
TEXT
|
|
|
|
exit 0;
|
|
|