Archiv ‘Linux’

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

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

Donnerstag, 30. April 2015

Ist eine laufende Linux-Anwendung 32- oder 64-bit?

Das findet man mit folgenden zwei Befehlen heraus:

# ps ax | grep -i splunk
4137 ?        Sl     0:05 splunkd -p 8089 restart

Bewaffnet mit der pid kann man nun das Executable hinter dem Prozess analysieren:

# file -L /proc/4137/exe
/proc/4137/exe: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped

Meine Splunk-Installation enthält somit 32-bit Binaries.

Tags: , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 31. März 2015

moderncv aktualisieren

Gegen Jahresende 2014 war es wieder einmal an der Zeit, meinen Lebenslauf zu aktualisieren. TexShop geöffnet, die Liste der Meriten und Arbeitsstationen angepasst — und dann kompiliert die .tex-Datei doch tatsächlich nicht.

Wie sich rasch herausstellte kommt mit MacTeX 2014 ein aktualisiertes TeX-Paket moderncv

Andere LaTeX-Binary

Zuerst einmal war es nötig, eine andere LaTeX-Binary zu verwenden, um den Lebenslauf zu kompilieren:

% !TEX TS-program = lualatex

Bis zu diesem Wechsel verwendete ich xelatex.

Photo

Aus irgendeinem Grund war es auch nötig, das Photo von 64pt auf 54pt zu verkleinern, weil der bisherige Text so sonst nicht mehr auf die Seite gepasst hätte. Der zweite Wert, die 0.2pt fügte ich ebenfalls hinzu, um die Rahmenstärke festzulegen:

\photo[54pt][0.2pt]{picture.jpg}

Striche als Listenzeichen

Obwohl ich dies bereits bei der ursprünglichen Version des Lebenslauf anwendete, funktionierten die Striche als Listensymbole mit der neuen moderncv-Version nicht mehr.

Nach etwas herumpröbeln fand ich heraus, dass ich die Listendefinition nach der Definition von moderncv einbinden musste:

\renewcommand{\labelitemi}{---}

Vorlagenformat

Bei der Einstellung des Vorlagenformats gab es auch Anpassungen. Neu werden die Vorlagenart sowie die Farben nach dem Einbinden des Dokumententyps

\documentclass[10pt,letter,sans]{moderncv}

… mit zwei verschiedenen Kommandos definiert:

\moderncvstyle{casual}
% 'casual','classic','oldstyle','banking'

… und die Farben:

\moderncvcolor{blue}
% 'blue', 'orange', 'red', 'green', 'grey'

Hübschere Symbole

Weiter passte ich auch die Schriftart an, welche verwendet wird, um die Symbole für Mobiltelefon, Twitter und andere Kommunikationskanäle zu darzustellen:

\moderncvicons{awesome}

Vorher hatte ich marvosym im Einsatz. Da die Schrift mit der Standardinstallation von MacTeX nicht mitkommt, musste ich sie noch folgendermassen herunterladen und installieren:

$ sudo tlmgr install fontawesome
$ sudo mktextfm FontAwesome

Der Aufruf erfolgte dann folgendermassen:

\defaultfontfeatures{
    Path = /usr/local/texlive/2014/texmf-dist/fonts/opentype/public/fontawesome/ }
\usepackage{fontawesome}

Via: FontAwesome font not found?

Social Media

Neu können Links auf die Social Media-Präsenz gesetzt werden:

\social[linkedin]{marioaeby}
\social[twitter]{MarioAeby}
\social[github]{emeidi}

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 26. März 2015

monit unter Mac OS X neu starten

Vor einigen Tagen meldete mir die monit-Instanz aus einem anderen Subnet, dass die Web-Oberfläche der monit-Instanz auf meinem Mac mini nicht mehr ansprechbar war. Heute, nach unzähligen Warnmeldungen, habe ich mich um das Problem gekümmert.

Wie sich herausstellte, liess sich das Problem beheben, indem ich monit schlicht neu startete. Auf der Mac OS X-Kommandozeile geht dies so:

$ sudo launchctl unload /Library/LaunchDaemons/com.tildeslash.monit.daemon.plist
$ sudo launchctl load /Library/LaunchDaemons/com.tildeslash.monit.daemon.plist

Via: Monit

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

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 21. Januar 2015

Wieder einmal: Unrealistisch grossen FLV-Video-Stream herunterladen

Heute enthielt ein E-Mail-Thread einen Link auf folgenden CBN-Videoclip:

Native French under Attack in Muslim Areas

Wie so üblich wollte ich den Clip lokal auf meinem NAS speichern, damit ich ihn mir in einer ruhigen zu Gemüte führen kann, ohne dabei auf eine Internetverbindung angewiesen zu sein.

Ich öffnete deshalb Firefox, startete den Web-Developer-Modus und zeichnete im Tab „Network“ die Netzwerkaktivitäten auf. Dies liefert mir folgende URL, welche ich mit einem Rechtsklick in die Zwischenablage kopierte:

Akamai-URL

Erst nachdem ich den Download dieser URL mit wget gestartet hatte, realisierte ich, dass die Grösse der Datei mit exakt 2 GB angegeben wird:

...
Länge: 2147483647 (2,0G) 
...

Dies, obwohl der Nachrichtenbeitrag nachweislich weniger als vier Minuten lang ist. Während ich Google-Recherchen durchführte, erblickte ich in Terminal.app plötzlich folgenden Hinweis:

...
2015-01-21 21:32:07 (343 KB/s) - Verbindung bei Byte 91428830 geschlossen. Erneuter Versuch.
...

Danach nahm wget die Verbindung wieder auf und lud den Datenmüll weiter herunter.

Rasch realisierte ich, dass dies wohl eine Eigenschaft des Videostream-Servers ist, um die Übertragung des gesamten Streams zu einem bestimmten Zeitpunkt abzubrechen.

Wenig später hatte ich mir die cURL-Kommandozeile zusammengebastelt, welche nur die ersten 91428830 herunterlud:

$ curl -o "muslim.mp4" -r -91428830 "http://cbnhdf-f.akamaihd.net/734546207001/734546207001_34531,60520001_NewsBlock-9AM-041014-HD720-1029-626-1306-946,48268001_NewsBlock-9AM-041014-HD720-1029-626-1306-946,52212001_NewsBlock-9AM-041014-HD720-1029-626-1306-946,60209001_NewsBlock-9AM-041014-HD720-1029-626-1306-946,66563001_NewsBlock-9AM-041014-HD720-1029-626-1306-946,36206001_NewsBlock-9AM-041014-HD720-1029-626-1306-946-copy,.mp4.csmil/bitrate=5?videoId=3453082509001&lineUpId=&pubId=734546207001&playerId=1535799574001&affiliateId=&bandwidthEstimationTest=true&v=3.4.0&fp=MAC%2016,0,0,257&r=WGQXV&g=OWBGOOCJISIC"
...
curl: (18) transfer closed with 2056054817 bytes remaining to read

Und so hatte ich auch dieses Streaming-Video-Biest gezähmt.

Tags: , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 12. Januar 2015

IPP-Druckserver debuggen

Kürzlich musste ich zu Hause einen IPP-Druckserver (natürlich Apples CUPS) debuggen. Dabei entdeckte ich folgenden Befehl, um von einem Client-System zu prüfen, ob und wie der IPP-Druckserver auf Anfragen reagiert.

Dank der Fehlermeldung des CUPS-Servers als Antwort auf nachfolgenden Befehl …

$ ipptool -v -4 http://10.10.10.10:631/Laserdrucker get-printer-attributes.test
The printer or class does not exist.
       EXPECTED: STATUS successful-ok (got client-error-not-found)
       status-message="The printer or class does not exist."
       EXPECTED: charset-configured
       EXPECTED: charset-supported
       EXPECTED: compression-supported
       EXPECTED: document-format-default
       EXPECTED: document-format-supported
       EXPECTED: generated-natural-language-supported
       EXPECTED: ipp-versions-supported
       EXPECTED: natural-language-configured
       EXPECTED: operations-supported
       EXPECTED: pdl-override-supported
       EXPECTED: printer-is-accepting-jobs
       EXPECTED: printer-name
       EXPECTED: printer-state
       EXPECTED: printer-state-reasons
       EXPECTED: printer-up-time
       EXPECTED: printer-uri-supported
       EXPECTED: queued-job-count
       EXPECTED: uri-authentication-supported
       EXPECTED: uri-security-supported

… realisierte ich, dass ich meinen Laserdrucker über die URL http://10.10.10.10:631/printers/Laserdrucker ansprechen muss.

Auf dem Druckserver selber zeigt man sich den Status des Druckers mit folgendem Befehl an:

$ lpstat -p
printer Laserdrucker is idle. enabled since Wed 10 Dec 2014 06:56:43 PM CET

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 6. Januar 2015

Welcher Prozess verwendet unter Linux welchen Netzwerkport?

# netstat -tulpn

Quelle: Look for the process bound to a certain port

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen