Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (7/n): Zeitzone und Uhrzeit einstellen

Mittels folgendem Befehl sollte man die Uhrzeit richtig stellen:

# dpkg-reconfigure tzdata

Ausserdem empfiehlt es sich, die Uhrzeit stündlich neu zu stellen:

# apt-get install ntpdate

/etc/crontab

...
* * * * *	root	ntpdate -s ch.pool.ntp.org
...

Tags: , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (5/n): Bildschirmausgabe um 90 Grad drehen

Da ich meinen Raspberry Pi 2 für die Anzeige eines web-basierten Dashboards verwende, dessen 22″-Monitor hochkant an einer Wand neben der Eingangstüre unserer Wohnung hängt, muss ich die Bildschirmausgabe um 90 Grad im Uhrzeigersinn rotieren.

Hierzu ist mindestens eine Einstellung namens display_rotate im Pseudo-BIOS des Raspberry Pis 2 nötig:

/boot/config.txt

...
disable_overscan=1
...
gpu_mem=256
...
display_rotate=1

Quelle: CONFIG.TXT

In der Dokumentation sind die Gradangaben für die Werte 0 bis 3 aufgeschlüsselt — 90 Grad im Uhrzeigersinn werden mit dem Wert 1 konfiguriert.

Tags: , , , , , , , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (3/n): Von Raspbian Wheezy auf Jessie aktualisieren

Nachdem man SSH-Verbindungen herstellen kann, aktualisiert man zuerst einmal das System. Hierzu loggt man sich per SSH mit dem Benutzer pi ein und wechselt danach zum root-Benutzer:

$ sudo su -

Als nächstes aktualisiert man wie von Debian gewohnt die

# apt-get update

und installiert alle neuen Pakete:

# apt-get upgrade

Ist Wheezy auf dem neuesten Stand, wechseln wir das Repository in folgender Datei zu Jessie:

/etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

Nun führen wir erneut ein

# apt-get update

durch, um die Jessy-Paketliste herunterzuladen.

Jetzt startet die grosse Upgrade-Aktion:

# apt-get dist-upgrade

Nach einigen Stunden und allfälligen Dialogen sollte nach einem Reboot Raspbian Jessy auf dem System laufen.

Tags: , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (2/n): WLAN USB-Stick konfigurieren

Für meinen zweiten Raspberry habe ich in meinem Elektronik-Lager einen unbenutzten WLAN USB-Stick Linksys WUSB54GC v3 gefunden. Mit der Standard-Stromversorgung (1.2A) funktioniert dieser Stick problemlos (keine andere Peripherie an den USB-Anschlüssen) und Raspbian erkennt den WLAN-Stick automatisch.

Als erstes gilt es, den Raspberry Pi 2 zu booten. Angeschlossen an einen HDMI-Monitor und mit einem USB-Keyboard geht man danach an die Konfiguration des WLAN-Adapters, damit man die restliche Konfiguration per SSH vornehmen kann.

Nachdem man nach dem ersten booten in raspi-config landet, vergrössert man zuerst die Partition und startet den Taschencomputer neu. Beim nächsten Neustart loggt man sich mit dem Standardbenutzer pi und dem Passwort raspberry in die Shell ein. Dort startet man raspi-config erneut, und wechselt das Keyboard-Layout im Menupunkt „INTERNATIONALISATION OPTIONS“ auf „Deutsch (Schweiz)“. Anschliessend wechselt man das Passwort des Standardbenutzers. Sicher ist sicher.

Da in der Standardinstallation vim noch nicht vorhanden ist, nehmen wir nano und bearbeiten folgende Datei:

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
   wpa-ssid EMEIDI-LEGACY
   wpa-psk ********

iface default inet dhcp

Um die Verbindung herzustellen, habe ich den WLAN-Stick kurzerhand aus- und wieder eingestöpselt. Nach gefühlten 10 Sekunden führte der Befehl ifconfig für das Interface wlan0 dann eine gültige IP-Adresse auf (sofern der in dieser Konfiguration zwingend benötigte DHCP-Server im Netzwerk sauber funktioniert).

