Archiv der Kategorie: programmiertes

Nokogiri auf dem Mac installieren

Ich möchte mich ein wenig mit Ruby on Rails beschäftigen und bin für die Installation nach der Anleitung https://install-rails-mac.com/#check-the-gem-manager vorgegangen. Jedoch bin ich bei der Installation von nokogiri (gem install nokogiri) auf folgenden Fehler gestoßen.

ERROR:  While executing gem … (Gem::FilePermissionError)

    You don’t have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

Mit dem dem folgenden Befehl war die Installation jedoch möglich.

sudo gem install nokogiri -n /usr/local/bin

Mongodb unter Mac nutzen

Ich wollte mich in nächster Zeit ein wenig mit mongodb und nodejs beschäftigen. Hierfür habe ich Mongodb von der Seite https://www.mongodb.com/download-center/community heruntergeladen.

Die tgz Datei wurde mit tar -zxvf mongodb-osx-ssl-x86_64-<version>.tgz entpackt und unter /usr/local/bin abgelegt. Für den Speicherort der Daten habe ich mich für das Standardverzeichnis /data/db entschieden. Das Verzeichnis wurde unter dem root Benutzer angelegt und der Besitzer der Verzeichnisse wurde auf meinen Benutzer mit dem ich auf dem Mac arbeite geändert.

Zum starten der mongodb muss folgendes auf der Kommandozeile ausgeführt werden

export PATH=/usr/local/bin/mongodb-osx-x86_64-4.0.6/bin:$PATH
mongod

Um sich die Eingabe des Export Befehls zu sparen, wurde dieser in der .bash_profile hinterlegt

openhab2 und homematic

Als Gateway für Homematic wurde das Modul https://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html zusammengelötet und Raspberrymatic auf einem Raspberry 2 installiert.

Nachdem das System mit aufgesetzem Modul hochgefahren wurde konnte über die URL http://homematic-raspi auf die Webgui zugegriffen werden. Über die Oberfläche können diverse Einstellungen vorgenommen und neue Aktoren angelernt werden.

Damit die Geräte im Openhab genutzt werden können, muss in der Paperui unter das Homematic Binding hinzugefügt werden. Im Anschuss unter Configuration => Thing das Homematic Lan Gateway hinzufügen. Wenn openhab eine Verbindung zum Lan-gateway herstellen konnte, wird das Gateway mit dem Status grün(online) dargestellt und bereits eingebundene Homematic Sensoren werden in der Inbox aufgeführt.

Der Sensor kann nun über Add Thing eingebunden werden und über das angelegte Thing können einzelne Items angelegt werden.

Ich ziehe jedoch das bearbeiten und Verwalten der Items in einer Datei vor.

Die Items Datei sieht bei mir wie folgt aus:
Group kontakte
Contact Wintergarten_Tuer "Wintergarten Tür[MAP(kontakte.map):%s]" <contact> (kontakte){channel="homematic:HM-Sec-SCo:63f2dc68:NEQ0941168:1#STATE"}

Damit der Zustand des Kontakts in der Sitemap auf deutsch dargestellt wird, wurde die Datei kontakte.map angelegt.
CLOSED=geschlossen
OPEN=offen
TILTED=gekippt
undefined=unbekannt
NULL=keine Daten
-=keine Daten

Mit einer einfachen Regel kann man per Mail darüber informiert werden, wenn sich der Status ändert.

rule kontaktestatus
when
Item Wintergarten_Tuer changed
then

sendMail("emailadresse", "betreff", "Wintergarten Tür " + Wintergarten_Tuer.state)
end

SSH Keys verwalten

Ich finde ein ssh-keymanager ist sinnvoll wenn man mehrere Benutzer und Linuxserver verwalten muss. Angenommen man hat um die 40 Entwickler die auf bis zu 100 verschiedene Server zugreifen müssen. Für jeden Entwickler ein Benutzerkonto auf dem jeweiligen System zu erstellen ist sehr zeitaufwendig und bedarf auch einer guten Dokumentation. Meine Idee ist es ein Benutzerkonto zu erstellen zum Beispiel ewl , unter diesem Benutzer können sich alle Entwickler anmelden. Vorraussetzung ist das der Publickey des Entwickler in der authorized_keys hinterlegt wurde. Das hinterlegen des Keys würde in diesem Fall der ssh-keymanager übernehmen.

Installation
Die Inbetriebnahme des ssh-keymanagers ist recht einfach. Den Ordner entpacken und in ein entsprechendes Verzeichniss ablegen, auf den der Apache zugreifen kann. Eine Mysqldatenbank erstellen, den mitgelieferten Dump einspielen und die Zugangsdaten in der inc/connect.inc.php hinterlegen. Nun die Webseite aufrufen und mit admin / itbasic anmelden.

Damit die Keys verteilt werden können muss der Apache Benutzer in der Lage sein eine shell auszuführen, gegebenenfalls muss dafür die /etc/passwd angepasst werden. Zusätzlich muss unter dem Apache Benutzer ein Public key erstellt werden, dieser wird in der Mysqldatenbank(Tabelle systemkey) hinterlegt.

Host und Linuxbenutzer anlegen
Ein neuer Host wird über „Host => hinzufügen“ hinzugefügt, wichtig ist hierbei das die korrekte IP Adresse angegeben wird. Nachdem der Host angelegt wurde, kann über „Host => anzeigen“ ein neuer Linuxbenutzer für den Host angelegt werden. Der Linuxbenutzer muss nun jedoch noch manuell auf dem eigentlichen System angelegt werden und der zuvor erstellte public key des Apache muss in der authorized_keys abgelegt werden.
Bevor der erste Abgleich der Keys stattfinden kann, muss man sich über den Apache Benutzer an dem neuen Host anmelden. Durch die Anmeldung wird der Neue Host zu den known_hosts hinzugefügt.

Benutzer / Benutzergruppe
Unter Benutzer gibt es die Möglichkeit einen neuen Benutzer anzulegen bzw sich alle Benutzer anzuzeigen zu lassen.
Für die einfachere Verwaltung können Benutzer zu Gruppen zusammengefasst werden, diese Benutzergruppe wird dann dem entsprechendem Linuxbenutzer zugewiesen.

Abgleich
Unter Abgeich => Systemkey wir lediglich für den einfachen Zugriff der Public Key des Apache Benutzers dargestellt.
Bei dem Punkt anzeigen werden alles Linuxbenutzer aufgelistet die aktualisiert werden müssen. Ändert zum Beispiel ein Benutzer seinen Public Key, wird der entsprechende Linuxbenutzer hier aufgeführt. Ein klick auf den Pfeil stößt den Abgleich der Keys an.

Das Layout könnte man sicherlich noch überarbeiten, aber ich denke fürs erste sollte es reichen. Wenn jemand einen Fehler findet oder einen Änderungswunsch hat, einfach eine email schreiben.

 

Serverübersicht

 

Benutzerübersicht

 

Download

Kleine Anmerkung
Da meine grafischen Fähigkeiten leider nur reichen um Bilder mit Hilfe von Gimp zurechtzuschneiden, benutze ich folgende Buttons: http://fortawesome.github.io/Font-Awesome/

wissen für unterwegs

Zwischendurch erstelle ich für mich kleine Anleitungen und Scripte. Um die Anleitungen etc. zwischen Rechnern auszutauschen, hatte ich mir Anfangs ein Subversionrepository angelegt. Das Repository lief auf meinem heimischen Rechner und mit Hilfe von Dyndns konnte ich von überall darauf zugreifen. Irgendwann störte es mich jedoch das der Rechner die ganze Zeit laufen mußte, also habe ich nach Alternativen gesucht.
Anfangs hatte ich verschiedene Notizbücher getestet, leider fehlten Möglichkeiten für den Abgleich oder es gab nur eine Windows bzw. Linux Version. An ein Wiki hatte ich auch gedacht, nur für einen Zugriff benötige ich dann immer Zugang zum Internet.

Also habe ich mir selber ein kleines Script gebastelt, das im Endeffekt eine einfache html Seite erstellt.
Die eigentlichen Texte müssen wie folgt abgelegt werden. Unter dem Ordner daten müssen die Hauptkategorien als weitere Ordner ablegt werden wie z.B. Linux, Windows und / oder Datenbanken. Hierunter kommen die Unterpunkte( ebenfalls als Ordner ) wie z.B. unter Linux Shellscripte, Firewall.

Aufbau:

daten/Linux/Shellscripte/backup/artikel.txt
daten/Linux/Shellscripte/backup/backup.sh
daten/Linux/Shellscripte/backup/folders.txt
daten/Windows/Powershell/Beispiele/artikel.txt
daten/Windows/Powershell/Postfach_export/artikel.txt

Das Script bastel.sh erstellt aus den Hauptordnern sowie den Unterordner das Menü. In der jeweiligen artikel.txt ist der Text enthalten, im Text kann [[ ]] für code Darstellung verwendet werden und [§ §] für Überschriften.
Alle Dateien die in zum Beispiel daten/Windows/Powershell/Postfach_export liegen werden mit in die Seite eingebunden.

Wenn nun der wissen Ordner zum Beispiel in Dropbox hinterlegt wird, wird er auf den verschiedenen Rechnern abgeglichen.

Download: wissen