Initial commit.
This commit is contained in:
140
munincurrency
Normal file
140
munincurrency
Normal file
@@ -0,0 +1,140 @@
|
||||
#!/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;
|
||||
|
||||
Reference in New Issue
Block a user