Jan 23

Angenommen man möchte unter Linux ein Script / Programm abfeuern lassen, sobald ein File in einem Directory abgelegt wird. Wenn man z.B. ein Spoolverzeichnis bauen will, könnte das recht hilfreich sein.
Die Lösung bieten die “inotify-tools”. Flux per “apt-get install inotify-tools” installiert, verfügt man anschliessend über zwei Programme, mit den hübschen Namen inotifywait und inotifywatch.
Diese sind gemäss manpage zu bedienen. Hier ein kleines Beispiel:

Situation: Sobald Im Directory “/spool” eine Datei abgelegt und final geschlossen wird, soll ein kleines Perl-Script aufgerufen werden, dass die Datei verarbeitet. Als Parameter sollen dem Script das Directory sowie die Datei zur Verfügung gestellt werden.
So gehts:

#!/bin/sh
inotifywait -mrq -e close_write /spool/ –format ‘%w %f’ |while read dir file; do
./perlscript.pl ${dir} ${file}
done

Hier eine Erklärung der, im Beispiel benutzten, Schalter / Variablen:
-m = Monitored das Directorie kontinuierlich – ohne den Schalter hört inotifywatch nach dem ersten “Trigger” auf zu laufen
-r = Subdirectories sollen auch gemonitored werden
-q = Das Tool soll “Quiet” laufen – also keinerlei unnötiges “gedöns” ausgeben

%w = Filename mit Directory
%f = Filename

Viel Spass damit

[Update]: Leider funktioniert das ganze nicht mit Directories auf die ein Samba-Share gemounted wurde…

Jan 21

Tja, da habe ich so eine antike PCI-Grafikkarte mit S3 Chipsatz von ATI ausgegraben, und Debian Etch wollte den XServer partout nicht starten. Was tun ??
Ziemlich simpel: Aus alten Zeiten kannte ich noch das Tool “xf86config” – das scheint allerdings der Vergangenheit anzugehören.
Heutzutage macht man das mit “dpkg-reconfigure xserver-xorg”. Etwas komplexer vom Aufruf, aber um so angenehmer in der Bedienung. Damit kann man dann auch (fast) jeder Uralt-GraKa wieder Leben einhauchen…

Jan 04

Wie ich die Tage schmerzvoll erfahren musste, heisst die Mehrzahl von Status, Status (ja richtig – selbes Wort – nur andere Betonung). Betont wird der Plural dann auf dem “u” – also Statuuus 😉
Warum und wieso der Otto-Normal-Mensch dazu Stati sagt, entzieht sich meiner Kenntniss.

Scheint aber dasselbe Thema zu sein wie mit dem Wörtchen (der Programmiersprache) Perl. Das wird nämlich genauso ausgesprochen wie man es liest – also Perl und nicht Pöhrl.

Jan 01

Ich wünsche allen Leser/innen ein frohes, gesundes und erfolgreiches Jahr 2008.
Mögen eure Wünsche in Erfüllung gehen.

Nov 20

Ein schickes Board das fein mit Debian läuft ist das Gigabyte GA-X38-DQ6. Allerdings hat das gute Stück einen Schönheitsfehler. Unter Debian Etch werden funktionieren das Hardwaremonitoring nicht. Hier kann Abhilfe geschaffen werden. Auf dem Board befindet sich der it8718-isa-0290 Chip(satz) der für die Environmentdaten zuständig ist. Dummerweise wird der Chip erst ab Kernel 2.6.20 über das Kernelmodule “coretemp” unterstützt. Debian Etch selbst verwendet aber als letzten Kernel den 2.6.18er. Also updaten ! Wie geht das ? Wie folgt:

in der /etc/apt/sources.list folgende Zeile hinzufügen:

deb http://www.backports.org/debian etch-backports main contrib non-free

Nun via apt-get update die Quellen aktualisieren. Und anschliessend per apt-get install linux-image-2.6.22-xxx  (wobei xxx der Architektur entspricht die man sich wünscht) den neuen Kernel installieren.
Ein wenig Vorsicht ist allerdings geboten, wenn man sich vorher selbst einen (älteren) Kernel gebacken hat, hier sollte man die Sourcen mitinstallieren, und den 2.6.22er dann auch neu basteln.

Nach dem neu gebootet worden ist kann man sich per apt-get install lm-sensors das sensors Packet installieren. Von nun an ist es nicht mehr weit 😉
Folgende Zeilen gehören nach einem sensors-detect in die /etc/sensors3.conf:


chip “it8718-*”

# Voltages

compute in3 @ * (6.8/10+1), @ / (6.8/10+1)
compute in7 @ * ( 30/10+1), @ / ( 30/10+1)

label in0 “VCore”
label in1 “VDDR”
label in2 “+3.3V” # VCC3
label in3 “+5 V VCC” # VCC
ignore in4
ignore in5
ignore in6
label in7 “+12V” # VCCH
label in8 “VBat”
label fan1 “CPUFan”
label fan2 “FrontFan”
label fan2 “XXX Fan ?”
label temp1 “NB Temp”
label temp2 “Coretemp”
ignore temp3

set in0_min vid * 0.95
set in0_max vid * 1.05
set in1_min 1.8 * 0.95
set in1_max 1.8 * 1.05
set in2_min 3.3 * 0.95
set in2_max 3.3 * 1.05
set in3_min 5 * 0.95
set in3_max 5 * 1.05
set in7_min 12 * 0.95
set in7_max 12 * 1.05

ignore cpu0_vid

Danach sollte ein Aufruf von sensors ein paar Werte ausspucken. Wer richtig mitgelesen hat, dem fält auf, dass ich noch keine genaue Bezeichnung fuer Fan3 finden konnte. Wenn jemand an der Stelle weiterkommt – gerne per Kommentar…. Bis auf Fan3 wird dann aber auch alles vernünftig angezeigt.

Viel Spass

Nov 19

Schön dieses RAID. Hat nur einen Schönheitsfehler. Alle Nasen lang (genau genommen ca. alle 3 sekunden) rödeln die Platten ohne ersichtlichen Grund los. Nachdem ich erst das commit-interval des Filesystems im Verdacht hatte, dieses sich aber nicht bestätigt hatte, habe ich mir die, auf dem RAID laufende, ORACLE mal vorgenommen. (Was ein Schachtelsatz ;-))
Bingo!
Anscheinend schreibt die DB in kurzen Intervallen etwas in Ihre control-Files.
Wie verlegt man jetzt aber so ein ControlFile bei einer bereits betankten Datenbank ??
Nun auch hier gibts es eine Lösung. Also noch ein (Superkurzes) Mini-Howto im CCBlog-Style:

1. PFile erzeugen (siehe hier im Blog)
2. DB herunterfahren (shutdown immediate)
3. Control-Files an die neue Stelle bewegen (per mv)
4. PFile editieren. Und zwar die Stelle “controlfiles” – hier der DB die NEUE Position bekanntgeben
5. SPFile bauen (siehe hier im Blog)
6. DB wieder hochfahren (startup).
7. Fertig

Vorsichtshalber habe ich die REDO-Logs auch noch auf die ungeRAIDete Platte verschoben – ist eh schneller 😉

Nov 17

Alles nicht so einfach mit den Platten. Daher hier ein weiteres Mini-Howto. Diesesmal zum Thema, wie erstelle ich unter LINUX einen Soft-RAID-Verbund, der sich beliebig erweitern lässt.

Ausgangssituation wäre folgende:
3 Eingebaute Festplatten:
hda: Boot-Platte (XXX GB)
hdb: 1. RAID1-Platte (1GB – lässt sich leichter rechnen 😉
hdc: 2. RAID1-Platte (1GB)

1. Mithilfe von fdisk / cfdisk die Partitionen /dev/hdc1 und /dev/hdb1 auf den jeweiligen Platten als Primärpartition vom Typ FD erstellen.

2. Raid 1 aus hdb1 und hdc1 anlegen:

mdadm –create /dev/md1 –level 1 –raid-devices=2 /dev/hdb1 /dev/hdc1

3. Physical Volume anlegen:

pvcreate /dev/md1

4. Volume Group anlegen (mit einem Device) – vol ist hier mal der Name der Gruppe

vgcreate vol /dev/md1

5. Logisches Volume mit Namen “root” auf der VolumeGroup anlegen (Wir nehmen mal 800MB, da ein wenig Overhead anfaellt – 900 sollten aber auch gehen)

lvcreate -n root -L 800M vol

6. Filesystem auf dem neuen Volume anlegen

mkfs.ext3 /dev/vol/root

7. Mounten:

mount /dev/vol/root /mnt

8. Ueberpruefen
– PhysicalVolumes lassen sich mit pvdisplay, VolumeGroups mit vgdisplay und LogicalVolumes mit lvdisplay anzeigen
– Ein “df . -h” bringt nun 800 MB auf die Waage

Fertig …

Wenn man nun eine weitere Platte (Raid-Volume über mdadm geht natürlich auch) “hinzubekommt” und die an das RAID-1 stripen möchte, geht das wie folgt:
(Wir nennen die Platte mal hdd)

1. Primary Partition über FDISK anlegen (Typ FD)

2. Physical Volume anlegen:

pvcreate /dev/hdd1

3. VolumeGroup erweitern:

vgextend vol /dev/hdd1

4. LogicalVolume erweitern

lvextend /dev/vol/root -L +800M /dev/hdd1

5. Überprüfen (siehe oben)
– Ein “df . -h” in /mnt bringt nun einen um 800MB erweiterten Mountpunkt zum vorschein. Halt … wohl doch noch nicht. Dem Filesystem muss erst noch mitgeteilt werden dass hier eine Grössenänderung stattgefunden hat. Also:

6. Filesystem umounten:

umount /mnt

7. Filesystem überprüfen (sonst motzt der Resizer)

fsck.ext3 -vv -f /dev/vol/root

8. Fileystem schliesslich resizen

resize2fs /dev/vol/root

9. Wieder mounten

mount /dev/vol/root /mnt

10.Jetzt haben wir es geschafft…

Nov 14

Gestatten:

Ich bin der neue Gatekeeper der hier aufs Blog aufpasst. An mir kommt kein SYN vorbei, denn ich gebe hier die ACKs 😉

Gatekeeper

Nov 09

Es gibt Anbieter im Netz, die für soetwas Geld nehmen. Hier die Anleitung wie es einfach geht.

  1. Shell öffnen
  2. cd Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/
  3. cd Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/
  4. Nun in der MetaClasses.plis über den vi/emacs/…/[Editor] den key com.nokia.6280 suchen, und wie folgt ersetzen …

<key>com.nokia.6280</key>
<dict>
<key>Identification</key>
<dict>
<key>com.apple.cgmi+cgmm</key>
<string>Nokia+Nokia 6288</string>
<key>com.apple.gmi+gmm</key>
<string>Nokia+Nokia 6288</string>
<key>com.apple.usb.vendorid-modelid</key>
<string>0x0421/0x045A</string>
</dict>
<key>InheritsFrom</key>
<array>
<string>family.com.nokia.series40.3rdEd.bus.usb-bt</string>
</array>
<key>Services</key>
<array>
<dict>
<key>ServiceName</key>
<string>com.apple.model</string>
<key>ServiceProperties</key>
<dict>
<key>ModelIcon</key>
<string>NOK6280.tiff</string>
<key>ModelName</key>
<string>6288</string>
</dict>
</dict>
<dict>
<key>ServiceName</key>
<string>com.apple.synchro</string>
<key>ServiceProperties</key>
<dict>
<key>MaxCityLength</key>
<integer>50</integer>
<key>MaxEMailLength</key>
<integer>60</integer>
<key>MaxEventLocationLength</key>
<integer>150</integer>
<key>MaxPhoneNumberLength</key>
<integer>48</integer>
<key>MaxPostalCodeLength</key>
<integer>50</integer>
<key>MaxStateLength</key>
<integer>50</integer>
<key>MaxStreetLength</key>
<integer>50</integer>
<key>MaxURLLength</key>
<integer>60</integer>
</dict>
</dict>
</array>
</dict>

Nov 09

Lange hat es gedauert bis ich meinen ssh-daemon auf dem mit openwrt bestückten WRT54GL zur Key-Authentifizerung bewegen konnte. Hier die Anleitung für alle verzweifelten:

  1. id_dsa (Ja der Private-Key – es geht leider nicht anders) auf den openwrt unter /tmp/xy ablegen
  2. via ipkg install dropbearconvert das Konvertierungstool installieren
  3. dropbearconvert openssh dropbear /tmp/xy /root/id_dsa die Konvertierung anstossen
  4. dropbearkey -y -f /root/id_dsa >/etc/dropbear/authorized_keys das gewünschte Keyfile erzeugen.
  5. Nun noch die beiden privaten Files (/tmp/xy und /root/id_dsa) löschen (die wollen wir ja nicht auf dem router behalten) – Das dropbearconvert wird auch nicht mehr benötigt – per ipkg remove dropbearconvert kann man wieder wervollen Platz auf dem Router freigeben…

Jetzt sollte es funktionieren.

Nov 09

Allen die “mal eben schnell” ein Backup benötigen, sei Netcat in Verbindung mit tar ans Herz gelegt. Die Methode ist alt, da ich aber dennoch immer suchen muss wie man tar jetzt zu stdout bewegt, sei das ganze hier noch einmal aufgeführt:

Auf dem Zielrechner (der das Backup entgegennimmt):
netcat -vvl -p 9988 >./[Backupdateiname].tar

Auf dem Quellrechner (von dem das Backup gezogen werden soll):
tar cv – . | netcat [Server-IP] 9988

Achja, evtl. muss so ein Backup ja auch mal restored werden 😉 Dann wie folgt:

Auf dem Zielrechner (wo das Backup wieder eingespielt werden soll):
netcat -vvl -p 9988 |tar -xv

Auf dem Quellrechner (wo das Backup liegt):
cat [Backupdateiname].tar |netcat [Server-IP] 9988

Bei Bedarf kann man das ganze noch mit “z” zum on-the-fly-Zippen oder mit –exclude tunen…
Und nun – viel Spass beim Backuppen

[Update 10.11]: Für alle die es ganz genau wissen wollen: Bei der Rhoener Linux User Group gibts ein feines Tutorial

Nov 07

Damit es nicht noch weiter bergab geht mit der BRD: www.stoppt-tempo130.de.

Nov 03

… das Teil kann einfach alles. Nämlich:

  • Linux shell (incl. ssh daemon) direkt nach der installation
  • Sämtliche Ports des Switches sind in vlans zerlegbar (Einsatz: Routing, Echte DMZ, Zweiter DSL-Anschluss als Fallback)
  • Die einzelnen LEDs sind via /proc/diag/led/* ansteuerbar (nette Effekte, zB Visualisierung des Onlinezustandes etc…)
  • Der “Button” auf der Frontseite kann ein Script unter Linux triggern (einfach ein 700er Shellscript unter /etc/hotplug.d/button anlegen – ggf. vorher das Directory erstellen)
  • IPtables ist so gut vorkonfiguriert, dass man nur noch marginale Anpassungen auf Shellebene machen muss (per Webinterface kann man iptables zwar auch customizen, allerdings nur sehr oberflächlich)
  • X-Wrt sollte man sich als openwrt-Distribution gönnen. Denn das Standart-Webinterface ist extrem kläglich.

So, der alte FVS338 ist jetzt rausgeflogen, mal schauen wo ich den noch einsetzen werde. Der WRT54 ist in jedem Falle sein Geld wert.

Wer so etwas auch haben möchte, kaufe sich einen Linksys WRT54GL (Kostenpunkt um die 60 Euro) und lese sich bei openwrt ein.

Okt 31

Was ich hier noch mühevoll beschreiben musste, kann der Leopard jetzt von Haus aus. Gesetzt dem Falle man ist stolzer Besitzer einer Fiery (die macht wirklich Sinn), die zum Bizuhub C350 gehört, wählt man einfach nur noch den passenden Druckertreiber auf dem Mac aus, und gut ist. Seit Apple CUPS gekauft hat, ist fast alles an PPDs (Druckertreibern) vorhanden, was das Herz begehrt. Im Falle des Bizhub 350C mit Fiery wäre das dann die “Fiery X3e 22C-KM PS Color Server v2.0 eu”. Davon gibt es allerdings 2 Stück. Wenn man die “letzte” nimmt, dann klappt es auch auf Deutsch.
Schmankerl: CUPS erkennt selbstständig ob der automatische Locher, Falter, etc. installiert ist, und kann diesen dann auch ansprechen.

Na dann – auf zum Drucken 😉

Okt 30

Ich denke das Symbol für Windows-Rechner in der Netzwerkumgebung vom neuen OSX spricht für sich, oder ??

preload preload preload