Hashes ohne Reihenfolge
Um schnell zu testen, ob ein angegebenes Device existiert, oder um sofort vom Device-Kürzel zu dessen House-/Unit-Code zu gelangen, wäre es sinnvoll, »/etc/x10.conf« in Hash-Form zu speichern. Doch geht in einem Hash leider die ursprünglich definierte Reihenfolge verloren - aber die ist für eine Anzeige im Browser wichtig. Wer will schon bunt durcheinander gewürfelte Bedienelemente?
Also wandeln die Zeilen 33 bis 35 in Listing 3 den Array mit Hash-Elementen in einen Hash um, dessen Schlüssel die Gerätekürzel sind und der als Werte die vorher definierten Geräte-Hashes führt. In der Instanzvariablen »devhash« wird eine Referenz auf diesen Schnellzugreifer für später abgelegt. Die Zeilen 41 bis 43 iterieren über alle Einträge und setzen den Zustand bislang unbekannter Geräte auf »off«. Das muss nicht stimmen - falls nicht, renkt der nächste Zustandswechsel den X10-Empfänger wieder ein.
Die Methode »send()« schickt über den am Linux-Rechner hängenden X10-Transceiver ein Kommando an einen per Gerätekürzel adressierten X10-Empfänger. Ist das übermittelte Kommando nicht »on« oder »off«, sondern »status«, verzweigt Zeile 72 zu der weiter unten definierten Methode »status()«, die den vermuteten Status des X10-Empfängers aus der Konserve (also der Dbm-Datei) abholt.
Zwischen der Initialisierung der seriellen Schnittstelle und dem Aufruf des X10-Kommandos schläft »MyX10.pm« eine Sekunde lang mit »sleep(1)«. Dafür ist eigentlich kein zwingender Grund zu erkennen. Lässt man diese Zwangspause jedoch weg, stellen sich nicht zu erklärende Timing-Probleme mit der X10-Ansteuerung ein.
Sudo ohne Passwort
Nur Root darf X10-Signale über die serielle Schnittstelle senden. Daher muss »myx10« unter der Benutzerkennung »root« laufen. Wer die Geräte über ein Web-GUI steuern will, bekommt damit aber ein Problem, denn das Eigentum am Webserver geht sicherheitshalber auf »nobody« über. Es bei »root« starten zu lassen wäre grob fahrlässig.
Eine Lösung bietet folgender Eintrag in »/etc/sudoers«, der ein kleines Loch öffnet, das es dem Webserver erlaubt, über »sudo« das Skript »myx10« als »root« auszuführen, ohne dass die Eingabe eines Passworts erforderlich wäre:
nobody ALL= NOPASSWD:/usr/bin/myx10
Das Schlüsselwort »ALL« links vom Gleichheitszeichen legt fest, dass die mit diesem Ausdruck definierten Einstellungen nicht auf einen bestimmten Host beschränkt sind. Das auf den Doppelpunkt folgende Kommando auf der rechten Seite grenzt mögliche Aktivitäten allerdings auf das angegebene Skript »myx10« ein.
So darf ein Einbrecher nach feindlicher Übernahme des Webservers höchstens die X10-Geräte ein- und ausschalten, nicht aber den Root-Account des Linux-Rechners übernehmen. Als Alternative ließe sich auch mit »chmod a+rw /dev/ttyS0« die serielle Schnittstelle für jeden Benutzer beschreibbar machen, das erspart den Sudo-Trick ganz.
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|