OpenVPN .p12 entpacken

Um die Daten aus einem p12 Container auszulösen, die folgenden Schritte ausführen:

  1. Auf Linux Rechner das p12 Zertifikat mit folgenden Befehlen entpacken
    1. openssl pkcs12 -clcerts -nokeys -in ZERTIFIKAT.P12 -out newfile.crt
    2. openssl pkcs12 -nocerts -nodes -in ZERTIFIKAT.P12 -out newfile.key
  2. Zusätzlich vom OpenVPN Server noch das cacerts.pem Zertifikat mitnehmen
  3. Auf Client alle 3 Dateien ablegen und in die Config einbauen, zb:

Statt der Zeile:

pkcs12 ZERTIFIKAT.p12

benötigt man nun die folgenden 3 Zeilen:

ca cacert.pem
cert newfile.crt
key newfile.key

Die Passphrase die der p12 Datei beiligt wird so natürlich ausgehebelt (wird beim Openssl Export abgefragt)

1wire

Wikipedia zum Thema 1wire:

1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle, die mit einer Datenader (DQ) auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird. Der Begriff 1-Wire ist irreführend, weil zudem noch eine Masse-Verbindung (GND) erforderlich ist. Diese Masseverbindung wird bei Knopf-förmigen Anordnungen über eine gegenseitige Isolation der Gehäusehälften erreicht. Tatsächlich werden immer zwei physikalische Leiterverbindungen benutzt (GND, DQ).

Verfügbar sind integrierte Bausteine zur Temperaturmessung, Akkuüberwachung, Echtzeituhr, kleine Speicher etc. Die Technik wurde zur Kommunikation zwischen den Komponenten eines Gerätes entwickelt, z. B. zur Erfassung des Akkuzustandes in einem mobilem Datenerfassungsgerät (PDA).

Quelle: http://de.wikipedia.org/wiki/1-Wire

Die Hardware:

Die Software:

Durch owfs wird der 1wire Bus mittles Fuse als Dateibaum ansprechbar. Gemountet sieht das so aus:

# mount | grep 1wire
OWFS on /srv/1wire type fuse.OWFS (rw,nosuid,nodev)
# ls /srv/1wire/ -1
10.0A04E6010800
10.472701020800
10.89FFE5010800
10.E02D01020800
81.F6D42D000000
alarm
bus.0
settings
simultaneous
statistics
structure
system
uncached

 

Hier sind 10.0A04E6010800, 10.472701020800, 10.89FFE5010800 und 10.E02D01020800 die DS18S20 Temperatursensoren. Aktuell im Testbetrieb 2 innen, 2 außen. 81.F6D42D000000 ist der USB 1wire Adapter selbst.

Das folgende Script liest per cron jede Minute die 4 Temperaturwerte aus, updated  eine RRD Datenbank/Grafiken und schreibt die 4 Werte in eine MySQL Datenbank (Teilweise von http://owfs.org/index.php?page=garden).

#!/bin/bash

for i in `cat /proc/mounts | cut -d' ' -f2`; do
        if [ "/srv/1wire" = "$i" ]; then
                echo "owfs mounted, starting...."
                echo "reading sensors..."
                # Read data from sensors
                inside1=`cat /srv/1wire/10.89FFE5010800/temperature`
                inside2=`cat /srv/1wire/10.0A04E6010800/temperature`
                outside1=`cat /srv/1wire/10.472701020800/temperature`
                outside2=`cat /srv/1wire/10.E02D01020800/temperature`

                echo "format data..."
                # Format reading
                inside1=`echo $inside1 | cut -c -4`
                inside2=`echo $inside2 | cut -c -4`
                outside1=`echo $outside1 | cut -c -4`
                outside2=`echo $outside2 | cut -c -4`

                if ([ $inside1 == "0" ] && [$inside2 == "0"]); then

                echo "update rrd..."
                # Update database
                rrdtool update database.rrd N:$inside1:$inside2:$outside1:$outside2
                echo "update mysql..."
                # Insert into mysql
                mysql -h MYSQL_SERVER -u MYSQL_USER --password=MYSQL_PASSWORT 1wire <
CREATE TABLE IF NOT EXISTS `temperature` (
  `idx` int(11) NOT NULL AUTO_INCREMENT,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `inside1` float NOT NULL,
  `inside2` float NOT NULL,
  `outside1` float NOT NULL,
  `outside2` float NOT NULL,
  PRIMARY KEY (`idx`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;

Datenbankstruktur die im Beispiel verwendet wurde.

Update alle 15 Minuten

System neu booten und vorher nächsten Timer per SVDRP checken

Habe mir letzte Woche ein bash Skript zusammengebastelt um unseren VDR einmal täglich neu zu booten (diverse Timer sind ins leere gelaufen weil entweder das CI Modul oder das Alphacrypt Modul hingen). Also morgens um 6 täglich neu booten und vorher prüfen ob in den nächsten 5 Minuten ein Timer startet bzw. gerade aktiv ist:

!/bin/bash
# Inform user what will happen
/usr/bin/svdrpsend MESG "Daily Reboot, checking Timers...."
# Result is time until next timer starts in seconds, if result is negative, a recording is currenly made
nxttmr=`svdrpsend NEXT rel | egrep "^250" | cut -d ' ' -f3 | tr -d '\r'`

if [ $nxttmr -gt 300 ]; then

	/usr/bin/svdrpsend MESG "Naechster Timer in $nxttmr sek. Daily Reboot in 10 sek..."
	/bin/sleep 10
	/usr/bin/sudo /sbin/shutdown -r now
else
	/usr/bin/svdrpsend MESG "Naechster Timer in unter 300 sek oder gerade aktiv...Reboot abgebrochen :("
fi

Bash Alias: Aktuelleste Logdatei eines Verzeichnisses

Mit diesem bash Alias kann man unter Linux die aktuellste Logdatei eines Serverdienstes (zb Teamspeak 3) betrachten ohne jedesmal händisch nach Ihr zu suchen:

alias watchlog='tail -f /pfad-zu-den-logdateien/`ls -t1 /pfad-zu-den-logdateien/ | head -n1`'