Archiv der Kategorie 'Linux'

Fahrerkarte auslesen und auswerten unter Linux

Ich hatte schon lange die Nase voll davon, für sowas immer eine Virtuelle Maschine mit Wintendo starten zu müssen und habe daher heute mal ein wenig gefummelt und mir die passende Software unter Linux installiert. Da ich annehme, daß es noch mehr Fahrer gibt, die unter Linux vor dem gleichen Problem stehen, versuche ich mal, meinen Weg dorthin zu zeigen.
Dieses Howto bezieht sich auf Debian Lenny, wird aber wohl so ähnlich auch für andere Distributionen einsetzbar sein. Zusätzlich zu diesem Blogeintrag werde ich es bei den Unixfreunden in der Howto-Sektion veröffentlichen.
Ich habe mir einen SCR331 USB-Kartenleser mal vor Urzeiten über Ebay für kleines Geld besorgt. Für diesen müssen jetzt die passenden Softwarepakete installiert werden:
apt-get install libusb-0.1-4 libpcsclite1 libpcsclite-dev pcscd pcsc-tools build-essential autoconf xlibs-dev libccid
Auf der Rückseite des Kartenlesers ist eine Teilenummer angegeben, liegt diese unter PN: 904622, so muß er geflasht werden, um unter Linux zu laufen. Das Flash-Utilty für Linux gibt es hier, die Firmware ist hier zu bekommen. Das Binary aus dem Firmware-Archiv extrahieren, dann den Firmware-Updater installieren und mit einem Editor /usr/local/scm/ini/fwupdate.ini öffnen und folgendermaßen editieren:
<fwupdate>
<key>DevIdMatch</key>
<value>False</value>
<key>UpgradeOnly</key>
<value>False</value>
<key>UpdateClParams</key>
<value>True</value>
<key>ForceDw</key>
<value>False</value>
<key>SkipVerifyDw</key>
<value>False</value>
</fwupdate>
Danach lässt sich die neue Firmware problemlos in den Reader flashen. Achtung! pcscd darf nicht laufen!
Nach dem Flashen den Reader abziehen und neu einstecken, pcscd starten mit /etc/init.d/pcscd start, der Reader sollte jetzt bei Eingabe von pcsc_scan angezeigt werden.
Wenn bis hierhin alles glatt gelaufen ist, können wir ja zum Eingemachten übergehen:  dem Auslesen der Fahrerkarte, noch dazu archivierungsfähig und auswertbar.
Zuerst brauchen wir noch einige Pakete aus dem Debian-Repository:
apt-get install swig1.3 python-wxgtk2.8
Dann laden wir uns pyscard herunter und entpacken es, wechseln in das Verzeichnis und rufen /usr/bin/python setup.py build_ext install auf.
Zum Auslesen der Fahrerkarte gibt es seit kurzem ein Python-Skript: FahrLinux, das laden wir uns auch herunter und entpacken es in ein Verzeichnis. FahrLinux ist noch beta, geht aber schon prima.
Nun stecken wir unsere Fahrerkarte und rufen Fahrlinux auf:
./fahrlinx

Ein Doppelklick auf die angezeigte Fahrerkarte und danach ein Klick auf „Start“ lesen die Karte aus und legen eine archivierbare .DDD-Datei im Fahrlinux-Verzeichnis ab.
Diese kann man prima von unterwegs per Email ans Büro schicken 😉
Nun zur Auswertung der Daten, man möchte ja auch gerne wissen, was man falsch gemacht hat unterwegs. Für solche Dinge gibt es readesm. Zuerst ziehen wir noch einige Pakete aus dem Repository nach:
apt-get install libboost-program-options-dev libgcrypt11-dev libgmp3-dev
Dann entpacken wir readesm und kompilieren es:

make
make install

Praktischerweise bringt es gleich einige Skripte mit, als KDE-Nutzer habe ich mir die Endung .DDD mit /usr/local/bin/readesm-wrap-kde verknüpft, das konvertiert die Daten in HTML und ruft sie gleich im Standardbrowser auf, so daß man bequem seine Verstöße kontrollieren kann.
/usr/local/bin/readesm-wrap-firefox ruft die Seite im Firefox auf.


Für alle, die das gerne noch ausweiten möchten, hier noch der Hinweis auf opendtacho.org. Das Projekt arbeitet an einer Lösung für Speditionen, die auf Linux basiert. Die mit FahrLinux gezogenen Daten lassen sich dort importieren, es wird mit einem Tomcat gearbeitet und eine hierarchische Nutzerverwaltung ist ebenfalls möglich, so daß man seine Fahrer die Karten auslesen lassen und in die Software einpflegen kann. Es lassen sich Tätigkeitsberichte erstellen, etc.

Debian und USB..*soifz*

Ich habe ja am Wochenende Debilian installiert, nach meinem Headcrash. Unterwegs bekam ich dann die USB-Geräte nur sporadisch zum laufen, Logs waren wenig hilfreich.
ehci_hcd entpuppte sich als der Übeltäter.
Eine Datei /etc/modules.d/ehci_hcd.conf mit dem Inhalt
blacklist ehci_hcd hat da schnell Abhilfe geschaffen. Endlich kann ich wieder ins Internet und auch fernsehen..

Debian, proftpd und fail2ban

Gestern habe ich mich um ein kleines Problem mit fail2ban gekümmert, das ich vor mir hergeschoben habe.
Debian liefert vorkonfigurierte Filter für fail2ban mit, die leider nicht für proftpd passen. Die Logfiles des Servers waren voll von chinesischen Einbruchsversuchen auf den FTP-Server.
Nu ist regexp nicht gerade meine Stärke und es bedurfte einiger Fummelei sowie fachlicher Unterstützung durch Disastersmaster. Damit konnte das Problem aber schnell eingekreist und beseitigt werden.
Eigentlich sinds 2 Probleme.. Zum einen passen die regexp nicht auf die Logfiles vom proftpd und zum anderen verweigern die iptables den Dienst, wenn man bei kommaseparierter Portliste kein multiport verwendet.
Da ich aus meiner Google-Suche weiß, daß ich nicht alleine mit dem Problem da stehe, poste ich hier mal meine /etc/fail2ban/filter.d/proftpd.conf:
# Fail2Ban configuration file
#
# Author: Yaroslav Halchenko
#
# $Revision: 677 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT
#
failregex = \(\S+\[\]\)[: -]+ USER \S+: no such user found from \S+ \[[0-9.]+\] to \S+:\S+\s*$
\(\S+\[\]\)[: -]+ USER \S+ \(Login failed\): Incorrect password\.\s+$
\(\S+\[\]\)[: -]+ USER \S+ \(Login failed\): No such user found\.\s+$
\(\S+\[\]\)[: -]+ SECURITY VIOLATION: \S+ login attempted\.\s+$
\(\S+\[\]\)[: -]+ Maximum login attempts \(\d+\) exceeded\s+$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Vielleicht erspare ich ja dem Einen oder Anderen damit etliche Stunden voller Kopfzerbrechen..

Falsches Tastaturlayout nach Xorg-update

Kopieren der Datei /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi
nach /etc/hal/fdi/policy und darin das Ersetzen von „us“ durch „de“ löst
das Problem…

Ubuntu ist kein Serversystem

Noja..Linuxer wissen das sicher. Wer einen Beweis braucht, kann ja mal
cat /etc/apache2/envvars eintippen..

# envvars - default environment variables for apache2ctl
# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=root
export APACHE_RUN_GROUP=root
export APACHE_PID_FILE=/var/run/apache2.pid

Bei sowas könnt ich ja im Stehen kotzen..
Nachtrag: Wen wunderts da noch, wenn in der php.ini safemode = Off und AllowFurlOpen = On zu finden ist..
Es ist definitiv mehr Arbeit, das System sicher zu konfigurieren, als es einmal neu hochzuziehen.
Ich kann vor dem Einsatz von Ubuntu auf einem Webserver nur warnen..
*kopfschüttel*
Noch ein Nachtrag: Nachdem ich dann nnoch einige Dinge näher angeschaut habe, bin ich zu dem Entschluß gekommen, per debootstrap ein richtiges Debian zu installeren..sonst brauche ich 3-4 Tage, bis das rund läuft..

Probleme beim world-update

Plötzlich reisst das emerge -u world ab.. Mitten im acl..
error while loading shared libraries: libacl.so.1: cannot open shared object file: No such file or directory
Google brachte nichts wirklich brauchbares in der Suche. Also bastelt man sich halt einen workaround.
Die Dateien bekommt man bei openswan.com, reinkopieren in /usr/lib und alles geht wieder wie gewohnt. Danach unbedingt die coreutils mit „-acl“ neu mergen..
Für faule hier zum rauskopieren:

cd /lib/
wget http://actrophp.de/gentoo/libacl.so.1
wget http://actrophp.de/gentoo/libattr.so.1
# ls, mv, cp funtionieren jetzt wieder
echo „sys-apps/coreutils -acl“ >> /etc/portage/package.keywords
emerge -v coreutils
# aufräumen, die Dateien werden nicht mehr gebraucht
rm /lib/libacl.so.1
rm /lib/libattr.so.1

Wine und der Internet-Explorer

Gestern habe ich wine installiert, weil mir Crossover-Office einfach zu fett geworden ist. Eigentlich brauche ich es nur zur Kontrolle mit dem IE und um Photoshop zu benutzen. Leider wollte Photoshop sich nicht installieren lassen, weil kein Internet-Explorer vorhanden sei. Also schnell mal bei Winzigweich vorbeigesurft und den IE nachinstalliert..Tja, denkste. Angeblich sei eine neuere Version bereits installiert. Bei der Suche nach einer Problemlösung bin ich dann auf IEs 4 Linux gestossen. Funktioniert einwandfrei und hat alle meine Probleme beseitigt. Fast alle. Ich mußte noch winetricks nachinstallieren umd mit dem Aufruf von
sh winetricks fakei6e den Registry-Eintrag umbiegen. Danach ließ es sich mit anschliessender Gecko-Engine-Installation wieder einwandfrei benutzen. Vielen Dank 🙂

Automount regelt..jedenfalls tat es das immer.
Man nehme hald und dbus und kde macht das schon..sehr bequem..
Es sei denn, es funktioniert mit einem Male nicht mehr. Kded konnte keine Verbindung zu DCOP aufbauen, sagte er. Die Fehlermeldung also mal bei Google eingeworfen und angefangen zu suchen.
2 Stunden später kein bißchen schlauer gewesen.
Okay, packen wir das Übel an der Wurzel. kdelibs neu emerged. Keine Besserung.
dbus neu emerged. Nix.
hald neu emerged. Immer noch nix.
Ein revdep-rebuild angeworfen. Tat zwar was, aber nicht das richtige.
Mooooment..*hochscroll*..wtf? Der hat hald und dbus mit qt4 gebaut?
Ein manuelles erzwingen von qt3 mit USE=“qt3″ auf der Konsole laufen lassen und den ganzen Kram neu gestartet.
Mit einem Mal fand kded auch den DCOP-Server wieder.
Liebe Leute, sowas ist doch definitiv zum Kotzen. Wozu, bitteschön, hat Gentoo 500 USE-Flags in der make.conf, wenn Ihr Deppen Entwickler nicht in der Lage seid, das in eurem ebuild abzufragen?
Woher soll Otto-Normal-DAU auf diesen Dreh kommen? Manchmal geht mir diese Art echt auf den Keks. Wie wäre es, wenn Ihr euch mal ein wenig um die Sauberkeit der einzelnen Branches kümmert, statt den ganzen Tag mit KDE4 zu spielen und 25 sub-sub-versions auf die Menschheit loszulassen?
In diesem Sinne, danke für den versauten Vormittag.

Geht es noch, liebe Gentooler?

Heute lag Systemupdate beim Laptop an. Lief fröhlich durch, wenn man mal von den 5 neuen USE-flags für php absieht. Aber das habe ich schnell in den Griff bekommen.
Beim Durchsehen der Meldungen von emerge blieb mein Auge dann an der eix-Meldung hängen.
Richtig, da war was..das hast Du mal installiert..Wie funktionierte das noch gleich?
Manpages regeln ja bekanntlich. Also:
silent_bob download # man eix
Die Ausgabe fand ich dann schon etwas merkwürdig:
silent_bob download # Die Handbuchseite wird formatiert, bitte warten Sie...
sh: /usr/bin/lzma: Datei oder Verzeichnis nicht gefunden
Fehler bei der Ausführung des Formatierungs- oder Anzeigeprogramms.
Das Programm (cd /usr/share/man && (echo ".pl 1100i"; /bin/bzip2 -c -d '/usr/share/man/man1/eix.1.bz2'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -Tascii -c -mandoc | /usr/bin/lzma > /var/cache/man/cat1/eix.1.lzma) lieferte den Rückgabe-Wert 127.

Okay..also mal fix guggen, ob lzma überhaupt installiert ist:
silent_bob download # locate lzma
Die Ausgabe spare ich hier mal. Tatsache ist, es ist nicht installiert. Mal eben emerge anwerfen..
Tja, und hier wirds dann ein wenig kurios:
silent_bob download # !!! All ebuilds that could satisfy "app-arch/lzma" have been masked.
!!! One of the following masked packages is required to complete your request:
- app-arch/lzma-4.57 (masked by: ~x86 keyword)
- app-arch/lzma-4.43 (masked by: ~x86 keyword)
- app-arch/lzma-4.27 (masked by: ~x86 keyword)

Nachtrag:
silent_bob download # echo app-arch/lzma ~x86 >> /etc/portage/package.keywords
silent_bob download # emerge lzma
Calculating dependencies... done!
[ebuild N ] app-arch/lzma-4.57 USE="-doc"
[blocks B ] app-arch/lzma (is blocking sys-apps/man-1.6f)
*Error: The above package list contains packages which cannot be installed at the same time on the same system.

Könnt Ihr euch nicht vielleicht endlich mal angewöhnen nachzugucken, ob alle Dependencies im richtigen tree liegen, bevor Ihr den ganzen Kram freigebt?
*Grummel*

Python ist doof..

Heute hat Porthole versagt..brach mit Fehlermeldung ab, einfach so..
Bei der Ursachenforschung habe ich dann festgestellt, dass Python der Übeltäter ist..aber dazu später..
Porthole meckert über ein fehlendes Modul.
bolide matthias # porthole
Traceback (most recent call last):
File "/usr/bin/java-config", line 14, in ?
from java_config import jc_options
ImportError: No module named java_config

Ich bin ja nicht doof, die Lösung steht ja da, also flugs #java-config eingetippert , dann entgleisten mir doch etwas die Gesichtszüge bei der Ausgabe:
bolide matthias # java-config
Traceback (most recent call last):
File "/usr/bin/java-config", line 14, in ?
from java_config import jc_options
ImportError: No module named java_config

Nunja..langer Rede kurzer Sinn, ein #emerge python ausgeführt, alles von vorne..gleiche Fehlermeldung..
Zufällig dann mal in der Konsole nach oben gescrollt und folgendes gelesen:
If you have just upgraded from an older version of python you will need to run:
*
* /usr/sbin/python-updater
*
* This will automatically rebuild all the python dependent modules
* to run with python-2.4.
*
* Your original Python is still installed and can be accessed via
* /usr/bin/python2.x.

*MitDemKopfAufDieTischplatteHau*..manchmal sollte man doch die Ausgaben von Portage lesen 😉
Nunja, ich hab denn mal ein #/usr/sbin/python-updater ausgeführt und schon ist wieder alles im Lot..
Nun kann ich mich um mein PHP-Update kümmern, das klemmt auch irgendwie..Diesmal lese ich aber die Ausgabe von Portage ganz genau 😉