mit dem automatischen abholen von kontoauszügen habe ich mich auch mal beschäftigt und nur einen kleinen hack erstellt leider ist's momentan dabei geblieben, geplant ist aber ein modul zur synchronisierung mit beliebiger buchhaltungssoftware.
noch was nettes zum lesen / schreiben von konfigurationen, es wird ein perl objekt serialisiert/gelesen d.h. es sind strukturierte daten möglich:
== config files ==================================================
my $CONF = &load_data("file.conf");
$CONF->{'attr'}='value'; $CONF->{'hash'}->{'a'}='b'; . . &safe_data("file.conf",$CONF);
sub load_data { my ($rcfile) = @_; use vars qw($data); if (-r "$rcfile") { debug_msg("lade daten $rcfile"); do "$rcfile"; } else { $data = {}; } return $data; }
sub safe_data { my ($rcfile,$data) = @_; debug_msg("schreibe daten $rcfile"); $Data::Dumper::Purity = 1; $Data::Dumper::Deepcopy = 1; $Data::Dumper::Indent = 1; if (open(FD, ">$rcfile")) { print FD Data::Dumper->Dumpxs([$data], ['data'])."\n1;\n"; close FD; } else { error_msg("fehler beim schreiben $rcfile!"); } } ==================================================================
nun das konto-hack:
== getauszug ===================================================== #!/usr/bin/perl
use Net::SSLeay;
($_,$response,%headers) = Net::SSLeay::post_https('ww2.homebanking-sachsen.de', 443, "/cgi/login.cgi/Spk_Leipzig", '', Net::SSLeay::make_form('KtoNr'=>'xxxxxxxxxx','PIN'=>'yyyyy'));
($url)=/action="/cgi/kontostand.cgi/(.*)"/i; print "$url\n\n";
($_,$response,%headers) = Net::SSLeay::post_https('ww2.homebanking-sachsen.de', 443, "/cgi/kontostand.cgi/$url", '', Net::SSLeay::make_form('FILE'=>'kontostand.html'));
($_,$response,%headers) = Net::SSLeay::post_https('ww2.homebanking-sachsen.de', 443, "/cgi/kontoumsaetzewahl.cgi/$url",'', Net::SSLeay::make_form());
($_,$response,%headers) = Net::SSLeay::post_https('ww2.homebanking-sachsen.de', 443, "/cgi/kontoumsaetze.cgi/$url", '', Net::SSLeay::make_form("AnfangsDatum"=>"01.01.2002", "EndDatum"=>"31.12.2002","FUNKTION"=>"3"));
(@ret) = /(<tr>.*?</tr>)/isg;
($_,$response,%headers) = Net::SSLeay::post_https('ww2.homebanking-sachsen.de', 443, "/cgi/beenden.cgi/$url", '', Net::SSLeay::make_form());
open FH, ">umsaetze".time.".html"; print FH "<html><body><table>\n\n"; for ($i=0; $i < $#ret; $i++) { print FH $ret[$i]."\n"; } print FH "\n\n</table></body></html>\n\n"; close FH; ==================================================================