Nachdem man sich die IP unter dem Interface wlan0 notiert hat, geht es an den Mac mini, von welchem aus man mittels SSH die restliche Konfiguration des Systems vornimmt.

WLAN nach Komplikationen automatisch neu starten

Falls man mit gelegentlichen Verbindungsproblemen kämpft, welche einen automatischen Neustart des WLAN-Interfaces nötig machen, sollte man einen entsprechenden Cron-Job einrichten:

/etc/crontab

...
* * * * *	root	/usr/local/bin/check-wifi.sh > /dev/null 2>&1
...

Das Script liest sich folgendermassen:

#!/bin/bash
##################################################################
# A Project of TNET Services, Inc
#
# Title:     WiFi_Check
# Author:    Kevin Reed (Dweeber)
#            dweeber.dweebs@gmail.com
# Project:   Raspberry Pi Stuff
#
# Copyright: Copyright (c) 2012 Kevin Reed 
#            https://github.com/dweeber/WiFi_Check
#
# Purpose:
#
# Script checks to see if WiFi has a network IP and if not
# restart WiFi
#
# Uses a lock file which prevents the script from running more
# than one at a time.  If lockfile is old, it removes it
#
# Instructions:
#
# o Install where you want to run it from like /usr/local/bin
# o chmod 0755 /usr/local/bin/WiFi_Check
# o Add to crontab
#
# Run Every 5 mins - Seems like ever min is over kill unless
# this is a very common problem.  If once a min change */5 to *
# once every 2 mins */5 to */2 ... 
#
# */5 * * * * /usr/local/bin/WiFi_Check 
#
##################################################################
# Settings
# Where and what you want to call the Lockfile
lockfile='/var/run/WiFi_Check.pid'
# Which Interface do you want to check/fix
wlan='wlan0'
##################################################################
echo
echo "Starting WiFi check for $wlan"
date
echo 

# Check to see if there is a lock file
if [ -e $lockfile ]; then
    # A lockfile exists... Lets check to see if it is still valid
    pid=`cat $lockfile`
    if kill -0 &>1 > /dev/null $pid; then
        # Still Valid... lets let it be...
        #echo "Process still running, Lockfile valid"
        exit 1
    else
        # Old Lockfile, Remove it
        #echo "Old lockfile, Removing Lockfile"
        rm $lockfile
    fi
fi
# If we get here, set a lock file using our current PID#
#echo "Setting Lockfile"
echo $$ > $lockfile

# We can perform check
echo "Performing Network check for $wlan"
if ifconfig $wlan | grep -q "inet addr:" ; then
    echo "Network is Okay"
else
    echo "Network connection down! Attempting reconnection."
    ifdown $wlan
    sleep 5
    ifup --force $wlan
    ifconfig $wlan | grep "inet addr"
fi

echo 
echo "Current Setting:"
ifconfig $wlan | grep "inet addr:"
echo
 
# Check is complete, Remove Lock file and exit
#echo "process is complete, removing lockfile"
rm $lockfile
exit 0

##################################################################
# End of Script
##################################################################

Quelle: dweeber/WiFi_Check

Tags: , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (1/n): SD-Karte mit Image bespielen

Um meinen Raspberry Pi 2 mit einem Betriebssystem zu versehen, habe ich mir bei Digitec eine 16 GB grosse MicroSD-Karte der Klasse 10 gekauft. Diese habe ich anschliessend in meinen Mac mini gestöpselt, damit ich sie mit Raspbian (Debian für Raspberry) bestücken konnte.

Raspbian Wheezy (2015-05-05) habe ich mir über Bittorrent heruntergeladen, in einem Verzeichnis entpackt und danach mit folgendem Script auf die MicroSD-Karte geschrieben:

#!/bin/sh

# https://www.raspberrypi.org/documentation/installation/installing-images/mac.md

IMAGE="./2015-05-05-raspbian-wheezy.img"
SDCARD="/dev/disk2" # Adjust to your configuration; NO PARTITION, JUST THE DISK NAME!
SDCARD="/dev/rdisk2" # Using rdisk speeds up the process 4-7x (see comment by Simon Jenny)

echo "Unmounting disk $SDCARD ..."
sudo diskutil unmountDisk $SDCARD
echo "Done."
echo ""

echo "Starting imaging '$IMAGE' to $SDCARD ..."
sudo dd bs=1m if=$IMAGE of=$SDCARD
echo "Done."
echo ""

exit 0

Via: INSTALLING OPERATING SYSTEM IMAGES ON MAC OS

Die Device-Adresse der MicroSD-Karte habe ich auf der Kommandozeile mit dem Befehl df -h herausgefunden. Wichtig ist, dass man den Pfad zur Disk und nicht zur Partition angibt.

Da dd mit obigem Kommando keine Rückmeldung gibt, wie weit die Übertragung schon ist, habe ich mit dem OS X Activity Monitor habe ich mir im Tab „Disk“ den Fortschritt des Prozesses dd anzeigen lassen. Die Spalte „Bytes written“ zählt stetig aufwärts, bis die 3.3 GB erreicht sind.

Anschliessend habe ich die MicroSD-Karte mit OS X Disk Utility ausgeworfen (Rechtsklick auf die Disk, dann „Eject“) und in den Raspberry Pi 2 eingebaut.

Sobald der Taschencomputer mit Strom versorgt wird, sollte das rote LED leuchten. Leuchtet das grüne LED zudem permanent, hat man das Image verbockt (in meinem Fall: Das Image auf die Partition geschrieben, nicht auf die Disk). In dem Falle heisst es zurück zum Start.

Tags: , , , , , , , ,
Labels: IT, Linux

1 Kommentar | neuen Kommentar verfassen

Samstag, 6. Juni 2015

Ctrl-l bei Cyon SSH-Zugängen wieder zum Laufen bringen (sowie: Kritik an Cyon)

Vor Jahren war der Shared Hosting-Anbieter Cyon ein Lichtlein am Horizont — klasse Design, einfach zu bedienende Admin-Oberfläche ohne irgendwelchen Schnick-Schnack.

In den letzten Monaten hat der Anbieter bei mir leider viel Goodwill eingebüsst; es scheint, als passe Cyon bald im Monatsrhythmus seine Infrastruktur an, und der Leidtragende ist der Kunde:

  • Web Application Firewall. Unter dem Motto „Wir machen Web-Hosting noch sicherer!“ wurde primär einfach mal mein auf PHP und MySQL basierendes Site Management Tool zerschossen, welches seit bald 15 Jahren bei unzähligen Hostern produktiv läuft (und von mir auch regelmässig angepasst wird). PHP-Code darf nun nicht mehr per HTTP POST übermittelt werden, denn das sei grundsätzlich einmal ein Sicherheitsrisiko. Und überhaupt. Was zur Folge hat, dass meine Daten sowie diejenigen meiner betroffenen Kunden auf einen anderen Web-Server gezügelt werden mussten, welcher von einer nicht so paranoiden WAF abgeschirmt wird.
  • Lüpfen ohne Vorwarnung oder Testsystem. Ungefähr jedes halbes Jahr lüpft der Anbieter über Nacht die PHP-Standardversion. Finde ich im Grunde Klasse und äusserst fürsorglich. Wenn dann die Sysadmins dort wenigstens ein wenig Hirn walten lassen würden und meine für Cyon adaptierte php.ini ebenfalls von Version zu Version portieren würden. Aber nein, bei jedem PHP-Upgrade kriegt man eine liebevoll von Cyon vorbereite php.ini vorgesetzt, welche natürlich alle selber vorgenommenen Spezialeinstellungen nicht enthält. Ohne irgendwelche Vorwarnung, teilweise um 10 Uhr morgens. Dann heisst es auf der Arbeit, alles liegen und stehen lassen, irgendwie per SSH Verbindung zum Web-Server aufnehmen und die zerschossene php.ini mit einer Sicherheitskopie überschreiben. Dasselbe passierte übrigens mit oben genannter Problematik: Von einem Tag auf den anderen waren alle meine Web-Sites plötzlich wieder hinter einer amoklaufenden WAF aufgeschaltet und funktionierten wieder einmal nicht mehr. Nach Interventionen und langer Wartezeit bequemte sich ein System Engineer dort, den althergebrachten Zustand wieder herzustellen.
  • Kommunikation? Vergesst es. In der heutigen Zeit wäre es mittels E-Mail, Blog und RSS-Feeds ja echt keine Sache, die professionellen und semi-professionellen Kunden über geplante Änderungen zu informieren. Mit genügend Vorlaufzeit, damit das Datum im Kalender markiert werden kann und allenfalls bereits Anpassungen am Code vorgenommen werden können. Aber bei Cyon lebt man nach dem Grundsatz „Was der Kunde nicht weiss, macht ihn nicht heiss.“ Was halt leider dazu führt, dass der Kunde immer wieder aus heiterem Himmel eine grundlegende Anpassung vorgesetzt erhält.

