Я совершенно забыл рассказать о том, как организовал ежедневное получение котировок.
Собственно, все как всегда просто, если не требовать слишком много. Хотелось бы знать, какое число пользователей 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 мы будем получать котировки и всегда будем видеть актуальное состояние наших активов без лишних телодвижений.