speckthehut
Hacker
Hallo!
Da andere Anleitungen etwas veraltet sind und auch nicht mehr funktionieren da insbesondere kompiler wie SDCC nicht mehr Aktuell sind, hier mal eine Aktuelle und funktionsfähige Anleitung.
Leider bin ich nicht gerade ein guter Schreiberling, doch hoffe ich damit eine Hilfestellung geben zu können.
Ich gehe hier nicht ganz darauf ein wie man sein DPF hacken kann, falls noch nicht geschehen. Dafür gibt es hier und anderswo sehr gute Anleitungen!
Das ganze funktioniert auch mit Raspbian für den Raspberry Pi welches schon länger auf Debian Wheezy basiert.
Als erstes Installieren wir uns die nötigen Biliotheken und kompiler mit:
Wenn das Erledigt ist laden wir uns den DPF Hack für das Display herunter, das ist auch nötig wenn das Display schon gehackt wurde!
Der make Befehl wird den DPF HAck in recht kurzer Zeit kompilieren.
Jetzt müssen wir die Datei "build-dpf-lcd4linux.sh" anpassen mit:
Dort die diese Zeile suchen:
./configure --with-drivers=DPF
und Ersetzen mit:
./configure --with-drivers='DPF' --with-plugins='all,!dbus,!mpris_dbus'
Jetzt kompilieren wir uns das LCD4Linux mit der Biblithek für das DPF (AX206)
Wenn das Erledigt ist, geben wir ein
Wenn bis hier keine Fehlermeldungen aufgetreten sind ist alles in Butter!
Es fehlt aber noch die configdatei für LCD4Linux, die können wir einfach erstellen mit:
# nano /etc/lcd4linux.conf
Dort kommt das "Design" für dein DPF rein.
Hier eine sehr gute Vorlage die man sich seinen Bedürfnissen selbst ganz leicht anpassen kann.
Einfach per Copy and Paste einfügen.
Mit STRG+O Abspeichern und STRG+X Beenden.
Jetzt braucht die LCD4Linux.conf noch die richtigen Rechte damit die auch funktioniert
Jetzt ist es natürlich noch Wichtig das unsere OSCAM Version mit LCD unterstützung hergestellt wird (falls nicht schon geschehen).
Ich gehe mal davon aus das IPC auf dem Server Installiert ist incl. einer schon laufenden OSCAM Version.
Nun, das war es dann soweit. Du kannst die ganze Sache jetzt starten in dem die einfach nur "lcd4linux" (ohne "") in die Konsole eingibst.
Sofort sollte im DPF was Erscheinen.
##################################################################################################
Der User al-x83 hat sich wie im Diskussionsthread zu sehen ist die Mühe gemacht und ein Script incl. vieler verbesserungen erstellt.
(Version 0.05)
##################################################################################################
Und noch etwas in eigener Sache... Falls LCD4Linux euch auch den syslog Vollmüllt, dem ist ganz einfach mit dem hier Abhilfe zu schaffen:
Dadurch wird der ganze SPAM nicht mehr gespeichert sondern in den Digitalen Nirwana verschoben! Natürlich ist es auch möglich den Schrott schreiben zu lassen, dafür muss aus /dev/null nur ein Pfad incl. Logdatei der Wahl erstellt und eingetragen werden. Dann aber bitte nicht vergessen logrotate die Logdatei bekannt zu machen!
Zum Diskussionsthread geht es hier entlang
Da andere Anleitungen etwas veraltet sind und auch nicht mehr funktionieren da insbesondere kompiler wie SDCC nicht mehr Aktuell sind, hier mal eine Aktuelle und funktionsfähige Anleitung.
Leider bin ich nicht gerade ein guter Schreiberling, doch hoffe ich damit eine Hilfestellung geben zu können.
Ich gehe hier nicht ganz darauf ein wie man sein DPF hacken kann, falls noch nicht geschehen. Dafür gibt es hier und anderswo sehr gute Anleitungen!
Das ganze funktioniert auch mit Raspbian für den Raspberry Pi welches schon länger auf Debian Wheezy basiert.
Als erstes Installieren wir uns die nötigen Biliotheken und kompiler mit:
# apt-get install cc1111 libtool automake1.10 autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-1.0-dev subversion libgd2-noxpm-dev libgd2-noxpm
Wenn das Erledigt ist laden wir uns den DPF Hack für das Display herunter, das ist auch nötig wenn das Display schon gehackt wurde!
# wget
Entpacken mit: # tar -xvzf dpfhack-0.1alpha.tgz
# cd dpf/src
# make
Sie müssen registriert sein, um Links zu sehen.
Entpacken mit: # tar -xvzf dpfhack-0.1alpha.tgz
# cd dpf/src
# make
Der make Befehl wird den DPF HAck in recht kurzer Zeit kompilieren.
# cd ..
# cd .. (Ja, zweimal)
# wget
# cd .. (Ja, zweimal)
# wget
Sie müssen registriert sein, um Links zu sehen.
# tar -xvzf dpf-lcd4linux.tgz
# cd dpf
# cd dpf
Jetzt müssen wir die Datei "build-dpf-lcd4linux.sh" anpassen mit:
# nano build-dpf-lcd4linux.sh
Dort die diese Zeile suchen:
./configure --with-drivers=DPF
und Ersetzen mit:
./configure --with-drivers='DPF' --with-plugins='all,!dbus,!mpris_dbus'
Jetzt kompilieren wir uns das LCD4Linux mit der Biblithek für das DPF (AX206)
# ./build-dpf-lcd4linux.sh ../src/dpflib/
Wenn das Erledigt ist, geben wir ein
# cd lcd4linux
# sudo make install
# sudo make install
Wenn bis hier keine Fehlermeldungen aufgetreten sind ist alles in Butter!
Es fehlt aber noch die configdatei für LCD4Linux, die können wir einfach erstellen mit:
# nano /etc/lcd4linux.conf
Dort kommt das "Design" für dein DPF rein.
Hier eine sehr gute Vorlage die man sich seinen Bedürfnissen selbst ganz leicht anpassen kann.
Einfach per Copy and Paste einfügen.
Code:
Display 'DPF'
Layout 'mylayout'
Variables {
time_minute 60000
time_second 1000
time_tick second
time_faster 0.5
color_black '000000'
color_white 'ffffff'
color_blue '0000FF'
color_green '008000'
color_red '800000'
color_transparent 'ffffff00'
color_lighter 'ffffff80'
color_darker '00000080'
color_fg 'ffffff'
color_bg '00000044'
color_bar_fg 'ffffff'
color_bar_bg '00000044'
color_bar1 '5f5fff'
color_bar2 'ff5f5f'
width_quarter 12
width_full 53
width_half 24
width_idle 22
width_logo 39
tablestart 6
}
Display dpf {
driver 'DPF'
port 'dev/sg0'
font '6x8'
foreground color_white
background color_blue
basecolor color_black
}
Display dpf {
driver 'DPF'
port 'dev/sg0'
font '6x8'
foreground color_white
background color_blue
basecolor color_black
}
Widget OVersion {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 1)
width width_full
align 'L'
update time_minute
style bold
background color_blue
}
Widget ORevision{
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 2)
width width_full
align 'L'
update time_minute
style bold
background color_blue
}
Widget CLOCK {
class 'Text'
expression strftime ('%H:%M:%S', time())
prefix ' '
width width_full
align 'L'
update time_second
style bold
background color_green
foreground color_white
}
Widget DATE {
class 'Text'
expression strftime ('%d.%m.%Y', time())
width width_full
align 'L'
update time_second
style bold
background color_red
foreground color_white
}
Widget RAM {
class 'Text'
expression (floor(meminfo('MemFree')*10/1024)/10).' / '.(floor(meminfo('MemTotal')*10/1024)/10)
prefix 'RAM'
postfix ' MB'
width width_half
#precision 0
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget DF {
class 'Text'
expression statfs('/root', 'bavail')*statfs('/root', 'bsize')/1024/1024/1024
prefix 'USBStick '
postfix ' GB frei'
precision 2
width width_half
align 'R'
update time_second * 10
Background color_transparent
Foreground color_fg
}
Widget Busy {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix 'Busy'
postfix '%'
width width_half
precision 1
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget BusyBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Load {
class 'Text'
expression loadavg(1)
prefix 'Load'
postfix loadavg(1)>1.0?'!':' '
width width_half
precision 1
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget LoadBar {
class 'Bar'
expression loadavg(1)
max 5.0
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Eth0 {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024/1024
prefix 'eth0'
postfix ' MB/s'
width width_half
precision 3
align 'R'
update time_second
Background color_transparent
Foreground color_fg
}
Widget Eth0Bar {
class 'Bar'
expression netdev('eth0', 'Rx_bytes', 500)
expression2 netdev('eth0', 'Tx_bytes', 500)
length width_half
direction 'E'
update time_second * time_faster
Background color_transparent
Foreground color_bar_fg
BarColor0 color_bar1
BarColor1 color_bar2
}
Widget Eth0Trf {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024
prefix 'Traffic eth0'
postfix ' MB'
width width_half
precision 3
align 'R'
update tick
Background color_transparent
#Background color_bg
Foreground color_fg
}
Widget OTotals {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 4)
prefix ' Server Totals: '
width width_full
align 'L'
update time_minute
style 'bold'
Background color_red
Foreground color_white
}
Widget Ouptime {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', 3)
prefix 'Oscam '
width width_full
align 'L'
update 10000
foreground color_white
background color_transparent
}
####################### Oscam Table #####################
Widget OscamRow00 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow01 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow02 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow03 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow04 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow05 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow06 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow07 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow08 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow09 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow10 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow11 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow12 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow13 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow14 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow15 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow16 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow17 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow18 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow19 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19),'T') == 0 ? color_blue : color_transparent
}
Widget OscamRow20 {
class 'Text'
expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20)
width width_full
align 'L'
update 10000
Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20),'T') == 0 ? color_blue : color_transparent
}
Layout mylayout {
#----------------------------------------<start topline
Row01.Col01 'OVersion'
Row01.Col29 'ORevision'
Row01.Col44 'CLOCK'
#----------------------------------------<end topline
#----------------------------------------<start header
Row03.Col02 'RAM'
Row03.Col29 'DF'
Row04.Col02 'Busy'
Row05.Col02 'BusyBar'
Row06.Col02 'Load'
Row07.Col02 'LoadBar'
Row04.Col29 'Eth0'
Row05.Col29 'Eth0Bar'
Row06.Col29 'Eth0Trf'
Row07.Col29 'Ouptime'
#----------------------------------------<end header
ROW09.Col01 'OscamRow00'
ROW10.Col01 'OscamRow01'
ROW11.Col01 'OscamRow02'
ROW12.Col01 'OscamRow03'
ROW13.Col01 'OscamRow04'
ROW14.Col01 'OscamRow05'
ROW15.Col01 'OscamRow06'
ROW16.Col01 'OscamRow07'
ROW17.Col01 'OscamRow08'
ROW18.Col01 'OscamRow09'
ROW19.Col01 'OscamRow10'
ROW20.Col01 'OscamRow11'
ROW21.Col01 'OscamRow12'
ROW22.Col01 'OscamRow13'
ROW23.Col01 'OscamRow14'
ROW24.Col01 'OscamRow15'
ROW25.Col01 'OscamRow16'
ROW26.Col01 'OscamRow17'
ROW27.Col01 'OscamRow18'
ROW28.Col01 'OscamRow19'
ROW29.Col01 'OscamRow20'
#----------------------------------------<start lastline
ROW30.Col01 'OTotals'
ROW30.Col43 'DATE'
#----------------------------------------<end lastline
Layer 2 {
X1.Y1 'IMAGE'
}
}
Widget IMAGE2 {
class 'Image'
file '/home/vpn/box.png'
update 10000
reload 1
visible 1
inverted 0
}
Mit STRG+O Abspeichern und STRG+X Beenden.
Jetzt braucht die LCD4Linux.conf noch die richtigen Rechte damit die auch funktioniert
# chown root:root /etc/lcd4linux.conf
# chmod 700 /etc/lcd4linux.conf
# chmod 700 /etc/lcd4linux.conf
Jetzt ist es natürlich noch Wichtig das unsere OSCAM Version mit LCD unterstützung hergestellt wird (falls nicht schon geschehen).
Ich gehe mal davon aus das IPC auf dem Server Installiert ist incl. einer schon laufenden OSCAM Version.
Wir geben ein:
# o compile
Jetzt werden ev. erst einmal einige Programme Installiert die IPC benötigt, ist das Erledigt fragt IPC welche Version Installiert werden solle, das bleibt Dir überlassen. Alles weitere ist dann selbst Erklärend.
Nur wichtig ist das man im Menü die LCD Untersützung mit auswählt!
Läuft OSCAM dann wieder nach dem langwierigen kompilieren muss in der OSCAM.conf noch folgendes eingetragen werden:
[lcd]
enablelcd = 1
lcd_hideidle = 0
lcd_writeintervall = 10
Jetzt OSCAM Neustarten.
# o compile
Jetzt werden ev. erst einmal einige Programme Installiert die IPC benötigt, ist das Erledigt fragt IPC welche Version Installiert werden solle, das bleibt Dir überlassen. Alles weitere ist dann selbst Erklärend.
Nur wichtig ist das man im Menü die LCD Untersützung mit auswählt!
Läuft OSCAM dann wieder nach dem langwierigen kompilieren muss in der OSCAM.conf noch folgendes eingetragen werden:
[lcd]
enablelcd = 1
lcd_hideidle = 0
lcd_writeintervall = 10
Jetzt OSCAM Neustarten.
Nun, das war es dann soweit. Du kannst die ganze Sache jetzt starten in dem die einfach nur "lcd4linux" (ohne "") in die Konsole eingibst.
Sofort sollte im DPF was Erscheinen.
##################################################################################################
Der User al-x83 hat sich wie im Diskussionsthread zu sehen ist die Mühe gemacht und ein Script incl. vieler verbesserungen erstellt.
(Version 0.05)
Hab mein Script nochmals komplett überabreitet und erweitert.
Das Script prüft die verwendete Linuxdistribution. Unterstützt werden aber nur Debian Squeeze und Wheezy, da es zu viele Ubuntu-Versionen gibt, die noch mit Paketen unterstützt werden.
Zusätzlich werden auch die Symlinks für die LCD - Kurzbefehle und der Eintrag zum stoppen und starten im Cron angelegt.
1. Zur Vorbereitung muss noch folgendes Paket installiert werden:
Code:apt-get install dos2unix
2. Danach erzeugen wir mit nano pearl.sh die Datei für das Script und fügen folgenden Inhalt ein:
Code:#!/bin/bash # Script zum Kompilieren und Einrichten eines Pearl-Displays für OScam # V 0.05 # # Changelog: # # V 0.01: Grundsätzlich nur zur Anwendung unter Debian 7 geeignet # V 0.02: Erkennung ob Debian 6 oder 7. Abbruch bei 6 # V 0.03: Unterstützung für Debian Squeeze hinzugefügt (kein Abbruch mehr) # V 0.04: Erkennung von Ubuntu und Debian 5 (Lenny) hinzugefügt --> Abbruch # V 0.05: Kurzbefehle LCD START|STOP|RESTART sowie täglichen Neustart durch Crontab hinzugefügt # # © Al-x83, IPC-PEBKAC # # clear #Installieren der nötigen Pakete: echo "===============================================================================" echo "" echo -n "Prüfe aktuell verfügbare Pakete.." echo "" echo "" echo "===============================================================================" echo "" apt-get update >/dev/null clear #Pruefe Argumente [ "$1" = "32" ] && SYSBIT="32" [ "$1" = "64" ] && SYSBIT="64" #Linux Version? (Debian/Ubuntu) if [ -f /usr/bin/lsb_release ]; then LSB=$(/usr/bin/lsb_release -d) _LINUX=$(echo $LSB|cut -d":" -f2|awk {'print $1'}) if [ "$_LINUX" = "Debian" ]; then LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $3'}) elif [ "$_LINUX" = "Ubuntu" ]; then LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $2'}) fi fi if [ -z "$LINUXVERSION" ]; then [ -f /etc/debian_version ] && LINUXVERSION=$(cat /etc/debian_version) fi #Debian Wheezy if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) == 7 ]; then echo "=================================================================================" echo "" echo -n "Debian $LINUXVERSION (Wheezy) erkannt. Pakete werden installiert..." echo "" echo "" echo "=================================================================================" echo "" sleep 5 apt-get install cc1111 libtool automake1.10 autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-1.0-dev subversion libgd2-noxpm-dev libgd2-noxpm -y clear fi if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) == 6 ]; then #Debian Squeeze echo "=================================================================================" echo "" echo -n "Debian $LINUXVERSION (Squeeze) erkannt. Allgemeine Pakete werden installiert..." echo "" echo "" echo "=================================================================================" echo "" sleep 5 apt-get install libtool automake1.10 autoconf zlib1g-dev libssl-dev libc6 libusb-dev libibus-dev subversion libgd2-noxpm-dev libgd2-noxpm -y clear #pruefe System ob 32 oder 64 bit if [ -z "$SYSBIT" ]; then if [ `uname -m` = 'x86_64' ]; then #x64: echo "=================================================================================" echo "" echo -n "Debian $LINUXVERSION (Squeeze) amd64 erkannt. Architekturspezifische Pakete werden installiert..." echo "" echo "" echo "=================================================================================" echo "" wget http://ftp.de.debian.org/debian/pool/main/c/cc1111/cc1111_2.9.0-2_amd64.deb dpkg -i cc1111_2.9.0-2_amd64.deb cc1111_2.9.0-2_amd64.deb sleep 5 clear else #x86 echo "=================================================================================" echo "" echo -n "Debian $LINUXVERSION (Squeeze) i386 erkannt. Architekturspezifische Pakete werden installiert..." echo "" echo "" echo "=================================================================================" echo "" wget http://ftp.de.debian.org/debian/pool/main/c/cc1111/cc1111_2.9.0-2_i386.deb dpkg -i cc1111_2.9.0-2_i386.deb rm cc1111_2.9.0-2_i386.deb sleep 5 clear fi fi fi #Ubuntu if [ "$_LINUX" = "Ubuntu" ]; then echo "=================================================================================" echo "" echo -n "Ubuntu $LINUXVERSION erkannt. " echo "" echo -n "Aufgrund von ständig neuen Versionen mit varierenden Paketnamen NICHT unterstützt" echo "" echo "" echo "=================================================================================" echo "" exit 0 fi #Lenny if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) == 5 ]; then echo "=================================================================================" echo "" echo -n "Debian $LINUXVERSION Lenny erkannt. " echo "" echo -n "Definitiv zu alt und dehalb NICHT unterstützt" echo "" echo "" echo "=================================================================================" echo "" exit 0 fi #Laden und installieren des Display-Hacks: echo "=================================================================================" echo "" echo -n "Laden und installieren des Display-Hacks.." echo "" echo "" echo "=================================================================================" echo "" wget http://tech.section5.ch/files/dpfhack-0.1alpha.tgz tar -xvzf dpfhack-0.1alpha.tgz dpfhack-0.1alpha.tgz cd dpf/src make clear #Laden und entpacken von LCD4LINUX: echo "=================================================================================" echo "" echo -n "Laden und entpacken von LCD4LINUX.." echo "" echo "" echo "=================================================================================" echo "" cd .. cd .. wget http://tech.section5.ch/files/dpf-lcd4linux.tgz tar -xvzf dpf-lcd4linux.tgz rm dpf-lcd4linux.tgz cd dpf #Anpassen von build-dpf-lcd4linux.sh: echo "s./configure --with-drivers=DPF./configure --with-drivers='DPF' --with-plugins='all,!dbus,!mpris_dbus'.g" > ~/.sedfile cp build-dpf-lcd4linux.sh build-dpf-lcd4linux.sh.bak sed -f ~/.sedfile build-dpf-lcd4linux.sh.bak > build-dpf-lcd4linux.sh rm build-dpf-lcd4linux.sh.bak rm ~/.sedfile clear #Kompilieren von LCD4LINUX echo "=================================================================================" echo "" echo -n "Kompilieren von LCD4LINUX.." echo "" echo "" echo "=================================================================================" echo "" ./build-dpf-lcd4linux.sh ../src/dpflib/ cd lcd4linux sudo make install clear #Config Datei erstellen: echo "=================================================================================" echo "" echo -n "/etc/lcd4linux.conf erstellen.." echo "" echo "" echo "=================================================================================" echo "" cat << EOF > /etc/lcd4linux.conf Display 'DPF' Layout 'mylayout' Variables { time_minute 60000 time_second 1000 time_tick second time_faster 0.5 color_black '000000' color_white 'ffffff' color_blue '0000FF' color_green '008000' color_red '800000' color_transparent 'ffffff00' color_lighter 'ffffff80' color_darker '00000080' color_fg 'ffffff' color_bg '00000044' color_bar_fg 'ffffff' color_bar_bg '00000044' color_bar1 '5f5fff' color_bar2 'ff5f5f' width_quarter 12 width_full 53 width_half 24 width_idle 22 width_logo 39 tablestart 6 } Display dpf { driver 'DPF' port 'dev/sg0' font '6x8' foreground color_white background color_blue basecolor color_black } Display dpf { driver 'DPF' port 'dev/sg0' font '6x8' foreground color_white background color_blue basecolor color_black } Widget OVersion { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', 1) width width_full align 'L' update time_minute style bold background color_blue } Widget ORevision{ class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', 2) width width_full align 'L' update time_minute style bold background color_blue } Widget CLOCK { class 'Text' expression strftime ('%H:%M:%S', time()) prefix ' ' width width_full align 'L' update time_second style bold background color_green foreground color_white } Widget DATE { class 'Text' expression strftime ('%d.%m.%Y', time()) width width_full align 'L' update time_second style bold background color_red foreground color_white } Widget RAM { class 'Text' expression (floor(meminfo('MemFree')*10/1024)/10).' / '.(floor(meminfo('MemTotal')*10/1024)/10) prefix 'RAM' postfix ' MB' width width_half #precision 0 align 'R' update time_second Background color_transparent Foreground color_fg } Widget DF { class 'Text' expression statfs('/root', 'bavail')*statfs('/root', 'bsize')/1024/1024/1024 prefix 'USBStick ' postfix ' GB frei' precision 2 width width_half align 'R' update time_second * 10 Background color_transparent Foreground color_fg } Widget Busy { class 'Text' expression proc_stat::cpu('busy', 500) prefix 'Busy' postfix '%' width width_half precision 1 align 'R' update time_second Background color_transparent Foreground color_fg } Widget BusyBar { class 'Bar' expression proc_stat::cpu('busy', 500) expression2 proc_stat::cpu('system', 500) length width_half direction 'E' update time_second * time_faster Background color_transparent Foreground color_bar_fg BarColor0 color_bar1 BarColor1 color_bar2 } Widget Load { class 'Text' expression loadavg(1) prefix 'Load' postfix loadavg(1)>1.0?'!':' ' width width_half precision 1 align 'R' update time_second Background color_transparent Foreground color_fg } Widget LoadBar { class 'Bar' expression loadavg(1) max 5.0 length width_half direction 'E' update time_second * time_faster Background color_transparent Foreground color_bar_fg BarColor0 color_bar1 BarColor1 color_bar2 } Widget Eth0 { class 'Text' expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024/1024 prefix 'eth0' postfix ' MB/s' width width_half precision 3 align 'R' update time_second Background color_transparent Foreground color_fg } Widget Eth0Bar { class 'Bar' expression netdev('eth0', 'Rx_bytes', 500) expression2 netdev('eth0', 'Tx_bytes', 500) length width_half direction 'E' update time_second * time_faster Background color_transparent Foreground color_bar_fg BarColor0 color_bar1 BarColor1 color_bar2 } Widget Eth0Trf { class 'Text' expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024 prefix 'Traffic eth0' postfix ' MB' width width_half precision 3 align 'R' update tick Background color_transparent #Background color_bg Foreground color_fg } Widget OTotals { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', 4) prefix ' Server Totals: ' width width_full align 'L' update time_minute style 'bold' Background color_red Foreground color_white } Widget Ouptime { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', 3) prefix 'Oscam ' width width_full align 'L' update 10000 foreground color_white background color_transparent } ####################### Oscam Table ##################### Widget OscamRow00 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart),'T') == 0 ? color_blue : color_transparent } Widget OscamRow01 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 1),'T') == 0 ? color_blue : color_transparent } Widget OscamRow02 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 2),'T') == 0 ? color_blue : color_transparent } Widget OscamRow03 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 3),'T') == 0 ? color_blue : color_transparent } Widget OscamRow04 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 4),'T') == 0 ? color_blue : color_transparent } Widget OscamRow05 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 5),'T') == 0 ? color_blue : color_transparent } Widget OscamRow06 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 6),'T') == 0 ? color_blue : color_transparent } Widget OscamRow07 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 7),'T') == 0 ? color_blue : color_transparent } Widget OscamRow08 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 8),'T') == 0 ? color_blue : color_transparent } Widget OscamRow09 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 9),'T') == 0 ? color_blue : color_transparent } Widget OscamRow10 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 10),'T') == 0 ? color_blue : color_transparent } Widget OscamRow11 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 11),'T') == 0 ? color_blue : color_transparent } Widget OscamRow12 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 12),'T') == 0 ? color_blue : color_transparent } Widget OscamRow13 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 13),'T') == 0 ? color_blue : color_transparent } Widget OscamRow14 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 14),'T') == 0 ? color_blue : color_transparent } Widget OscamRow15 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 15),'T') == 0 ? color_blue : color_transparent } Widget OscamRow16 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 16),'T') == 0 ? color_blue : color_transparent } Widget OscamRow17 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 17),'T') == 0 ? color_blue : color_transparent } Widget OscamRow18 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 18),'T') == 0 ? color_blue : color_transparent } Widget OscamRow19 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 19),'T') == 0 ? color_blue : color_transparent } Widget OscamRow20 { class 'Text' expression file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20) width width_full align 'L' update 10000 Background strstr(file::readline('/tmp/.oscam/oscam.lcd', tablestart + 20),'T') == 0 ? color_blue : color_transparent } Layout mylayout { #----------------------------------------<start topline Row01.Col01 'OVersion' Row01.Col29 'ORevision' Row01.Col44 'CLOCK' #----------------------------------------<end topline #----------------------------------------<start header Row03.Col02 'RAM' Row03.Col29 'DF' Row04.Col02 'Busy' Row05.Col02 'BusyBar' Row06.Col02 'Load' Row07.Col02 'LoadBar' Row04.Col29 'Eth0' Row05.Col29 'Eth0Bar' Row06.Col29 'Eth0Trf' Row07.Col29 'Ouptime' #----------------------------------------<end header ROW09.Col01 'OscamRow00' ROW10.Col01 'OscamRow01' ROW11.Col01 'OscamRow02' ROW12.Col01 'OscamRow03' ROW13.Col01 'OscamRow04' ROW14.Col01 'OscamRow05' ROW15.Col01 'OscamRow06' ROW16.Col01 'OscamRow07' ROW17.Col01 'OscamRow08' ROW18.Col01 'OscamRow09' ROW19.Col01 'OscamRow10' ROW20.Col01 'OscamRow11' ROW21.Col01 'OscamRow12' ROW22.Col01 'OscamRow13' ROW23.Col01 'OscamRow14' ROW24.Col01 'OscamRow15' ROW25.Col01 'OscamRow16' ROW26.Col01 'OscamRow17' ROW27.Col01 'OscamRow18' ROW28.Col01 'OscamRow19' ROW29.Col01 'OscamRow20' #----------------------------------------<start lastline ROW30.Col01 'OTotals' ROW30.Col43 'DATE' #----------------------------------------<end lastline Layer 2 { X1.Y1 'IMAGE' } } Widget IMAGE2 { class 'Image' file '/home/vpn/box.png' update 10000 reload 1 visible 1 inverted 0 } EOF #Rechte setzen: chown root:root /etc/lcd4linux.conf chmod 700 /etc/lcd4linux.conf #Hinzufügen des Startscript: cat << EOF > /var/emu/script/lcd4linux.sh #!/bin/bash # LCD4LINUX-Script # # V 0.02 # # # © Al-x83, IPC-PEBKAC # # # LCD4LINUX-Start start_lcd4linux () { sleep 5 echo "LCD4linux gestartet" lcd4linux -q } # LCD4LINUX-Stop stop_lcd4linux () { pkill lcd4linux sleep 5 PID="$(pgrep -x lcd4linux)" if [[ ! -n $PID ]] ; then echo "LCD4linux beendet" else pkill -9 lcd4linux echo "LCD4linux gekillt" fi } # Befehlsparameter case "$1" in start) PID="$(pgrep -x lcd4linux)" if [[ ! -z $PID ]] ; then echo "LCD4linux ist bereits gestartet" else start_lcd4linux echo "LCD4Linux mit PID $PID gestartet" fi ;; stop) PID="$(pgrep -x lcd4linux)" if [[ ! -z $PID ]] ; then stop_lcd4linux else echo "LCD4linux ist bereits beendet" fi ;; restart) echo "LCD4linux restart" stop_lcd4linux sleep 3 start_lcd4linux ;; *) clear echo "===============================================================================" echo "" echo -n "Befehlsliste: LCD4linux" echo "" echo "" echo "Start, Stop, Restart start | stop | restart" echo "" echo "===============================================================================" echo "" ;; esac exit 0 EOF #Script ausführbar machen: chmod +x /var/emu/script/lcd4linux.sh #Softlink anlegen: ln -s /var/emu/script/lcd4linux.sh /bin/lcd #In Crontab eintragen: echo "" >> /etc/crontab echo "#LCD4Linux neustarten" >> /etc/crontab echo "30 4 * * * root /var/emu/script/lcd4linux.sh stop" >> /etc/crontab echo "31 4 * * * root /var/emu/script/lcd4linux.sh start" >> /etc/crontab #Syslog schonen: touch /etc/rsyslog.d/1-lcd4linux.conf echo ":msg, contains, "readline requested line" -/dev/null" >> /etc/rsyslog.d/1-lcd4linux.conf echo "& ~" >> /etc/rsyslog.d/1-lcd4linux.conf service rsyslog restart exit 0
Dann beenden wir nano mit STRG+O und STRG+X
3. Um Kompatiblitätsprobleme zu vermeiden lassen wir das Script von dos2unix prüfen:
Code:dos2unix pearl.sh
4. Jetzt das Scrupt noch ausführbar machen:
Code:chmod +x pearl.sh
5. und zum Schluss noch ausführen:
Code:bash pearl.sh
Hier noch der Changelog:
V 0.01: Grundsätzlich nur zur Anwendung unter Debian 7 geeignet
V 0.02: Erkennung ob Debian 6 oder 7. Abbruch bei 6
V 0.03: Unterstützung für Debian Squeeze hinzugefügt (kein Abbruch mehr)
V 0.04: Erkennung von Ubuntu und Debian 5 (Lenny) hinzugefügt --> Abbruch
V 0.05: Kurzbefehle LCD START|STOP|RESTART sowie täglichen Neustart durch Crontab hinzugefügt
Das Script wird vorraussichtlich in Kürze auch als Onlinscript über i os für IPC verfügbar sein.
##################################################################################################
Und noch etwas in eigener Sache... Falls LCD4Linux euch auch den syslog Vollmüllt, dem ist ganz einfach mit dem hier Abhilfe zu schaffen:
Per Putty auf dem Server einloggen ist klar...
In den Ordner /etc/rsyslog.d/ wechseln.
Dort eine Datei Namens 10-lcd4linux.conf Erstellen mit
# touch 10-lcd4linux.conf
Die Datei mit einem Editor der Wahl Öffnen, meine ist "Nano"
Also mit:
# nano 10-lcd4linux.conf
In die Datei folgenden Inhalt Kopieren:
:msg, contains, "readline requested line" -/dev/null
& ~
Das ganze Beenden und Abspeichern mit "STRG X" und "J" für´s Speichern.
Danach noch in der Konsole eingeben:
# service rsyslog restart
In den Ordner /etc/rsyslog.d/ wechseln.
Dort eine Datei Namens 10-lcd4linux.conf Erstellen mit
# touch 10-lcd4linux.conf
Die Datei mit einem Editor der Wahl Öffnen, meine ist "Nano"
Also mit:
# nano 10-lcd4linux.conf
In die Datei folgenden Inhalt Kopieren:
:msg, contains, "readline requested line" -/dev/null
& ~
Das ganze Beenden und Abspeichern mit "STRG X" und "J" für´s Speichern.
Danach noch in der Konsole eingeben:
# service rsyslog restart
Dadurch wird der ganze SPAM nicht mehr gespeichert sondern in den Digitalen Nirwana verschoben! Natürlich ist es auch möglich den Schrott schreiben zu lassen, dafür muss aus /dev/null nur ein Pfad incl. Logdatei der Wahl erstellt und eingetragen werden. Dann aber bitte nicht vergessen logrotate die Logdatei bekannt zu machen!
Zum Diskussionsthread geht es hier entlang
Zuletzt bearbeitet von einem Moderator: