Sonntag, 30. November 2008
Farbsaum entfernen - Kanalmixer
Gimp kann diese Fehler korrigieren (verwendete Gimp Version: 2.4.5).
Dank an Babs für Foto und Problemstellung.
"Farbsaum entfernen - Kanalmixer" vollständig lesen
Samstag, 22. November 2008
Der letzte Tag eines Monats
Folgendes Skript (ultimo.sh) ist zum Testen gedacht. Es erwartet genau zwei Parameter: den Monat (zweistellig) und das Jahr (vierstellig).
#!/bin/bash month=$1 year=$2 function ultimo () { lastsec=$(echo $(( `date -d ${year}${month}01 +%s` -1)) ) lastday=$(echo $lastsec | gawk '{print strftime("%d",$1)}' ) echo $lastday ist der letzte Tag des Vormonats von $month im Jahr $year } ultimo exit 0Aufgerufen wird es so:
Ergebnis: 28 ist der letzte Tag des Vormonats von 03 im Jahr 2002
Was so viel bedeutet wie "der Februar 2002 hatte 28 Tage"
Die Idee dahinter ist einfach: Ich nehme den ersten Tag des Folgemonats, Sekunde 0, und ziehe davon eine Sekunde ab.
Konkretere Beispiele:
• Wenn ich aus irgendeinem umfangreichen Logfile den genauen Monat automatisiert extrahieren möchte, brauche ich den ersten und letzten Tag des Monats.
• SARG (Squid Analysis Report Generator) erwartet zum Auswerten eines Monats die Option
"-d 01/MM/YYYY-letzterTag/MM/YYYY"
Update: Micha Holzmann ist über diesen Beitrag gestolpert und hat das Ganze an seine Anforderungen angepasst.
Achtung, hier wird der letzte Tag des abgefragten Monats ausgegeben, nicht der des Vormonats wie oben.
#!/bin/bash month=$1 year=$2 function ultimo () { lastday=$(date -d "${year}-${month}-01 +1 month -1 day" +%d) echo $lastday ist der letzte Tag des Monats ${month}/${year} } ultimo exit 0
Hier wird auf gawk ganz verzichtet, somit ist date das einzige externe Programm, das benötigt wird.
Mittwoch, 19. November 2008
Vor wie vielen Tagen war ein Datum
"date" kann nicht nur das heutige, sondern auch ein Datum in der Vergangenheit in anderer Form darstellen.
Bei der Eingabe ginge zwar auch z.B. JJMMTT, aber um Mißverständnissen vorzubeugen, besser JJJJMMTT verwenden. Welches Datum wäre z.B. 070706? Der 7. Juli 2006 oder der 6. Juli 2007?
date rechnet das Datum in den Unixtimestamp (=Sekunden seit 1.1.1970 00:00:00) um, mit dem ich dann rechnen kann.
Vorsicht, hier verwende ich der Übersicht halber ausnahmsweise Backtick Operators, die zum Copy-Pasten oft ein Horror sind.
Das Ganze funktioniert natürlich auch mit Datum vor 1970:
Das könnte man natürlich noch in Jahre umrechnen:
Meist geht es mir aber nicht um so weit in der Vergangenheit Liegendes.
Ich brauche z.B. die Anzahl der Tage für find, um in einem (Log-)Archiv alle Dateien zu löschen, die vor einem Stichtag angelegt wurden.
Ein Beispiel mit Stichtag 1.1.2008 (diesmal sekundengenau):
323
find . -daystart -maxdepth 1 -type f -ctime +323 -ls
Samstag, 15. November 2008
Upgrade von SuSE 10.2 auf 11.0
Der erste Schritt ist ein frisches Backup. Das ist mit BackupPC schnell erledigt (das übrigens einen eigenen Beitrag verdient hätte).
Dann noch kurz kontrollieren, wo es haken könnte (wo hab ich an Systemeinstellungen gebastelt? womöglich an Modulen...).
Ich habe aber eh alles vergessen, bzw. nichts gefunden und springe ins kalte Wasser. Soll heißen, ich lege die Installations-DVD ein, boote von DVD und prüfe zuallererst mal das Medium. Damit will ich verhindern, dass der Upgrade mittendrin abbricht, weil die DVD Schrott ist.
Die ist O.K., also lege ich los...
Wie üblich bei SuSE - ich muss manche Pakete extra abwählen. Ich will z.B. kein AppArmor. Sie meinen es ja nur gut mit mir .
Eins habe ich natürlich gleich vergessen: Packman als Installationsquelle mit rein hängen. Deshalb verschwinden beim Upgrade allerlei Multimediapakete von der Platte. Ein großes Problem ist das nicht, ich kann sie später wieder installieren. Mein "Home" wird ja nicht angerührt, alle Einstellungen bleiben erhalten.
Annähernd zwei Stunden Später (jepp das hat gedauert, ich hab' echt viel Zeug installiert)...
Beim ersten Booten hakt es, beim zweiten auch. Irgendwo zwischendrin friert das System ein, nicht immer an der selben Stelle. Failsafe booten klappt aber einwandfrei - es kann also nichts katastrophales sein. Während ich im failsafe mode die Security-Updates einspiele, suche ich in /etc die Fehlerquelle.
Grub ist O.K., fstab ist O.K...
Ha, ich Eumel, um meine Celeron CPU bei Bedarf drosseln zu können, musste ich ein extra Modul laden: cpufreq_ondemand. Das Modul gibt es nicht mehr, es wurde ersetzt. Weg damit aus der Config!
Siehe da, jetzt bootet es einwandfrei. Das Drosseln der CPU bei Inaktivität funktioniert inzwischen "out of the box".
Als nächstes stelle ich fest, dass ich keinen Sound habe. Auch kein Problem, YaST macht das ganz fix, die Karte war einfach noch gar nicht konfiguriert. Die Grafikkarte hatte ich gleich anfangs mit sax2 konfiguriert, soll heißen ich habe sax2's Vorschlag abgenickt, direkt nach dem Upgrade war die Auflösung nämlich 800x600 statt 1024x768.
Dann die Multimedia Pakete von Packman wieder eingespielt, tadaaa, fertig.
Es hat insgesamt etwas über vier Stunden gedauert. Tja, ich glaube in der Zeit hätte ich das System eventuell auch neu aufgesetzt. Ich bin nicht sicher, ob ich ein Upgrade dieser Art empfehlen kann. Andererseits, wer weiß wie lange die Neuinstallation gedauert hätte. Denn natürlich hätte ich meinen Homeordner mitgenommen und das sind inzwischen auch schon ein paar GB.
Freitag, 14. November 2008
USB-Stick verschlüsseln mit cryptsetup
Cryptsetup gibt es wohl für alle Linux Distributionen, meist heißt das Paket auch so (oder util-linux-crypto).
Die Vorgehensweise:
Der eingesteckte USB-Stick auf meinem Rechner ist der Device /dev/sda. Als erstes lese ich die vorhandene Partitionstabelle aus. (Eher aus Neugier, als aus Notwendigkeit.)
fdisk /dev/sda
So sieht das Ergebnis aus:
Platte /dev/sda: 8178 MByte, 8178891776 Byte
33 heads, 63 sectors/track, 7683 cylinders
Einheiten = Zylinder von 2079 × 512 = 1064448 Bytes
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 1 3842 3993727+ b W95 FAT32
/dev/sda2 3843 7683 3992719+ 83 Linux
Dieser Lukscontainer kann jetzt geöffnet werden, cryptsetup fragt nach dem Passwort:
Jetzt kann das neu erstellte Dateisystem eingehängt werden:
Jetzt das Ganze noch sauber aushängen:
cryptsetup luksClose foobar
Im Idealfall wird gleich mit den gesetzten Labelnamen ("offen" und "sehrsicher") gemountet.
Blöderweise gehört das ext2 Dateisystem jetzt aber root, das Problem ist aber schnell gelöst:
Was ist wo?
/dev/sda2 --> ist die nicht lesbare Partition
/dev/mapper/luks_crypto_a3e7usw... --> ist der luks-Container
/dev/dm-0 --> ist das ext2 Dateisystem
Was, wenn es nicht automatisch klappt?
Aktuellere device mapper Versionen streiken angeblich manchmal. Solange man das Passwort nicht vergessen hat, kann man den verschlüsselten Container immer von Hand öffnen:
- Prüfen, ob eh nix gemountet ist, sonst umount
- # cryptsetup luksOpen /dev/sda2 temp-name-irgendwas
...Passwort...
Dann sollte der /dev/dm-N auftauchen, eventuell einer mit höherer Nummer - # mount /dev/dm-N /media/sehrsicher
In diesem Fall muss es den Ordner "sehrsicher" in /media natürlich geben.
Das ext2 Dateisystem will anständig ausgehängt werden, ruppiges Abziehen des USB-Sticks ist nicht optimal.
War ich doch mal Schwein, hilft ein schneller fsck:
e2fsck -n /dev/dm-0
Samstag, 8. November 2008
Hotmail - ein geschenkter Gaul
Ich verwende Firefox3. Der ist gut und wird gar nicht so selten verwendet. Man sollte meinen, dass sich das auch bis zu Microsoft herumgesprochen hat. Hat es anscheinend aber nicht.
Ich nutze den Hotmail-Account hauptsächlich zum Testen und wenn mal schnell irgendwo eine Emailadresse eingegeben werden soll, ich aber nicht meine "echten" verwenden will.
Wenn ich mich nun also bei Hotmail einloggen will, werde ich erstmal dezent darauf hingewiesen, dass ich meinen Browser updaten soll. Mehrere Links werden angeboten.
1) Internet Explorer - Mein OS ist Linux
2) Firefox - Der Link führt direkt zur Downloadseite von Firefox 3
3) Safari - Das dürfte auf Linux UND Windows schwierig werden
Wie dem auch sei, sowas bringt mich eher zum Schmunzeln.
Deutlich ärgerlicher war die kürzliche "Verbesserung" des Aussehens von Hotmail. Prima, jetzt wird ein Wysiwyg Editor (Javascript) verwendet, der aber leider in keinem Browser außer Internet Explorer funtioniert. Das wäre halb so schlimm, wenn man den einfach abwählen könnte. Das dazu verwendete Skript funktioniert aber ebenfalls nicht in Firefox, Opera, Konqueror, Arora (Webkit)... Fazit: ich kann auf Linux mit Hotmail keine Mails mehr schreiben.
Was kann ich tun?
1) Auf wine hab ich einen IE6 laufen, in dem das Editor-Skript funktioniert.
2) In Vmware hab ich noch ein altes Windows98 mit IE6 laufen - klappt auch.
3) Das war ein wenig kniffelig, mit dem Firefox Plugin "Stylish" hab ich die Oberfläche des Editors angepasst. Die textarea zum Eingeben des Mailtextes war nämlich durchaus vorhanden, nur mit CSS ausgeblendet.
Zu Lösung 1 und 2 wäre noch was zu sagen: Kann sein, dass ich's übersehen habe, aber bei beiden IE6 wurde ich nicht um ein Update des Browsers gebeten. Ist es denn die Möglichkeit, dass zu Zeiten von XSS und Phishing Microsoft den alten Haudegen IE6 immer noch als ausreichend aktuell ansieht?
Ich bin mal gespannt, ob Microsoft / Hotmail ein Einsehen hat und den - Obacht, reine Vermutung! - Praktikanten, der die neue Oberfläche zusammen geschustert hat dazu zwingt, das Ganze cross-browser-fähig zu machen.
Würde ich zu Verschwörungstheorien neigen, wäre meine Vermutung, dass dahinter die Absicht steckt, unliebsame Konkurrenz auszubremsen. Zum Glück bin ich aber überhaupt nicht paranoid.
Update: Das wird immer abenteuerlicher...
Als ich gerade mal wieder versucht habe, in Hotmail einzuloggen (mit Firefox3 auf Linux), musste ich feststellen, dass es überhaupt nicht mehr geht. Irgendein Skript lief wohl amok, ich musste FF3 abschießen. Macht ja nix, ich hab' noch andere Möglichkeiten, dachte ich jedenfalls. Allerdings funktioniert es auch nicht mehr mit IE6 auf wine oder in Vmware (echtes Windows98).
So, Ende der Fahnenstange. Ich kann jetzt die Mails nicht mal mehr zum Lesen öffnen.
...Nanu, ein Firefox Icon in Win98? Tatsächlich, den 2-er hab ich zum Testen ja auch noch. Sehr erstaunlich, ja, es klappt mit FF2 auf Win98 in Vmware.
...Zurück auf Linux stelle ich fest, dass Hotmail jetzt mit Opera funktioniert, das klappte beim letzten mal überhaupt nicht.
...Noch mal ein Test mit FF3, aha, jetzt klappt es auch mit dem.
...die IEs auf wine - keine Chance, ist aber jetzt egal.
Was mag passiert sein? Der "Praktikant" hat gerade eben ein Update auf den Server gestellt?
Womöglich...
Dienstag, 4. November 2008
Textfiles formatieren
Gelegentlich muss ich Textdateien anders formatieren, Leerzeilen entfernen, den Umbruch verschieben...
Grep entfernt alle Leerzeilen, paste fügt alles zu einer langen Textwurst zusammen, getrennt durch ein Leerzeichen und fold bricht dann beim letzten Wortende vor Spalte 70 um.