Показаны сообщения с ярлыком cron. Показать все сообщения
Показаны сообщения с ярлыком cron. Показать все сообщения

вторник, 7 апреля 2009 г.

Работа с GnuCash. Часть 6. Получение котировок автоматически.

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Я совершенно забыл рассказать о том, как организовал ежедневное получение котировок.
Собственно, все как всегда просто, если не требовать слишком много. Хотелось бы знать, какое число пользователей gnucash - пользователи Windows. А для пользователей unix-подобных систем вполне удобен способ с использованием cron.

Итак, для получения котировок для файлика $HOME/finans без запуска gui-клиента достаточно выполнить следующую команду:
gnucash --add-price-quotes $HOME/finans


Кроме этого, нам надо бы загрузить требуемые переменные окружения, так как мы используем наши собственные модули получения котировок (Quote::Sberbank). Есть еще одна занятная особенность, связанная с установкой текущей локали: GnuCash получает котировки для той валюты, которая связана с текущей локалью. Особенность состоит в том, что при запуске cron эта переменная может оказаться и пустой. В итоге оформляем все это в виде небольшого скрипта:
kilork@phoenix ~ $ cat gnucash_fetch.sh
#!/bin/bash

if [ -z "$PERL5LIB" ]
then
PERL5LIB=~/perl/lib64/perl5/site_perl/5.8.8
else
PERL5LIB=$PERL5LIB:~/perl/lib64/perl5/site_perl/5.8.8
fi

MANPATH=$MANPATH:~/perl/share/man

export PERL5LIB MANPATH

export LANG="ru_RU.UTF-8"
export LC_ALL="ru_RU.UTF-8"
FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash --add-price-quotes $HOME/finans


Уже почти все, теперь вписываем вызов этого скрипта в crontab:
kilork@phoenix ~ $ crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXbHRdTU installed on Sat Jan 10 00:36:54 2009)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
55 23 *    * *    $HOME/gnucash_fetch.sh > $HOME/gnucash_fetch_log 2>&1


Таким образом, каждый день в 23:55 мы будем получать котировки и всегда будем видеть актуальное состояние наших активов без лишних телодвижений.