By using this website, you agree to the use of cookies as described in our Privacy Policy.

Grundinstallation der Pi

Der Plan ist, die Raspberry Pi mit einem Debian-Image (Raspian) zu versehen, in das lokale Netz zu integrieren, und für alle folgenden Tests vorzubereiten.

  • Download des Debian-Images
  • unzip
  • Installieren auf der zur Verfügung stehenden 8 GB SD-Card
dd bs=1M if=./2013-02-09-wheezy-raspbian.img of=/dev/sdc

  • Anschließen der Raspberry PI (im folgenden Himbi genannt)
    • SD-Card einsetzen
    • per HDMI an den Fernseher
    • per USB an die wireless Keyboard/Maus
    • Am Fernseher steht kein LAN zur Verfügung
    • zd1211 USB WLAN-Adapter
    • Per Handy-Ladegerät an Strom
  • Booten
  • die Raspberry bootet in ein Menu, mit dem die Grundkonfiguration vorgenommen werden kann. Wichtig ist dabei vor allem die aktivierung von SSH.
  • Danach die Himbi ohne Fernseher an's LAN anschließen
  • Sicherstellen, dass in /etc/apt/sources.list auch nonfree Pakete eingeschlossen sind.
  • einen Editor und die Firmware für den WLAN-Stick laden
apt-get update
apt-get install joe
apt-get install zd1211-firmware
  • zurück am Fernseher lässt sich das WLAN aktivieren
  • Beim Versuch eines Systemupdates stellt sich heraus, dass das WLAN unzuverlässig ist und immer wieder abbricht. Das Thema WLAN wird also auf später verschoben. Das liegt an dem veralteten Stick. Bevor ich mich lange rumärgere nehme ich einen anderen (EXA)
  • Zurück am LAN werden folgenden Maßnahmen getroffen
# in /etc/hostname und /etc/hosts den Systemnamen auf himbi setzen.
#/etc/network interfaces
auto lo

iface lo inet loopback
iface eth0 inet static
   address 192.168.100.5
   netmask 255.255.255.0
   gateway 192.168.100.200
   broadcast 192.168.100.255
   dns-search ntech.de
   dns-nameservers 192.168.100.200

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

#/etc/timezone
Etc/UTC

# /etc/default/rcS
UTC=no

# /etc/profile hinzufügen
alias ll="ls -l"
alias la="ls -la"

# Anmeldung ohne Passwort
ssh-keygen
ssh-copy-id an alle bekannten Rechner
  • Zugriffe: 389

SNMP und Nagios NRPE

Ich will die Raspberry Pi mit Nagios (Icinga) überwachen, dazu muss nrpe installiert sein. Eine Installation von nrpe mit apt-get scheitert daran, dass eine unübersehbare Menge an Software mitinstalliert werden soll. Das ist nicht einzusehen. Also muss nrpe und Plugins aus den Quellen gebaut werden.

Installation von nrpe und Plugins

# Voraussetzungen installieren
apt-get install libssl-dev xinetd
cd /usr/src
# Herunterladen der Quellpakete
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz
# Auspacken
tar -xzvf nagios/nrpe-2.13.tar.gz
tar -xzvf nagios-plugins-1.4.16.tar.gz
# Plugins kompilieren
cd nagios-plugins-1.4.16/
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios
make
make install
#
# nrpe kompilieren
cd /usr/src/nrpe-2.13/
# zur Vermeidung von "Cannot find SSL Libraries
ln -s /usr/lib/arm-linux-gnueabihf/libssl.so /usr/lib/libssl.so
./configure --enable-command-args
make all
make install-plugin
make install-daemon
make install-daemon-config

Installation von nrpe und Plugins

apt-get install snmpd snmp
apt-get install snmp-mibs-downloader bc
Die Plugins sind ja bereits installiert, meine eigenen Plugins (meist in Perl geschrieben) kommen in das Verzeichnis /usr/local/scripts und werden von da aus mit Softlinks in das Plugin verzeichnis gelinkt.
 
Die Datei /etc/nagios/nrpe sieht so aus (gestrippt, weil sonst unübersichtlich) Wichtig sind die letzten paar Zeilen, weil ich eigentlich alle checks mit "check_by_nrpe" mache.
 
log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
#server_address=127.0.0.1
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=192.168.100.2,192.168.100.5
 
dont_blame_nrpe=1
# DEBUGGING OPTION
debug=0
# COMMAND TIMEOUT 
command_timeout=60
# CONNECTION TIMEOUT  
connection_timeout=300
# WEEK RANDOM SEED OPTION
#allow_weak_random_seed=1

# COMMAND DEFINITIONS
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20   
command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_disk2]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hdb1
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 98% -c 95%
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_xen]=/usr/local/nagios/libexec/check_xenvm -w 1 -c 0
command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$
command[check_by_nrpe]=/usr/local/nagios/libexec/$ARG1$

{jcomments on}
  • Zugriffe: 440

Installation von Apache2

Vorbereitung

Apache als Webserver setzt auf der Grundinstallation auf. Zunächst sollte geprüft werden, ob User und Group „www-data“ vorhanden sind.

Installation

Danach installiert man einfach:

apt-get install apache2

Danach kann man die Installation testen, indem man die IP der Himbeere in einen Browser eingibt. Es erscheint sofort die klassische „It works!“ Meldung.

So einfach soll das sein????

Weitere Installation, damit alles da ist, was der mensch braucht

PHP5, mod_perl2 undsoweiter … die installationsbefehle sind bewusst einzeln geschrieben, um die Übersichtlichkeit zu erhöhen.

apt-get install php5 
apt-get install libapache2-mod-php5 
apt-get install libapache2-mod-perl2 
apt-get install php5 php5-cli 
apt-get install php5-common 
apt-get install php5-curl 
apt-get install php5-dev 
apt-get install php5-gd 
apt-get install php5-imap 
apt-get install php5-ldap 
apt-get install php5-mhash 
apt-get install php5-mysql 
apt-get install php5-odbc 
apt-get install php-pear 
apt-get install php-apc
###
# Oder der Einfachheit halber alles zusammen
# apt-get install php5 libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-ldap php5-mhash php5-mysql php5-odbc php-pear php-apc 

{jcomments on}
  • Zugriffe: 385

HP2840 und die Himbeere

HP hat mit dem Multifunktionsdrucker HP 2840 eigentlich ein ziemlich geniales Gerät hergestellt. Leider wurde die Treiberentwicklung mit Windows XP eingestellt, was zur Folge hatte, dass die Windows 7 Nutzer im Internet laut lamentierten und letztlich die Geräte bei Ebay und Co. verschleuderten, weil sie ihn nur noch als Drucker und nicht als Scanner und Fax nutzen konnten.

Mit meinem Linux-Rechner kam ich dahinter, dass es mit dem HPLIP-Paket möglich ist, den Drucker ganz hervorragend zu benutzen. Einerseits kann man mit Simple-Scan und und XSANE Scannen was das Zeug hält und zweitens kann man mit ein paar Shell-Programmen sogar die „Scan-To-Folder Funktion nutzen.

Mit einem Windws X11 Server wie „XMING“ kann man dann die Scan-Programme sogar vom Windows-Rechner aus nutzen, was die Sache für Windows-Anwender interessant macht.

Die Aufgabenstellung

Mein Kumpel (eher kein Computerspezialist) wollte so einen Drucker, weil er ihn bei mir gesehen hatte. Und weil er gleichzeitig auch den Wunsch nach einem kleinen, billigen Dateiserver für Backup-Zwecke gesucht hatte, sollte eine kleine, schnuckelige Lösung her. Nämlich eine Raspberry Pi mit externer 1TB Platte und Samba als Server. Zusätzlich ersetzt HPLIP auf der Raspberry PI die fehlenden Windows-Druckertreiber zum Scannen. Faxen war in diesem Zusammenhang nicht gefragt, ist aber auch möglich. Vielleicht gehe ich später mal darauf ein.

Im Folgenden gehe ich auf Samba nicht im Detail ein, das ist ein langes Thema und wird andernorts besser behandelt. Ich erspare mir auch Ausführungen, wie man die Grundinstallation auf einer PI hin bekommt. Da gibt es wundervolle Step-by-Step Anleitungen wie man Raspbian, das Debian Wheezy Image, sauber installiert.

Konfiguration

Samba

Zunächst muss Samba installiert sein. Ich verwende im Folgenden noch Samba 3, weil ich in Samba 4 noch nicht fit bin und Samba 3 weiß Gott für ein Himbeerchen ausreicht.

Dazu installiert man:

apt-get install samba smbclient

Bei Samba3 gibt es ein nettes webbasiertes Tool zum Konfigurieren, nämlich „Swat“. Um dieses nutzen zu können, muss Inetd (man kann natürlich auch xinetd nehmen) installiert sein und in /etc/inetd.conf diese Zeile eingefügt werden:

#:OTHER: Other services
swat            stream  tcp     nowait.400      root    /usr/sbin/tcpd  /usr/sbin/swat

darüber hinaus muss in /etc/serivices diese Zeile stehen:

swat            901/tcp                         #SWAT

Nun kann man in Samba sehr bequem Shares anlegen und alles mögliche Verwalten. Benutzer anlegen kann man mit „smbpasswd -a user

Zugriff auf die PI

Für die Dienstprogramme von HP-LIP braucht man eine Grafikkonsole, und ich will die PI nicht an einem Fernsehgerät betreiben. Dafür kann man natürlich VNC benutzen das wird bereits an vielen Stellen im Internet erklärt. Zum Beispiel hier http://jankarres.de/2012/08/raspberry-pi-vnc-server-installieren/

Ich verwende gern die Windows-Remoteconsole, dafür muss xrdp installiert sein:

apt-get install xrdp

Um mit XMING Programme starten zu können muss XDM installiert sein. Dass man dafür auf dem Windows-Rechner XMING selbst braucht, setze ich mal voraus.

apt-get install xdm

HPLIP

Zuerst müssen einige Pakete installiert werden:

apt-get install hplip hplip-gui xsane simple-scan

Nun muss der Drucker eingerichtet werden, dazu benötigt man die oben beschriebene Grafik-Console.

mit „HP-Setup“ wird der Drucker hinzugefügt. Nun kann bereits gedruckt werden wie die Testseite beweist. Mit der HP-toolbox gelingen auch bereits scans.

Ebenfalls kann man mit „simple-scan“ oder gar „xsane“ scannen. Wenn man die Scans in der bereits eingerichteten Sambashare „SCANS“ abspeichert, kann man sie von den angeschlossenen Windows-Rechnern auch benutzen und weiterverarbeiten.

Nun wird auf den Windows-Rechnern XMING so konfiguriert dass man die Programme „simple-scan“, „Xsane“ und die „HP-toolbox“ von dort aus bedienen kann.

 hier fehlen noch ein paar anschauliches Screenshots.

Scanto-Destination

Ich finde es ein Super-Feature, dass man am Drucker mit der "Scannen in"-Taste auswählen kann, was und wohin man scannen möchte. Das ging bis Windows XP mit dem umfänglichen HP-Treiberpaket. Unter Windows 7 funktioniert nichts davon.

Der geniale Kollege Dag Rende hat auf seiner Homepage wunderschön dokumentiert, wie er dahintergekommen ist, die "Scannen-In" Funktion unter Linux nachzubilden. Im Folgenden zeige ich nicht den ganzen Entwicklungsweg, das kann Dag besser, sondern nur wie ich es auf der Pi implementiert habe.

Das Shellscript scanloop läuft als daemon ständig und wird auch automatisch gestartet. Es prüft zuerst, ob mit der Scannen-In-Taste eines der gleichnamigen Scan-Scripts ausgewählt wurde und führt es aus, wenn dem so ist. Dann wird geprüft, ob die Einträge in der Scannen-In-Liste den Namen der vorhandenen Scan-Scripts entsprechen und lädt sie bei Bedarf in den Drucker. Dazu wird das Script scanto-Destination aufgerufen. Die IP-Adresse muss natürlich angepasst werden.

Datei /usr/local/scripts/scanloop

#!/bin/bash
cd "`dirname $0`"
set -o pipefail
while true; do
        # if scan-to button pressed - run the command corresponding to the
        # destination name
        name=`wget -q -O - http://192.168.100.30/hp/device/notifications.xml \
                        | egrep -o '<ScanToDeviceDisplay>(.*)</ScanToDeviceDisplay>' \
                        | sed -e 's/<ScanToDeviceDisplay>//' \
                        | sed -e 's/<\/ScanToDeviceDisplay>//' \
                        | sed -e 's/.*://'` && {
                if [ "$name" != "" ]; then
                        if [ -x "/usr/local/scripts/scan-command/$name" ]; then
                                (cd /Data/SCANS; "/usr/local/scripts/scan-command/$name" >/dev/null 2>&1)
                                chmod a+r /Data/SCANS/*
                        fi
                fi
        }

        # update scan-to destinations in printer if necessary
        /usr/local/scripts/scanto_destination -l | sed  's/.*://' >/tmp/printer-dests && ls /usr/local/scripts/scan-command >/tmp/command-d
        diff /tmp/printer-dests /tmp/command-dests | egrep '<|>' | sed 's#<#/usr/local/scripts/scanto_destination -d#;s#>#./scanto_destinat

        sleep 5

done

Datei /usr/local/scripts/scanto_destination.sh

#!/bin/bash
# command to maintain the scan-to destination list in the HP Color LaserJet
# 2840 printer
adr="192.168.100.30"

if [ "$1" == "-a" ]; then
        name=$2
        [[ ! "$name" =~ ":" ]]&& name="$HOSTNAME:$name"
        postdata="AddScanToDest_1=127.0.0.1-$HOSTNAME%5e${name/:/%3a}%5eDestFolder"
        echo $postdata
        wget -q -O - --post-data="$postdata" http://$adr/hp/device/set_config.html
elif [ "$1" == "-d" ]; then
        name=$2
        [[ ! "$name" =~ ":" ]]&& name="$HOSTNAME:$name"
        postdata="RemoveScanToDest_1=${name/:/%3a}"
        wget -q -O - --post-data="$postdata" http://$adr/hp/device/set_config.html
elif [ "$1" == "-l" ]; then
        wget -q -O - http://$adr/hp/device/info_scanto_destinations.xml | sed -n '/<DeviceDisplay>/s/<\/*DeviceDisplay>//gp'
else
        echo 'usage: scanto_destination -l -a <destname> -d <destname> for listing adding and deleting destinations'
fi

Schließlich zeige ich noch zwei Beispiele für Scan-Scripts. Diese liegen bei mir im Verzeichnis /usr/local/scripts/scan-command 

Pic300

Das erste Script Scannt ein Bild in 300 Pix/inch von der Glasplatte

cd /Data/SCANS/
now=$(date +"%Y-%d-%m_%H-%M-%S")
file="/Data/SCANS/scan_$now"
# hp-scan -m 'color' -r300 -x 'jpeg' -s 'file'
scanimage --format=tiff --resolution 300 > $file
chown pi:users $file
chmod ugo+rw $file

Auto-PDF

Dieses Script ist schon ein bisschen umfänglicher: Es liest ein mehrseitiges Dokument aus dem Sheetfeeder und macht ein PDF-Dokument daraus. Abgelegt wird es, wie alle Scans, in /Data/SCANS, dieses Verzeichnis wird per Samba freigegeben.

mkdir /tmp/workdir
cd /tmp/workdir
now=$(date +"%Y-%d-%m_%H-%M-%S")
outname="/home/linke/Dropbox/SCANS/scan_$now"
echo "##### Scanning #####"
scanimage -y 279.4 -x 215.9 --batch --format=tiff --resolution 300 --source ADF
echo "##### Converting to PDF #####"
tiffcp -c lzw out*.tif output.tif
tiff2pdf output.tif > $outname.pdf
echo "##### Cleaning Up #####"
rm /tmp/workdir/*
echo "##### Done #####"

Und weiter?

Natürlich kann man sich jetzt alles mögliche dazu basteln, man muss es nur in ein Script packen können. Beispielsweise haben ich damit Experimentiert, die Scans per Email zu verschicken, oder Dokumente per OCR in Klartext zu übertragen. Alles mögliche geht und wir sind da noch längst nicht am Ende!

Happy scanning!

{jcomments on}

  • Zugriffe: 453