T-Mobile Rechnungen auspacken und umbenennen

Wed, 04. Nov 2009

Categories: de sysadmin Tags: GnuPG gpg Ruby T-Mobile

über T-Mobile RechnungOnline kann man sich die Rechnung als gpg-verschlüsselten Anhang per Mail schicken lassen – incl. Einzelverbindungsnachweis. Und obwohl’s nur 1x im Monat kommt, ist das Auspacken und Umbenennen in sinnvolle Dateinamen eine lästige Routinearbeit.

Also – automatisieren. Das folgende Ruby-Script erledigt das, nachdem der Rechnungsanhang in einen der Ordner „Downloads“ oder „Desktop“ gelegt wurde:

 1#!/usr/bin/ruby
 2
 3dst="#{ENV['HOME']}/Documents/tmobile"
 4
 5# 1. pull together all pgp crypted find Rechnung_15.10.2009.zip.pgp in Desktop, Downloads, local dir
 6["#{ENV['HOME']}/Downloads", "#{ENV['HOME']}/Desktop", dst].each do |dir|
 7  Dir.foreach(dir) do |file|
 8    m = /Rechnung_(\d{2})\.(\d{2})\.(\d{4})\.zip(\.pgp|\.gpg)?/.match file
 9    if m
10      s = system "mv #{dir}/#{file} #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip#{m[4]}"
11      s = system "gpg #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip#{m[4]}" if m[4]
12      system "rm #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip#{m[4]}" if s && m[4]
13      s = system "unzip #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip"
14      system "rm #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip" if s
15      puts "de-crypted & unpacked #{dst}/#{m[3]}-#{m[2]}-#{m[1]}-bill.zip"
16    end
17  end
18end
19
20# 2. rename unpacked files accordingly
21Dir.foreach(dst) do |file|
22  m = /^Rechnung_(\d{4})_(\d{2})_(.+)$/.match file
23  system "mv #{dst}/#{file} #{dst}/#{m[1]}-#{m[2]}-bill-#{m[3]}" if m
24  m = /^Einzelverbindungsnachweis_(\d{4})_(\d{2})_(.+)$/.match file
25  system "mv #{dst}/#{file} #{dst}/#{m[1]}-#{m[2]}-evn--#{m[3]}" if m
26  m = /^Rechnung_(\d{5,20})_(\d{2})_(\d{4})(.+)$/.match file
27  system "mv #{dst}/#{file} #{dst}/#{m[3]}-#{m[2]}-bill-#{m[1]}#{m[4]}" if m
28  m = /^Einzelverbindungsnachweis_(\d{5,20})_(\d{2})_(\d{4})(.+)$/.match file
29  system "mv #{dst}/#{file} #{dst}/#{m[3]}-#{m[2]}-evn--#{m[1]}#{m[4]}" if m
30end