Posts Tagged ‘Shell’

Montag, 6. April 2009

syslog von Ballast befreien

Die /var/log/syslog füllt sich unter Debian Linux sehr schnell mit viel nichtssagendem Ballast, weshalb ich mich heute dazu entschied, mal ein wenig aufzuräumen. Die Meldungen von cron (läuft bei mir jede Minute mit irgendwelchen Befehlen), dhcpd (im Netzwerk gibt es ein Gerät, dass jede Sekunde einen DHCP-Request sendet) sowie snmpd (cacti frägt den Systemzustand in jeder Minute ab) sollten neu aus der /var/log/syslog in eigene Log-Dateien ausgelagert werden.

Folgende Anpassungen an /etc/syslog-ng/syslog-ng.conf taten den Trick.

Als erstes legt man neue Destinationen fest:

destination df_cron { file("/var/log/cron.log"); };
destination df_dhcpd { file("/var/log/dhcpd.log"); };
destination df_snmpd { file("/var/log/snmpd.log"); };

Anschliessend legt man vier neue Filter fest:

filter f_cron { facility(cron); };
filter f_dhcpd { program(dhcpd); };
filter f_snmpd { program(snmpd); };
filter f_noise { not filter(f_snmpd) and not filter(f_dhcpd) and not filter(f_cron); };

Schlussendlich baut man diese als Log-Anweisungen zusammen:

log {
        source(s_all);
        filter(f_syslog);
        filter(f_noise);
        destination(df_syslog);
};

log {
        source(s_all);
        filter(f_cron);
        destination(df_cron);
};

log {
        source(s_all);
        filter(f_dhcpd);
        destination(df_dhcpd);
};

log {
        source(s_all);
        filter(f_snmpd);
        destination(df_snmpd);
};

Nachdem man die Konfigurationsdatei gespeichert hat, startet man syslog-ng neu und erfreut sich über die Ruhe, die nun einkehrt:

# /etc/init.d/syslog-ng restart
$ tail -f /var/log/syslog

Nachtrag

Natürlich wollte ich mir noch ein Bild machen, wie die Situation vor diesen neuen Umleitungen aussah. Erschreckend:

# cat syslog | cut -d " " -f 6 | sort | cut -d "[" -f 1 | sort | uniq -c | sort -r -n
   2534 dhcpd:
   2215 /USR/SBIN/CRON
   1688 snmpd
    392 kernel:
     98 mt-daapd
     55 syslog-ng
     40 postfix/qmgr
     36 avahi-daemon
     31 smartd
     26 ovpn-server
     23 named
     21 postfix/smtp
     19 postfix/cleanup
     18 postfix/pickup
      9 mysqld
      8 apcupsd
      6 ntpdate
      6 /etc/mysql/debian-start
      4 /usr/sbin/cron
      4 postfix/tlsmgr
      3 arpwatch:
      2 postfix/master
      2 mysqld_safe
      1 shutdown
      1 postfix/local
      1 mdadm
      1 init:

Mein Gefühl hat sich bestätigt: Ich habe die richtigen „Übeltäter“ in eigene Dateien ausgelagert.

Tags:
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 5. April 2009

Digg für Kommandozeilen-Befehle

Eine Schatztruhe für all diejenigen Leute da draussen, die sich hin und wieder auf einer Linux-Kommandozeile bewegen:

Command-line-fu

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 15. März 2009

Batch convert color images for OCR

Vor langer, langer Zeit war ich in der Schweizerischen Nationalbibliothek und habe dort mit meiner Digitalkamera Seiten aus alten Büchern photographiert. Obwohl ich dies ohne Blitz tat, herrschte im Lesesaal alsbald helle Aufregung – denn ich hatte soeben gegen die Benutzungsordnung verstossen. Glücklicherweise musste ich die Bilddaten aber nicht von der Speicherkarte löschen, wurde aber freundlich und bestimmt gemahnt, das nie wieder zu tun …

Mittlerweile habe ich endlich Zeit gefunden, die Bilddaten zu sortieren und zu beschriften. Dummerweise war der Foto-Termin bereits derart lange her, dass ich schlicht vergessen hatte, aus welchem Buch ich digitale Kopien gemacht hatte. Mittlerweile ist es mir wieder in den Sinn gekommen:

main.bib

hauser1925

Geschichte der Hagelversicherung in der Schweiz
P. Hauser
 
 
 
(1925)

Doch gut, was bringen mir die Photographien, wenn ich diese nicht in einem schicken PDF-Dokument zusammenfasse und die Texterkennung darüber laufen lasse? Genau: Nichts.

Deshalb hiess es, die je ca. 3MB wiegenden farbenfrohen JPEGs in monochrome Bitmaps umzuwandeln. Nach einigem Googlen war ich mit Hilfe des ausführlichen Artikels ImageMagick v6 Examples — Color Quantization and Dithering im Stande, folgendes Shell-Script zu schreiben, welches mit ImageMagick die gewünschte Batch-Conversion durchführt:

#!/bin/sh

for i in *.jpg;
do
        echo "Converting $i"
        convert "$i" +dither -colors 2 -colorspace gray -normalize "$i-mono.gif"
        echo "Conversion finished"
done

exit 0

Anschliessend öffnete ich den Adobe Acrobat 7, wählte File > Create PDF… > From Multiple Files…, wählte die GIF-Dateien aus und liess mir ein PDF daraus erstellen.

Tags: , ,
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Freitag, 20. Februar 2009

Pseudo-Arrays in MS-DOS Batch-Dateien

Natürlich gibt es so etwas auch in der Microsoft-Welt, ist aber bedeutend hässlicher als bei bash & Co:

FOR /F "tokens=1,2,3,4 delims=|" %%G IN ("eins|zwei|drei|vier") DO @echo Werte: %%G %%H %%I %%K

Wer die Werte nicht aus einem String, sondern aus einer Datei auslesen möchte, passt den Befehl leicht an:

FOR /F "tokens=1 delims=;" %%G IN (datei.txt) DO @echo Wert: %%G

Via: FOR /F

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 22. November 2008

wget, find und Bash ausgereizt

Um eine lokale Kopie der auf Terrific messages on girls’ T-shirt geposteten Photos zu erstellen, musste zwei Hürden übersprungen werden:

wget

$ wget --page-requisites "http://35mm.instantfundas.com/2008/11/terrific-messages-on-girls-t-shirt.html"

holte nur diejenigen Dateien, die auf dem lokalen Server abgelegt waren. Da die Photos bei ggpht.com gehostet wurden, kamen sie beim ersten Versuch nicht mit. Abhilfe schaffte folgender Befehl:

$ wget --span-hosts --page-requisites "http://35mm.instantfundas.com/2008/11/terrific-messages-on-girls-t-shirt.html"

find

Da ich vergessen hatte, wget mit der Option -nd („no directories“) aufzurufen, waren die Bilder nun über unzählige Ordner verstreut. Hier half find:

$ find . -name *tshirt* -exec mv '{}' '/Users/mario/Desktop/backup/' ';'

for-Schleife mit Bash

Sogleich folgte das nächste Problem: Die Dateinamen der Bilder waren nicht brauchbar: girls-tshirt (3)_thumb[1].jpg?imgmax=800 Mit Doppelklick wurde nicht automatisch Apples Preview geladen. Was nun? Bash hilft:

$ for i in *jpg*; do mv $i $i.jpg; done;

Ein einziges Bild wurde nicht umbenannt, weil es im PNG-Format daherkam. Hier war ich zu faul und benannte es von Hand um …

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 22. Oktober 2008

Datei-Erweiterung in Kleinbuchstaben umwandeln

In den letzten Tagen habe ich meine MP3-Sammlung aufgeräumt (auf der Workstation herrscht langsam Platzmangel, weshalb ich die Songs auf den Server verschiebe). Dabei musste ich feststellen, dass es tatsächlich Idioten da draussen gibt, die ihre MP3s die Endung MP3 anstelle mp3 vergeben.

Unter Linux schafft man diesem Problem rasch Abhilfe, indem man das Tool rename verwendet:

rename 'y/A-Z/a-z/' *

Einziger Nachteil: Der ganze Dateiname wird nun kleingeschrieben. Für mich aber kein Problem, da ich bei MP3s auf konsequente Kleinschreibung achte.

Via: Convert Filenames to Lowercase

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen