Kategorien
Linux

Die Bash und IFS – Zeilenschaltungen als Feldtrenner

Heute habe ich mal wieder etwas gelernt, wie eigentlich jeden Tag! 🙂

Mit der Variable IFS kann man in der Bash den Feldtrenner angeben, da ich als Feldtrenner die Zeilenschaltung erkennen wollte habe ich ihn auf „\n“ gesetzt.

Das klappt so lange im String kein „n“ enthalten ist!


Sobald aber im String ein „n“ enthalten ist wird dieses auch als Trenner erkannt und entsprechend passt das Ergebnis dann nicht mehr:

Die Lösung des Problems ist folgende:

IFS=$’\n‘

Damit klappt es dann wie gewünscht:

Kategorien
Linux

Unifi Controller auf Ubuntu 18.04 installieren

Die aktuelle Unifi Controller Software 5.8.28 lässt sich unter Ubuntu 18.04 LTS derzeit leider nicht so einfach installieren, die mitgelieferte Mongo-DB Version von Ubuntu entspricht nicht jener die der Controller verlangt.

Ergo muss man die passende Mongo-DB Version installieren um den Controller zum Laufen zu bekommen, ein Upgrade von 16.04 auf 18.04 scheint zu funktionieren.

Für die Installation des Controllers hat sich ein Unifi Benutzer die Arbeit gemacht und ein Script gebaut welches die komplette Installation quasi automatisiert, hierfür ist ein frisch installiertes Ubuntu System die beste Basis – wurden bereits Versuche unternommen die Controller Software zu installieren, sollte man alle Überreste vorher entfernen.

Der Link zum Download der Software führt über einen Beitrag im Unifi Forum:

https://community.ubnt.com/t5/UniFi-Wireless/UniFi-Installation-Scripts-UniFi-Easy-Update-Scripts-Works-on/td-p/2375150

Kategorien
Linux

Bounced Mails am IMAP Server finden und erneut versenden

Was tun wenn durch einen Fehler jede Menge Mails vom Mailserver gebounced wurden und man es nicht allen Leuten zumuten möchte dass sie die Mails erneut versenden müssen?

Alle an diesem Tag gesendeten Mails finden und via Script erneut in die Mail-Queue einordnen – was so einfach klingt ist im Grunde auch so einfach! (fast) 😉

Angenommen die gesendeten Mails liegen alle im Verzeichnis /srv/imap/{benutzer}/Maildir/.Sent/cur/ – dann könnte man anhand des Dateinamens schon mal ein wenig eingrenzen, alle Mails vom 19. und 20. Juli beginnen mit 1532… (Unix Timestamp).

Wir suchen also alle Mails die mit 1532 beginnen und prüfen dann mit „ls -al“ und grep ob sie an besagtem Tag versendet wurden – es interessieren uns nur die vom 20. Juli.

Alle Mails die gefunden werden injizieren wir dann unserem Postfix mit dem „sendmail“ Kommando.

#!/bin/bash

cd /srv/imap/

IFS=“

for I in $(ls);do

if [ -d „$I/Maildir/.Sent“ ]; then
for F in $(ls -al $I/Maildir/.Sent/cur/1532* 2>&1 |grep -v „No such file or directory“);do
TOSEND=$(echo $F|grep „Jul 20″|awk ‚{print $9}‘)
if [ $TOSEND ]; then
echo „$TOSEND“
cat „$TOSEND“||sendmail -t
fi
done
fi

done

Damit werden alle Mails erneut an den Mailserver übergeben und ausgeliefert.

Kann einem schon mal helfen, besser wär’s natürlich man kommt erst nicht in die Situation…!

Kategorien
Linux

Kiosk-System: iiyama Prolite T2252MTS mit Ubuntu 15.04 auf einem Banana Pi

iiyama_t2252mts_bananapiFür einen Info-Terminal habe ich einen Banana Pi mit iiyama Prolite T2252MTS Monitor verbaut, als Anwendung läuft auf dem System einfach nur ein Browserfenster mit einer Hersteller-Info-Webseite im Hintergrund.

Die Grundlage für dieses System bildet die Ubuntu Version von der Banana-Pi Webseite.

Auf mehrere Probleme bin ich bei der Inbetriebnahme gestoßen – der Monitor bliebt überhaupt dunkel, der Multitouch zum Zoomen und Scrollen funktionierte nicht, das Display konnte nicht um 90° gedreht werden und zu guter letzt machte nach dem Drehen der Mauszeiger noch Probleme! Die Achsen waren verdreht, eine Bewegung nach unten lies den Mauszeiger nach links wandern…

Hier nun die Einstellungen die bei mir zum Erfolg geführt haben

Damit beim Rechnerstart gleich ein User ohne Kennworteingabe angemeldet wird habe ich die Datei /etc/init/tty1.conf verändert

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /bin/login -f pi < /dev/tty1 > /dev/tty1 2> /dev/tty1

Dadurch fällt mir zwar die erste Konsole weg, davon gibts aber sowieso mehrere – also nicht weiter tragisch. 🙂

Das tty1 startet also die Login Shell vom User „pi“ und darin liegt eine modifizierte .bashrc Datei an deren Ende ich nur folgene Zeile angefügt habe:

xinit
logout

Der Befehl xinit startet das X-Windows System und sollte sich der Prozess mal beenden wird automatisch ein logout ausgeführt.

Sobald das X-Windows System startet wird die Datei .xinitrc im Home Verzeichnis vom User pi ausgeführt, diese sieht wie folgt aus:

#!/bin/bash

export TERM=xterm
WINDOWMANAGER=“pekwm“

exec $WINDOWMANAGER

exit 0

Hier wird „pekwm“ als Windowmanager definiert und entsprechend gestartet.

Der Window Manager „pekwm“ legt seine Config-Dateien im Unterverzeichnis .pekwm des Users pi an, die Datei „start“ muss ausführbar gemacht werden (chmod +x start) und bei mir sieht sie wie folgt aus:

xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axis Inversion“ 0 1
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axes Swap“ 1

sleep 1;/usr/bin/chromium-browser –start-maximized –kiosk –disable-about-in-settings –disable-account-consistency –disable-breakpad –disable-cloud-import –disable-drive-search-in-app-launcher –disable-extensions –disable-file-system –disable-offline-pages –disable-settings-window –disable-session-crashed-bubble &
while true; do
/usr/bin/x11vnc -display :0
done

Die ersten beiden Zeile dienen dazu den Mauszeiger umzuschalten sodass er nach dem Drehen des Bildschirms korrekt dem Finger folgt, je nachdem wie man den Bildschirm gedreht hat müssen die Werte angepasst werden.

Nach einer Pause von einer Sekunde wird dann der Chromium Browser im Kiosk Modus gestartet.

Am Ende des Scripts starte ich noch einen VNC Dienst, damit ich zu Fernwartungszwecken die Anzeige übertragen kann – das Ganze in einer Endlosschleife damit der VNC Dienst auch nach dem Beenden einer Wartung wieder aktiv wird.

Und jetzt kommen wir zur Konfigurtation des X-Servers, bei Ubuntu wird die Konfiguration aus dem Verzeichnis /usr/share/X11/xorg.conf.d geladen – entsprechend habe ich dort folgende Dateien erstellt:

01-fbturbo.conf

Section „Device“
Identifier „ProLite T2250MTS – iiyama“
Driver „fbturbo“
Option „fbdev“ „/dev/fb0“
Option „SwapbuffersWait“ „true“
Option „AccelMethod“ „G2D“
Option „rotate“ „CW“
Option „HWCursor“ „false“
EndSection

10-monitor.conf

Section „Monitor“
Identifier „Monitor0“
Modeline „1920×1080“ 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync -csync
EndSection

Section „Screen“
Identifier „Screen0“
Monitor „Monitor0“
DefaultDepth 24
Option „Rotate“ „left“
Option „RandRRotation“ „True“
SubSection „Display“
Depth 24
Modes „1920×1080“
EndSubSection
EndSection

50-multitouch.conf

Section „InputClass“
MatchIsTouchpad „true“
Identifier „Multitouch Touchpad“
Driver „multitouch“
Option „EmulateThirdButton“ „1“
Option „EmulateThirdButtonTimeout“ „750“
Option „EmulateThirdButtonThreshold“ „30“
EndSection

Eine Kleinigkeit gibts dann noch zu beachten, auf meinem System wurde der USB Touch vom Monitor erst sehr spät nach dem Booten erkannt – daher musste ich eine udev-Regel mit einbauen welche ein Script ausführt das die xinput Werte setzt!

/etc/udev/rules.d/10-local.rules

SUBSYSTEM==“input“, ACTION==“add“, KERNEL==“mouse0″, RUN+=“/usr/local/sbin/rotate_touch.sh“

Und hier der Inhalt des /usr/local/sbin/rotate_touch.sh Scripts:

#!/bin/sh
sleep 1
logger -t „touch“ „Versuche touch zu rotieren…“
export DISPLAY=:0
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axis Inversion“ 0 1
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axes Swap“ 1

Mit diesen Einstellungen läuft das System bei mir einwandfrei! Ein günstiges Kiosk System mit Multitouch – die Hardware kostet keine 300 Euro.

Viel Spaß beim Nachbasteln!

Kategorien
Linux

Fehler beim Upgrade von Squidguard bei Ubuntu 14.04

Bin gerade in den Bug hier rein gerauscht:

https://bugs.launchpad.net/ubuntu/+source/squidguard/+bug/1313200

Wie in der Bugmeldung beschrieben liegt das Problem daran dass der squidguard in Version 1.5-2 versucht am Ende den Proxy Squid neu zu starten, was mangels /etc/init.d/squid3 Script aber scheitert.

Was liegt also näher als das Problem zu beheben indem man einfach dieses Script erstellt? – nichts! 🙂

#!/bin/bash

exit 0

Mehr muss da nicht drinnen stehen – Hauptsache das Script liefert ein „0“ als Fehlercode retour und somit ein OK. Mit „chmod 0700 /etc/init.d/squid3“ noch ausführbar gemacht und schon klappt das Update vom squidguard ohne Probleme!

Es gibt wie’s scheint schon ein Paket mit Bugfix 1.5-3 allerdings nicht in den Update Repositories vom 14.04, das kann sich natürlich jederzeit ändern…

Kategorien
Allgemein

Datenschutzfreundliche Socialize-Buttons – Shariff

Der Datenschutz wird ja momentan immer mehr mit Füßen getreten, auf EU Ebene gibt es Bestreben den Datenschutz für die Interessen von Firmen und Behörden praktisch abzuschaffen.

Generell scheint es im Moment nicht sehr gut um den Datenschutz zu stehen, wer seine Vitalwerte tracken möchte hat bei den aktuell am Markt befindlichen Geräten kaum mehr die Möglichkeit seine Daten selbst und offline auszuwerten – alles wird beim Hersteller abgeliefert und steht dann dort zum Betrachten oder Downloaden zur Verfügung.

Man betrachte nur mal vor der Installation einer App welche Rechte sie verlangt und überlege dann wofür sie diese brauchen könnte…

Was hindert die Firmen daran die so erhaltenen Daten auszuwerten und an Dritten (eventuell in „anonymisierter“ Form) weiterzuverkaufen?

Faktisch besteht heute keine Chance seine Daten wirklich zu schützen oder auch nur deren Verwendung zu steuern. Als kleinen Schritt habe ich mich dazu entschlossen auf meiner Blog Seite als erste Maßnahme den Sozialize-Button Shariff der von c’t entwickelt wurde zu verwenden.

Die Integration in WordPress lässt sich mittels Plugin in wenigen Schritten erledigen – https://wordpress.org/plugins/shariff-sharing/

Kategorien
Linux

Fujitsu IRMC S4 Webseite per Script abfragen

Fujitsu bietet die IRMC Konsole zur Fernwartung der Server, bei neueren Primergy Servern kommt die „Integrated Remote Management Console“ in Version S4 daher, mit aktueller Firmware bekommt man mit dieser Version dann auch die Daten des RAID’s angezeigt.

Vorausgesetzt der Controller unterstützt es und der Server ist eingeschaltet und nicht mehr im POST Status.

Wer jetzt per Script (z.B. Nagios) auf diese Informationen zugreifen will kann mit ein paar kleinen Tricks ein Script dafür basteln…

Damit der Zugriff klappt braucht man eine SID die beim Login vom Server generiert wird, diese erhält man wie folgt:

wget -O /tmp/irmc.txt  –no-check-certificate –user=username –password=kennwort  „https://192.168.1.1/login?APPLY=99&P99=admin“

grep „sid=“ /tmp/irmc.txt |tail -1|awk -F’sid=‘ ‚{print $2}’|awk -F'“‚ ‚{print $1}‘

Mit der so erhaltenen SID kann man anschließend die gewünschte URL zusammensetzen:

wget -O /tmp/hd_status.txt –no-check-certificate „https://192.168.1.1/87?ms=3&lang=0&sid=tJ6bdq3eDgAnhmmT“

Damit aus dem HTML ein vernünftig lesbarer Text wird bemüht man jetzt noch w3m:

w3m -dump -T text/html /tmp/hd_status.txt|grep HDD

Und schon erhält man das gewünschte Ergebnis in lesbarer Form…

Operational 0    Operational SAS       HDD  SEAGATE ST9300605SS 300 GB   [Details]
Operational 4    Operational SAS       HDD  SEAGATE ST9300605SS 300 GB   [Details]

Den Status „Operational“ zu prüfen sollte dann kein großes Problem mehr darstellen…

 Nachtrag: das Ganze funktioniert erst ab dem D3116 Raid Controller – bei einem D2616 zeigt bereits das IRMC keine Daten an, also kann auch nichts mit obiger Anleitung abgefragt werden.

Kategorien
Linux Sicherheit

Linux CLI für Telegram – Nachrichten vom Server

Zur Netzwerküberwachung verwende ich meist Nagios oder noch besser OMD, in Kombination mit einem über USB angeschlossenem Handy kann man sich dann auch per SMS benachrichtigen lassen wenn etwas ausfällt oder einen kritischen Zustand  erreicht.

Da ich in letzter Zeit vermehrt Telegram nutze habe ich mir gedacht wär’s doch ganz praktisch sich die Nachrichten nicht per SMS sondern per Telegram schicken zu lassen! Also gestern gleich mal eine Suche im Web gestartet und schnell fündig geworden…

Unter https://github.com/vysheng/tg findet sich der Quellcode eines Command Line Interfaces (CLI) zum Versenden und Empfangen von Nachrichten via Telegram.

Mit der ausreichend ausführlichen Dokumentation unter https://github.com/vysheng/tg/blob/master/README.md bekommt man das Tool schnell und einfach installiert.

Wer zusätzlich mit „apt-get install expect“ das Tool expect installiert kann dann auch mit dem unter folgendem Link angeführten Script https://github.com/vysheng/tg/issues/46 schnell und einfach Nachrichten via Script verschicken lassen…

Wer das compilierte Programm von Rechner zu Rechner kopiert muss auf dem System auf dem es laufen soll dann noch zwei Libraries nachinstallieren:

 apt-get install libconfig8 liblua5.2-0

Und anschließend kann telegram wie folgt gestartet werden:

telegram -k ~/.telegram/tg-server.pub

Die Datei „tg-server.pub“ findet sich im Quellcodeverzeichnis vom telegram, .telegram wird im Homeverzeichnis des Users beim ersten Start angelegt.

Eine Nachricht kann jetzt ganz einfach im gestarteten telegram wie folgt versendet werden:

msg user#234678 ‚Hier folgt meine Nachricht‘

Wenige Sekunden später sollte es am Handy „ping“ machen… 🙂

Das einzige was mir jetzt noch bei telegram fehlt ist die Unterstützung von HTTP-Proxys – ansonsten ein tolles Tool das zum Spielen einlädt!

Kategorien
Cebit Hardware Linux

Cebit 2014 – Z-Wave Heimüberwachung/-automation, Bewegungsmelder

Fibrao – Bewegungsmelder

Die Firma Fibaro hat einen kleinen Bewegungsmelder im Programm, den kann man einfach irgendwie liegen lassen oder mit einem Nagel an der Wand befestigen – bei Aktivität meldet er via Z-Wave einen Alarm an die Z-Wave Zentrale. Die Batterie soll ca 2 Jahre halten, einfacher kann man Smart-Home kaum mehr nachrüsten ohne Kabel zu verlegen.

Von der Z-Wave Alliance gibt es inzwischen über 1000 Produkte für die Unterschiedlichsten Einsatzzwecke, vom Rauchmelder, Bewegungsmelder, Wassersensor, Stromverbrauchsmesser bis hin zur Heizungssteuerung so gut wie alles was man für die Heimautomation braucht.

Nest – Heizungsregler

Und für Bastler wie mich gibt es dann auch noch eine Zusatzplatine für den Raspberry Pi, damit erweitert man ihn zum Controller und kann dann entsprechend selbst Hand anlegen und Scripte bauen die in die Heimautomation nach Wunsch eingreifen. Das Modul kostet ca. 50 Euro und es wird eine Software mitgeliefert die sich um die Bedienung der Z-Wave Komponenten kümmert.

Raspberry Pi Z-Wave Controller


Kategorien
Sicherheit

Adobe Flash Player – Direktlink zum Download

Endlich gibt’s mal einen direkten Link zum herunterladen vom Adobe Flash Player (für Windows) ohne dass man sich erst durch die Auswahlorgie klicken muss.

Ideal wenn man wie ich schon eine Installationsroutine im Netzwerk hat die sich um die Verteilung kümmert und nur auf eine neue Exe wartet! 🙂

Zu finden ist sie im Bereich für Installationsprobleme

Und welche Version nun aktuell ist sieht man hier.

Der Auszug aus dem Kix-Script welches ich zur Installation verwende kommt jetzt auch noch:

? „LASTSCRIPT|FLASH7.KIX“
; Acrobat Reader installieren

$ISINST = READVALUE(„HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMacromediaFlashPlayerActiveX“,“Version“)
IF „$ISINST“ = „12.0.0.44“
 ? „AcrobatFlashAX|ist installiert $ISINST“
ELSE

 ? „AcrobatFlashAX|wird installiert – $ISINST – 12.0.0.44“
 SHELL „\SERVERswinstall_flash_player_ax_32bit.exe /install /silent“

ENDIF