WebDav mount im Dateisystem

Unter Linux kann man ein WebDav im Dateisystem einbinden und damit direkt Datei speichern. Einige Cloud Speicheranbieter bieten die Möglichkeit von WebDav an.

sudo apt install dav2fs

Nach der Installation sollten wir noch einige Parameter ändern. Zuerst die Mount Einstellungen.

sudo vim /etc/fstab

https://webdav.hidrive.strato.com/ /mnt/hidrive/ davfs noauto,user,rw 0 0
https://webdav.mediencenter.t-online.de/ /mnt/t-online/ davfs noauto,user,rw 0 0

Dann die Zugangsdaten für WebDav bei Beispeil von HiDrive und T-Online Mediencenter.

sudo vim /etc/davfs2/secrets

/mnt/hidrive/ benutzer passwort
/mnt/t-online/ benutzer@t-online.de passwort

Hier noch einige Einstellung für Dav2fs.

sudo vim /etc/davfs2/davfs2.conf

use_locks 0
cache_size 1
table_size 4096
gui_optimize 1
trust_server_cert /etc/davfs2/certs/hidrive.pem

Kommt es zu einem Fehler, so muss das Zertifikat hinterlegt werden.

/sbin/mount.davfs: wir trauen dem Zertifikat nicht
/sbin/mount.davfs: das Einhängen schlug fehl;
Server certificate verification failed: issuer is not trusted

echo|openssl s_client -connect webdav.hidrive.strato.com:443 |openssl x509 -out /etc/davfs2/certs/hidrive.pem

USB Kamera Streamer

Wir wollen eine USB Webcam oder die RaspberryPi Kamera welche unter /dev/video0 bereit steht, im Netzwerk als Stream bereitstellen.

sudo apt-get update
sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev checkinstall

Quellcode herunterladen und kompilieren

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
cd mjpg-streamer/mjpg-streamer
make USE_LIBV4L2=true
VERSION=$( sed -n '/SOURCE_VERSION/s/^.*"\(.*\)".*$/\1/gp' < mjpg_streamer.h )
REVISION=$( svnversion -cn | sed "s/.*://" )
sudo checkinstall --pkgname=mjpg-streamer --pkgversion="$VERSION+$REVISION~checkinstall" --default

MJPG-Streamer kann nun auf der Kommandozeile gestartet werden.

export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -f 15 -r 640x480" -o "/usr/local/lib/output_http.so -p 8090 -w /usr/local/www -c benutzername:passwort"

MJPG-Streamer

Raspberry Pi Zeitraffer Aufnahmen

Dieser kurze Beitrag beschreibt nicht die Installation der Kamera, sondern nur die Zeitraffer-Aufnahmen.

Mit dem Befehl lassen sich über einen definierten Zeitraum in bestimmten Zeitabständen Bilder aufnehmen:

raspistill -o img_%04d.jpg -tl 5000 -t 36000

Das Kommando ist aus mehreren Befehlen zusammengesetzt

Der Parameter -o definiert den Speicherort und den Dateinamen des Bildes. Es benennt die aufgenommenen Bilder mit einer fortlaufenden 4-stelligen Zahl.

Der Parameter -tl 5000 definiert die Zeitabstände zum Aufnehmen der Fotos, alle 5 Sekunden wird ein Bild erstellt.

Der Parameter -t 36000 definiert die Zeitdauer, wie lange das Programm laufen soll.

Die Zeitraffer-Aufnahmen stellen eine Vielzahl an einzelnen Bildern dar, die auch in ein Video zusammengeführt werden können. Dafür verwendet ihr den Befehl, um den Film video.mp4 zu erstellen.

ffmpeg -qscale 5 -r 4 -b 9600 -i img_%04d.jpg video.mp4

Raspberry Pi Kamera als Stream Server

Bei diesem Projekt verwende ich eine Raspberry Pi Kamera als Stream Server. Das Betriebssystem ist Rasbian Jessy Lite.

Mit Raspberry Konfig haben wir das Kamera Modul aktiviert.

sudo raspi-config

Ein erster Snapschuss sollte schon jetzt möglich sein.

raspistill -o /tmp/snapshot.jpg

Jetzt können wir die Installation starten.

Zuerst die PublicKey für Apt-Get hinzufügen.

curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -

Die Installationsquellen für Apt-Get hinzufügen.

sudo sh -c 'echo "deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ jessie main" > /etc/apt/sources.list.d/uv4l.list'

Jetzt kann die Installaion starten.

sudo apt-get update
sudo apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras

Der Dienst sollte jetzt laufen.

sudo service uv4l_raspicam status

oder man kann das Device /dev/video0 mit dem Programm uv4l erstellen.

uv4l --driver raspicam --auto-video_nr --width 640 --height 480 --encoding jpeg

Jetzt erstellen wir ein Foto in /tmp/snapshot.jpg.

dd if=/dev/video0 of=/tmp/snapshot.jpg bs=11M count=1

Jetzt kann man Motion oder einen anderen StreamServer verwenden.

Wir verwenden einen WebRTC StreamServer.

sudo apt-get install uv4l-webrtc

Mit VLC oder dem Firefox kann man sich den Stream ansehen.

vlc http://raspberrypi:8080/stream/video.mjpeg

Motion bietet sehr viel mehr, wie eine Bewegungserkennung und Alarm.

sudo apt install motion

Es gibt auch eine Beispielkonfiguration.

wget http://linux-projects.org/downloads/examples/motion.conf

Jetzt können wir Motion starten.

LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so motion -c /home/pi/motion/motion.conf

Im Webbrowser kann unter der Adresse http://raspberrypi:8081/stream.mjpg die Kamera aufzurufen.

Die LED an der Kamera lässt sich deaktivieren, indem der Eintrag disable_camera_led in der Konfig Datei gesetzt wird.

sudo sh -c 'echo "disable_camera_led=1" >> /boot/config.txt'

Weitere Informationen zur UV4L Installation.

Check_MK Raw Server Edition installation

Diese Anleitung beschreibt die Installation von Check_MK Raw Server Version 1.2.8 auf Ubuntu Server 16.04 LTE.

Die Installation von Ubuntu Server 16.04 wird einfach mit Standardvorgaben installiert.

Zusätzlich installieren wird ein extra Tool, welcher alle Abhängigkeiten zu Check_mk installiert.

sudo apt-get install gdebi-core

Auf der Download Seite von Check_mk finden wir die Version 1.2.8 Raw, welche 100% kostenlos ist.

Wir laden die 64bit Version für Ubuntu 16.04 runter.

wget https://mathias-kettner.de/support/1.2.8p18/check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Jetzt können wir Check_mk mit allen Abhängigkeiten installieren.

sudo gdebi check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Check_mk verwendet den Apache mit mod_proxy, welches aktiviert werden sollte.

sudo a2enmod proxy_http

Nach einem Neustart ist die Installation schon fast abgeschlossen.

sudo service apache2 restart

Wir können die installierte Version ausgeben.

omd version

Check_mk bietet die Möglichkeit unterschiedliche Seiten gleichzeitig zu betreiben. Wir erstellen eine Beispielseite „mysite“.

sudo omd create mysite
sudo omd start mysite

Jetzt kann man die Seite im Browser erreichen. http://HOSTNAME/mysite/ Der Login lautet „omdadmin“ und das Password ist „omd“.

Ein Update auf eine neue Check_mk Version ist immer möglich. Das Versionsupdate wird in Schritten durchgeführt.

Pfsense 2.3 mit Check_MK Agent

Leider wird das Check_mk Agent Paket für Pfsense nicht weiter entwickelt. Deshalb muss man die Installation vom Check_mk Agent von Hand vornehmen.

Für den Check_mk Agent ist die Installation von Bash notwendig.

pkg install bash

Ausführen über Diagnostics Command Prompt.

Jetzt werden zwei Verzeichnisse erstellt.

mkdir -p /opt/bin
mkdir -p /opt/etc/xinetd.d

Darin wird der Check_mk Agent von Git geladen.

curl --output /opt/bin/check_mk_agent 'https://git.mathias-kettner.de/git/?p=check_mk.git;a=blob_plain;f=agents/check_mk_agent.freebsd;hb=HEAD'

Die Datei wird ausführbar gemacht.

chmod +x /opt/bin/check_mk_agent

Führt man den Check_mk agent aus, sieht man schon das Ergebnis.

/opt/bin/check_mk_agent

Unter Diagnostics Edit File kann man die Konfiguration anpassen.

/opt/etc/xinetd.d/check_mk

# +------------------------------------------------------------------+
# |             ____ _               _        __  __ _  __           |
# |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
# |           | |   | '_ \ / _ \/ __| |/ /   | |\/| | ' /            |
# |           | |___| | | |  __/ (__|   <    | |  | | . \            |
# |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
# |                                                                  |
# | Copyright Mathias Kettner 2014             mk@mathias-kettner.de |
# +------------------------------------------------------------------+
#
# This file is part of Check_MK.
# The official homepage is at http://mathias-kettner.de/check_mk.
#
# check_mk is free software;  you can redistribute it and/or modify it
# under the  terms of the  GNU General Public License  as published by
# the Free Software Foundation in version 2.  check_mk is  distributed
# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
# ails.  You should have  received  a copy of the  GNU  General Public
# License along with GNU Make; see the file  COPYING.  If  not,  write
# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
# Boston, MA 02110-1301 USA.
 
service check_mk
{
	type           = UNLISTED
	port           = 6556
	socket_type    = stream
	protocol       = tcp
	wait           = no
	user           = root
	server         = /opt/bin/check_mk_agent
 
	# If you use fully redundant monitoring and poll the client
	# from more then one monitoring servers in parallel you might
	# want to use the agent cache wrapper:<br />
 
	#server         = /usr/bin/check_mk_caching_agent
 
	# configure the IP address(es) of your Nagios server here:
	#only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
 
	# Don't be too verbose. Don't log every check. This might be
	# commented out for debugging. If this option is commented out
	# the default options will be used for this service.
	log_on_success =
 
	disable        = no
}

Jetzt müssen wir die Filer-Einstellungen anpassen.

/etc/inc/filter.inc

In der Zeile 2375 muss noch eine Zeit eingefügt werden.

fwrite($xinetd_fd, "includedir /opt/etc/xinetd.d");
 
fclose($xinetd_fd);             // Close file handle

Man kann die Änderung auch von einem Skript „/opt/filter_check_mk_cron“ durchführen lassen.

#!/bin/sh
 
grep includedir /etc/inc/filter.inc
if [ $? -eq 0 ]
then
        exit 0
else
        awk '/fclose\(\$xinetd_fd\)\;/{print "fwrite($xinetd_fd, \"includedir /opt/etc/xinetd.d\");"}1' /etc/inc/filter.inc > /etc/inc/filter.inc.temp
        mv /etc/inc/filter.inc.temp /etc/inc/filter.inc
fi
exit 0

Das Script braucht auch Ausführungsrechte.

chmod +x /opt/filter_check_mk_cron

Nach dem Speichern der Datei /etc/inc/filter.inc müssen die Änderungen geladen werden. Das geschieht unter Status Filter Reload.

Jetzt kann man die Funktion prüfen.

telnet localhost 6556

Diese Anleitung ist eine Zusammenfassung von einem Forum Beitrag. Weiter Information zum Check_mk Agent gibt es in der Dokumentation.

Swap Partition mit Kompression

Wird in Linux nicht ausreichend RAM bereit gestellt, so besteht die Möglichkeit diesen mit eine Swap Partion zu erweitern. Zusärtlich kann man die Daten in dem Swap komprimieren.

Dazu instellieren wir zRAM-config.

sudo apt-get install zram-config

Der Dienst braucht ein Kernelmodul „zram“ und „lz4_compress“

sudo modprobe zram

Jetzt sollte das Modul geladen sein.

lsmod |grep zram

zram                   28672  4
lz4_compress           16384  1 zram

Sollte es nicht geladen werden können, weil das Kernel Modul nicht installiert ist, dann müssen noch die Extras installiert werden.

sudo apt-get install linux-image-extra-`uname -r`

Nach einem Neustart sollte der Dienst ohne Fehler laufen.

sudo service zram-config status

Die Anzeige vom Swap sieht jetzt so aus.

sudo swapon --show

NAME       TYPE      SIZE USED PRIO
/dev/sda5  partition 510M   0B   -1
/dev/zram0 partition 124M 976K    5
/dev/zram1 partition 124M 972K    5
/dev/zram2 partition 124M 968K    5
/dev/zram3 partition 124M 972K    5

Design Patterns

Eine beliebte Frage bei einem Einstellungstest als Softwareentwickler ist nach Design Patterns (Entwurfsmuster). Gut, wenn man dann einige Namen kennt und vielleicht deren Funktionsweise.

Entwurfsmuster

  • Abstract Factory (Abstrakte Fabrik)
  • Builder (Erbauer)
  • Factory Method(Fabrikmethode)
  • Prototype (Prototyp)
  • Singleton (Singleton)

Strukturmuster

  • Adapter (Adapter)
  • Bridge (Brücke)
  • Composite (Komposition)
  • Decorator (Dekorierer)
  • Facade (Fassade)
  • Flyweight (Fliegengewicht)
  • Proxy (Proxy)

Verhaltensmuster

  • Chain of Responsibility (Zuständigkeitskette)
  • Command (Befehl)
  • Interpreter (Interpreter)
  • Iterator (Iterator)
  • Mediator (Vermittler)
  • Memento (Memento)
  • Observer (Beobachter)
  • State (Zustand)
  • Strategy (Strategie)
  • Template Method (Schablonenmethode)
  • Visitor (Besucher)

Entfernen aller Pakete, die von dpkg mit rc markiert sind

Es gibt einen signifikanten Unterschied zwischen Apt remove oder purge. Apt (dpkg) remove entfernt nur die Paket-Binärdateien. Die Konfigurationsdateien des Pakets werden nicht gelöscht. Solche Pakete haben normalerweise den Zustand rc.

Mit dpkg können Sie den Status aller Pakete anzeigen.

dpkg --list |grep "^rc"

Was bedeutet „rc“? Dieser Zustand bedeutet, dass die Konfigurationsdateien noch nicht entfernt wurden, sondern nur die Binärdateien.

Rc entspricht…

R: Die Binärdateien wurde zur Entfernung markiert.
C: Die Konfigurationsdateien sind weiterhin vorhanden.

Lassen Sie uns die Pakete extrahieren, welche mit „rc“ markiert sind.

dpkg --list |grep "^rc" | cut -d " " -f 3

Nun entfernen wir alle Pakete, die als rc markiert sind.

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

VMware ESXi Verwaltung ohne Client

VMware ESXi ermöglicht die Verwaltung von Einstellungen ohne den Windows Client.

Wenn man den SSH Zugang aktiviert, kann man sich auch Remote verbinden.

Zuerst müssen wir die Nummer [vmid] der Viruellen Maschine (VM) ermitteln.

vim-cmd vmsvc/getallvms

Jetzt kann man die VM runter fahren.

vim-cmd vmsvc/power.shutdown [vmid]

Den Status der VM kann man erfragen mit…

vim-cmd vmsvc/power.getstate [vmid]

Jetzt kann man im Verzeichnis der VM die Einstellungen ändern.

vi /vmfs/volumes/datastore/vmfolder/name.vmx

Den RAM Speicher wird gesetzt mit der Einstellung memsize = „5120“.

Mit einem Reload wird die Einstellung geladen.

vim-cmd vmsvc/releoad [vmid]

Jetzt kann man die VM wieder einschalten.

vim-cmd vmsvc/power.on [vmid]