Was mich zu meinem eigentlichen Problem führt: Es scheint, als hätte Cyon kürzlich den Web-Server von LiteSpeed auf Apache gewechselt (ich kämpfe derzeit mit Zeichensatzproblemen, weil AddDefaultCharset utf-8 in .htaccess nicht mehr beachtet werden). Nun gut und recht. Zusammen mit diesem Wechsel kommt auch die SSH-Shell komisch daher.

Insbesondere nervte mich tödlich, dass ich neuerdings das aktuelle Terminal-Fenster nicht mehr mittels Ctrl-l löschen konnte (analog zum Befehl clear, halt simpler und schneller). Wenn ich die Tastenkombination betätigte, erschien einfach eine neue Zeile mit der Befehlseingabe.

Nach einigen längeren Nachforschungen und Pröbeleien (wohl so eine Eigenheit von bash mit .bash_profile und .bashrc) löste folgender Eintrag in .bashrc mein Problem.

...
# User specific aliases and functions
bind -x $'"\C-l":clear;'

Quelle: To bind clear to ^l in Bash

Tags: , , , , , , , , , , , , ,
Labels: IT

2 Kommentare | neuen Kommentar verfassen

Mittwoch, 3. Juni 2015

Unter Windows mit einem Scanner direkt PDFs generieren

Gescannte PDFs sind aus dem Arbeitsalltag nicht mehr wegzudenken. Zu Hause verwende ich einen Fujitsu ScanSnap ix500, um Papierdokumente automatisch in PDF-Dateien zu digitalisieren (OCR folgt leider immer noch manuell über Adobe Acrobat 9).

Kürzlich wurde ich zu einem Supportfall gerufen, bei welchem die Kundin mit ihrem MFC-Scanner von Brother unter Windows ebenfalls auf Knopfdruck PDFs erstellen wollte. Doch leider war die Brother-Software hoffnungslos veraltet, umständlich und produzierte vor allem aus den Scans nicht direkt PDFs.

Nach einigem Suchen fand ich folgendes schicke Tool, welches äusserst bedienerfreundlich daherkommt:

Not Another PDF Scanner 2

Im Tool konnte ich den Scanner problemlos konfigurieren. Vorher war es nötig, den offiziellen Brother TWAIN-Netzwerk-Treiber zu installieren, damit Scandaten per Ethernet an den Windows-Client übermittelt werden können. Nun verrichtet das quelloffene Tool seit Monaten seinen Dienst, und dies ohne jegliche Komplikationen.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 3. Juni 2015

Europäischen Stromsteckerkopf von Nikon MH-24 entfernen

Wer wie ich regelmässig in die USA fliegt, schätzt es, wo immer möglich US-Stromsteckerköpfe an Netzteilen einzusetzen. Das Akkuladegerät Nikon MH-24, welches ich mit meiner Nikon D3300 gekauft habe, vereint beide Welten. In der unmodizifierten Fassung verfügt das Ladegerät über einen us-amerikanischen Stromstecker.

Bei in Europa verkauften Kameras legt Nikon dann einen aufsteckbaren Adapter bei, welcher das Ladegerät mit dem zweipoligen, runden Europaanschluss mit unserem Kontinent kompatibel macht.

Tritt man eine Reise nach Nordamerika an, empfiehlt es sich deshalb, den europäischen Aufsteckknopf zu entfernen. Dies ist auf Anhieb gar nicht so einfach. Eine Google-Suche hat mich deshalb auf folgende Forumsdiskussion gelenkt:

First you need to find a small flat screwdriver, you will also need something narrow that will fit into a hole about 3-4mm across (keep it clean guys I found a biro nib was ideal, you’ll have to remove it from the pen casing first though.

Hold the charger with the pins facing away from you like you’re about to put it into a power-socket, slide the flat screwdriver into the gap between the top of the charger and the join between the plug adapter (you’ll notice that there is a small hole here, but its easier to use a screwdriver trust me), slide the screwdriver in as far as you can (just to the side of the hole, as the catch is about 4mm wide either side of the hole) and keep pressure on it. Turn the whole unit 90 degrees so that you’re looking at it sideways; now gently pull the 3 pin adapter from the bottom away from the charing unit, as if you are peeling it off like a sticker.

This should release the catch at the top, however, you still have the catch at the side to deal with, and not much room to manouvre, I managed to release the second catch by twisting the 3 pin adapter towards the catch, however, this could damage the plastic catch a little, so to play safe, use your narrow item to push in the catch….you’ll have to push very hard to release it though.

Quelle: MH-24 plug charger problem?

Obwohl der lange Text auf den ersten Blick hin abschreckt darf ich beruhigen: Es ist wirklich ganz einfach. Man nehme einen kleinen, flachen Schraubenzieher und stosse diesen in Folge unter die beiden Plastic-Klemmen, mit welchen der Europa-Stecker an das Netzteil angemacht ist. Der Adapter löst sich und gibt die US-Stecker frei.

Ich habe das Prozedere nun bereits viele Male durchgeführt, ohne dass das Netzteil oder der Adapter je Schaden genommen hätten.

Tags: , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 3. Juni 2015

Welche Schlüsselstärke hat ein SSH Public-Key?

$ ssh-keygen -lf "1f:c7:da:ef:ff:ff:ff:ff:c8:77:c6:f8:1f:dd:f3:1a"
1024 1f:c7:da:ef:ff:ff:ff:ff:c8:77:c6:f8:1f:dd:f3:1a /tmp/key (RSA)

Quelle: Given keys in ~/.ssh/authorized_keys format, can you determine key strength easily?

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 3. Juni 2015

PHP erlaubt keine Floats als Array-Schlüssel

Da programmiere ich seit bald 15 Jahren mit PHP, doch erst vor wenigen Wochen habe ich realisiert, dass Arrays keine Floats als Schlüssel unterstützen. Variablen mit Fliesskommazahlen können zwar durchaus als Schlüssel gesetzt werden, werden in der Folge aber in Integer-Werte umgewandelt. Dies führt dazu, dass Schlüssel wie ‚3.3‘ sowie ‚3.4‘ zu ‚3‘ umgewandelt werden und der Variablenwert dementsprechend überschrieben wird:

Working with an array with periods in key values

Wer die Fliesskommazahlen zwingend benötigt, muss diese zuerst in Strings umwandeln:

...
$key = 3.3;
$keyValid = (string)$key;
$array[$key] = 'One';
$array[$keyValid] = 'Two';
var_dump($array);
...

Via: ToString() equivalent in PHP

ergibt:

array(2) {
  [3]=>
  string(3) "One"
  ["3.3"]=>
  string(3) "Two"
}

Tags: , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen