Posts Tagged ‘ Linux

Automatisiertes Sichern mit rsync und cronjob

Rsync-Skript

Das Skript ist für die automatische Sicherung von beliebigen Ordner zuständig und durch verschiedene Parameter konfigurierbar. Die Parameter und deren Bedeutung sind folgende:

  • SOURCE – Quellordner
  • TARGET – Zielordner
  • RSYNCCONF – Parameter zum vollen Synchronisieren
  • RSYNC – Speicherort der Binärdatei von „rsync“

Sind alle Parameter konfiguriert, kann das Skript ausgeführt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
#
# Automatisches Sichern von speziellen anzugebenden Ordner
# mit Hilfe von "rsync" und cronjob
#
# Angabe der Ordner die gesichert werden soll.
# ACHTUNG
# /[Ordner]/ -> Inhalt des Ordners wird gesichert
# /[Ordner] -> Ordner wird gesichert
SOURCES="/home/[USER]/Dokumente /home/[USER]/Downloads"

# Ziel des Backups auf dem entfernten Rechner.
# Benötigt SSH-Key-Exchange
TARGET="root@[REMOTE]:/home/backup/"

# Parameter zum Synchronisieren
# --delete bewirkt ein Datenabgleich inklusive Löschen auf dem Backupmedium
RSYNCCONF="--delete"

# Dateiname des Logfile
LOGFILE="rsync_log.log"

# Ort der Binär-Datei von "rsync"
RSYNC=`which rsync`

# Befehl
$RSYNC -avrpuE $RSYNCCONF $SOURCES $TARGET > $LOGFILE

exit 0

Tipp

Für eine reibungslose  Sicherung der Dateien und Ordner sollten für die Anmeldung auf dem Remote-System vorher ein SSH-Key-Exchange durchgeführt werden, damit man kein Passwort im Skript hinterlegen muss.

Cronjob

Damit man eine Automatisierung erreicht, muss das Skript regelmäßig ausgeführt werden. Dafür eignet sich ein Cronjob unter Linux bestens. Die generelle Gliederung der Zeitangaben ist die folgende:

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

Exemplarisch soll das Skript immer in der Mittagspause durchgeführt werden. Damit ist gewährleistet das der Rechner im Betrieb ist und er mit hoher Wahrscheinlichkeit nichts zutun hat. Ein Cronjob für die Ausführung des Skript täglich um 12 Uhr sieht wie folgt aus:

1
0 12 * * * /home/[USER]/Dokumente/rsync_script.sh

Download

Rsync-Script

Rechte

Rechte ändern nicht vergessen. Das Skript muss ausführbar sein.

1
chmod +x /home/[USER]/Dokumente/rsync_script.sh

Master Thesis – Evaluation eines IPTV Monitoringsystems auf Basis von Android

Im Zeitalter moderner Netzwerkinfrastrukturen und einer Konvergenz zum Next-Generation-Network (NGN) oder auch ALL-IP-Network (3GPP TS22978), werden altbekannte Dienste wie lineares Fernsehen, welches bisher über Kabel, Satellit oder Terrestrisch per Broadcast von den Sendeanstalten ausgestrahlt wurden, auf neue Übertragungsmedien portiert. Die gängigste Bezeichnung von Fernsehen, das über das Internet ausgestrahlt bzw. empfangen wird, ist „Internet Protocol Television“ (IPTV). Mit IPTV wird im Allgemeinen die digitale Übertragung von Audio- und Videosignalen mittels einer Breitbandinternetverbindung bezeichnet. Durch die Breitband-internetverbindung (DSL) ist eine echte Interaktion mit dem Verbraucher möglich, die neue Anwendungsgebiete und Dienste, wie zum Beispiel Video-On-Demand (VoD) realisieren lässt. Zeitgleich zeichnet sich ein Trend ab, dass Endbenutzer im Internet exzessiv Plattformen wie „YouTube“ und „Vimeo“ als Videoportale nutzen, um den täglichen Konsum von Videomaterial nachzugehen.

Auch die Entwicklung von Mobilfunktechnologien hat in den letzten Jahren enorm an Bedeutung gewonnen, sodass auch SmartPhone durch ihren technologischen Fortschritt immer mehr in der Lage sind, Video-Streaming-Dienste mobil zu nutzen. Diese multimedialen Angebote stellen große Herausforderungen an die Übertragungsnetze, denn die Nutzung dieser Dienste im Mobilfunk wird oft durch den stark fehlerbehafteten Übertragungsweg gestört, wodurch die Zufriedenheit des Endbenutzers negativ beeinflusst wird. Um die Ende-zu-Ende Dienstgüte zu ermitteln, müssen Netzwerk- und Video-Parameter analysiert werden, wobei die Analyse der aktuellen Video Qualität meistens sehr aufwendig und kostenintensiv ist.

Im Rahmen des vom Bundesministerium für Bildung und Forschung geförderten Forschungsprojektes SmartVideo wird ein kostengünstiges Verfahren zur Qualitätsbestimmung von IP-basierten Videoströmen wie IPTV oder Video-on-Demand (VoD) entwickelt. Das IPTV Monitoring System dient zur Bestimmung der Qualität an Breitbandanschlüssen (DSL) und basiert auf ressourcenschonenden Messköpfen, die als verteiltes Messsystem eingesetzt werden können. Um die Qualität einer Videoübertragung auf einem mobilen Endgerät zu erfassen, ist eine Software nötig, die Netzwerk- und Videoparameter analysiert und eine Bewertung des Videos vornimmt.

Ziel dieser Master Thesis war es, einen QoS/QoE Monitoring Sensor (Messkopf) auf Basis eines Android SmartPhone innerhalb der SmartVideo Architektur zu entwickeln. Der Sensor soll spezifische Parameter aufnehmen und eine erste Abschätzung der Qualität des Videos vornehmen. Es werden verschiedene Messverfahren evaluiert und die Android Architektur dabei untersucht, um ein
geeignetes Konzept für eine Implementierung zu finden.

Das Thema meiner Master Thesis war Evaluation eines IPTV Monitoringsystems auf Basis von Android

Architektur „SmartVideo Probe for Android“

Anbei zum Download:

Master Thesis von Stephan Küffner

Master Thesis – Evaluation eines IPTV Monitoringsystems auf Basis von Android

Chroot-Umgebung

Startet ein Linux System nicht mehr, kann es sein das Updates mit einem neuen Kernel, Grafikkarten Treibern oder Einstellungen für den Grub eingespielt worden sind. Man sieht dann im schlimmsten Fall nur noch einen schwarzen Bildschirm und hat indirekt keinen Zugriff mehr auf das System.

Zum Glück ist es kein Windows-System und somit halb so wild.

[Vorgehen]
Man startet seinen PC oder Notebook mit einer Live-CD einer Linux-Distribution seiner Wahl. Mögliche Varianten sind Kubuntu, Knoppix, Backtrack etc.

Ist das System hochgefahren, speichert man das folgende Script in einer Datei und führt es aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Initieren einer Chroot-Umgebung
# und hineinwechseln
# !Need to be Root!

if [ "$1" != "" ]; then
    mkdir /media/target
    mount "$1" /media/target
    mount -o bind /dev /media/target/dev
    mount -o bind /sys /media/target/sys
    mount -t proc /proc /media/target/proc
    chroot /media/target/
else
    echo "Usage:    ./script.sh [DEVICE]"
    echo "Device    - Root-Partition (/dev/sda1)"
    echo "Example:  - ./script.sh /dev/sda1"   
fi

Danach hat man vollen Zugriff auf sein System als Benutzer „root“ und kann die Pakete/Updates entfernen!

[Speichern des Scriptes – Konsole]

1
nano script.sh

Copy & Paste – Strg + x

1
2
chmod +x script.sh
sudo ./script.sh

[Download]
chroot-umgebung – Umbenennen in chroot-umgebung.sh

Subversion Projekt-Daten entfernen

Bei größeren Software Projekten werden meistens Versionskontrollsysteme aka SVN eingesetzt. Jedoch kommt es ab und zu vor, dass sich Fehler beim „Checkout“ und „Commit“ einschleichen, oder man sein Projekt ohne das Versionskontrollsystem kopieren muss.

SVN legt im Projekt rekursiv versteckte Ordner mit dem Namen „.svn“ an. Möchte man diese nun vollständig löschen, kann man manuell alle Ordner durchsuchen und die SVN-Ordner löschen oder man macht sich das Unix System zu nutze (Vorausgesetzt man arbeitet mit einem!) und führt die verketteten Befehle aus.

1
find ./ -type d -name ".svn" -exec rm -Rf {} \;

Der Befehl durchsucht alle Ordner ab dem Verzeichnis in dem man sich befindet und löscht die SVN-Ordner Strukturen.

Bei mir hat das Script bisher nützliche Dienste geleistet, jedoch:

[Achtung]
Ich übernehme keine Gewähr oder Haftung wenn was schiefgeht und euer Projekt gelöscht wird.

(K)Ubuntu Splashscreen Auflösung korrigieren

(K)ubuntu getestet in den Versionen 12.04

Funktioniert nicht mit 11.04!!!

Seit Kubuntu (Ubuntu) 10.04 (Lucid Lynx) gibt es beim Booten Probleme mit dem Splashscreen. Der Fehler rührt aus der Verbindung mit dem proprietären NVIDIA-Treiber (ATI in wenigen Fällen ebenfalls). Dieser nutzt nicht mehr die vesafb Schnittstelle zur Grafikkarte. Installiert man nun den Nvidia-Treiber, so wird der Splashscreen unansehnlich pixelig.

Abhilfe schafft hier uvesafb, der jedoch auch Einschränkungen hat, die da wären:

uvesafb is a _generic_ driver which supports a wide variety of video cards, but which is ultimately limited by the Video BIOS interface. The most important limitations are:
– Lack of any type of acceleration.

– A strict and limited set of supported video modes. Often the native or most optimal resolution/refresh rate for your setup will not work with uvesafb, simply because the Video BIOS doesn’t support the video mode you want to use. This can be especially painful with widescreen panels, where native video modes don’t have the 4:3 aspect ratio, which is what most BIOS-es are limited to.

– Adjusting the refresh rate is only possible with a VBE 3.0 compliant Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0 compliant, while they simply ignore any refresh rate settings.

Dennoch funktioniert alles wunderbar. An dieser Stelle möchte ich den Workaround geben.

[Fix/Workaround]
* uvesafb benötigt noch ein paar Pakete bei der Installation. Dies kann erledigt werden mit:

1
sudo apt-get install v86d hwinfo

* Als nächstes muss die passende Auflösung für den Monitor bzw das Display gefunden werden. Der Befehl dafür lautet:

1
sudo hwinfo --framebuffer

* Beispielsweise könnte der Befehl folgenden Output liefern:
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.464]
Unique ID: rdCR.R1b4duaxSqA
Hardware Class: framebuffer
Model: „NVIDIA G73 Board – p456h1 “
Vendor: „NVIDIA Corporation“
Device: „G73 Board – p456h1 “
SubVendor: „NVIDIA“
SubDevice:
Revision: „Chip Rev“
Memory Size: 256 MB
Memory Range: 0xc0000000-0xcfffffff (rw)
Mode 0x0300: 640×400 (+640), 8 bits
Mode 0x0301: 640×480 (+640), 8 bits
Mode 0x0303: 800×600 (+800), 8 bits
Mode 0x0305: 1024×768 (+1024), 8 bits
Mode 0x0307: 1280×1024 (+1280), 8 bits
Mode 0x030e: 320×200 (+640), 16 bits
Mode 0x030f: 320×200 (+1280), 24 bits
Mode 0x0311: 640×480 (+1280), 16 bits
Mode 0x0312: 640×480 (+2560), 24 bits
Mode 0x0314: 800×600 (+1600), 16 bits
Mode 0x0315: 800×600 (+3200), 24 bits
Mode 0x0317: 1024×768 (+2048), 16 bits
Mode 0x0318: 1024×768 (+4096), 24 bits
Mode 0x031a: 1280×1024 (+2560), 16 bits
Mode 0x031b: 1280×1024 (+5120), 24 bits
Mode 0x0330: 320×200 (+320), 8 bits
Mode 0x0331: 320×400 (+320), 8 bits
Mode 0x0332: 320×400 (+640), 16 bits
Mode 0x0333: 320×400 (+1280), 24 bits
Mode 0x0334: 320×240 (+320), 8 bits
Mode 0x0335: 320×240 (+640), 16 bits
Mode 0x0336: 320×240 (+1280), 24 bits
Mode 0x033d: 640×400 (+1280), 16 bits
Mode 0x033e: 640×400 (+2560), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

* Als nächstes müssen wir den Bootloader Grub2 umkonfigurieren. Dazu editieren wir die Datei /etc/default/grub, damit wir sicher sein können, dass wir mit uvesafb framebuffer booten. Folgende Zeile muss geändert werden:

1
GRUB_GFXMODE=1680x1050

 

* Beim Booten lassen wir den PC den Framebuffer nutzen mit:

1
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

* Abschließen noch alles aktualisieren und dann sind wir fertig:

1
2
sudo update-grub2
sudo update-initramfs -u

* Ein Neustart lässt das System dann in neuem Glanz erscheinen. Der Splashscreen ist nun länger zu sehen und in einer wesentlich angenehmeren und ansehnlicheren Auflösung.

[Bugs]
Auffallend ist, dass das System bei mir erst nach dem zweiten Neustart funktionierte. Danach immer einwandfrei.

 

Scripting – Die Bash unter Linux

Wie jeder weiß, Linux ist was tolles. So auch natürlich die Programme auf diesem Betriebssystem. Die Bash ist nun eins davon, welches zugleich auch eine zentrale Aufgabe hat. Das Schöne und immer wieder Nützliche an der Bash ist die Einfachheit und Schnelligkeit, mit der sich Aufgaben die man nur langsamer unter einer GUI (KDE oder GNOME) hätte machen können, erledigen lassen.

Ein Skript welches ich mittlerweile schon öftes gebraucht habe, will ich hier einmal vorstellen. Es ist, wie man sehen kann ziemlich simpel aufgebaut. Zu Funktion kann man sagen, das es alle Dateien in einem Verzeichnis, wo auch das Skript liegt, nach einer bestimmten Endung durcharbeitet und unter anderem Dateinamen wieder ablegt.

In dem gezeigten Skript werden, wenn man es auf der Konsole mit [./script.sh wav mp3] startet, alle Dateien der Endung „wav“ werden mit ffmpeg in einer Rate von 192kbps kodiert und unter dem selben Dateinamen jedoch mit der Endung „mp3“ abgespeichert.

Skript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
#
# Umwandeln von Audio
# und Videodaten in andere Formate

if [ "$1" != "" ]; then
 if [ "$2" != "" ]; then
    for i in *."$1"
    do
      if [ -f "$i" ]; then
       ffmpeg -ab 192k -i "$i" "${i%."$1"}"."$2"
      fi
   done
 else
    echo "Usage: ./skript.sh [von] [nach]"
 fi
else
  echo "Usage: ./skript.sh [von] [nach]"
fi

Den Code könnt ihr euch in eine Textdatei kopieren und am Besten die Datei in skript.sh benennen.