Archiv des Autors: Jörg Kastning

Auf den Pi gekommen

Der anfängliche Hype ging noch spurlos an mir vorüber, doch letztlich bin ich doch noch auf den Pi gekommen. Natürlich geht es hier nicht um Kuchen, sondern um den Raspberry Pi.

Ein Gespräch mit meinem Arbeitskollegen hat mein Interesse an diesem Einplatinencomputer geweckt und ich habe mich entschlossen in Zukunft ein wenig damit zu experimentieren.

Doch wo fängt man an? Im Internet finden sich unzählige Quellen, die sich mit Projekten um und dem Pi selbst beschäftigen. Doch war es mir für den Einstieg zu mühsam mich durchs Internet zu wühlen. Ich wollte lieber etwas in der Hand haben. Darum bestellte ich mir zum Einstieg das eBook „Raspberry Pi: Einstieg – Optimierung – Projekte“ von Maik Schmidt. Wie der Buchtitel schon verrät bekommt man hier einen guten Einstieg in die Thematik. So wird z.B. schnell und einfach erklärt, was man braucht um den Pi zum ersten Mal mit einem Betriebssystem zu booten.

Angefixt und voller neuer Ideen habe ich also erstmal eine Bestellung beim IT-Versandhaus meines Vertrauens aufgegeben und

  • einen Raspberrry Pi,
  • zwei 8GB SDHC Cards und
  • ein Gehäuse für den Pi

bestellt.

Auf den folgenden Bildern seht ihr, was man alles braucht, um einen kompletten Rechner zusammenzusetzen. Dabei ist das Gehäuse sogar noch optional. :-)

Heute habe ich nun endlich gelegenheit die SD Card für den Pi vorzubereiten. Für den Pi gibt es bereits mehrere Betriebssysteme. Für den Anfang habe ich mich für Raspbian „wheezy“ entschieden, welches man auf der offiziellen Downloadseite herunterladen kann. Nach dem Download wird das Zip-Archiv entpackt und das Image mit dem folgenden Befehl auf die SD-Card kopiert.

sudo dd bs=1M if=2013-05-25-wheezy-raspbian.img of=/dev/mmcblk0

Bitte beachtet, dass der Name des Images und der eures Kartenlesers von obigem Befehl abweichen können. Der Kopiervorgang dauert einige Minuten, aber wenn alles klappt, erhalten wir eine bootfähige SD-Card, die Debian auf unseren Pi bringt.

Damit ist meine SD-Card nun bereit, um den Pi das erste Mal von ihr zu booten. Beim ersten Start nimmt man mittels Raspi-config noch einige Einstellungen vor. Ich möchte das entpsrechende Kapitel aus dem oben erwähnten Buch hier nicht zitieren. Daher empfehle ich euch eine Suchmaschine eurer Wahl zu bemühen oder auf einschlägige Literatur zurückzugreifen. Ich gehe nun erstmal mit meinem Pi spielen. ;-)

MySQL Relay log read failure beheben

Vor nicht allzu langer Zeit habe ich, mit Hilfe dieses Artikels, eine MySQL Master-/Slave-Replikation aufgebaut.

Heute ist es dann passiert. Nach einem Absturz des MySQL-Slave Servers funktionierte die Replikation nicht mehr. Die Ausgabe von

mysql> SHOW SLAVE STATUS\G

offenbarte folgende Fehlermeldung:

Relay log read failure: Could not parse relay log event entry. The possible reasons are:
the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on
the binary log), the slave's relay log is corrupted (you can check this by running
'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's
MySQL code. If you want to check the master's binary log or slave's relay log, you will
be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

In diesem Fall konnte die Replikation mit den folgenden Schritten repariert werden.

  1. STOP SLAVE;
  2. SHOW SLAVE STATUS\G
  3. Notiert die Einträge für ‚Relay_Master_Log_File‘ und ‚Exec_Master_Log_Pos‘
  4. RESET SLAVE;
  5. CHANGE MASTER TO MASTER_LOG_FILE=’Name_des_Master_Logfiles aus Schritt 3′, MASTER_LOG_POS=exec_master_log_pos aus Schritt 3;
  6. START SLAVE

Mit den oben beschriebenen Schritten werden alle Relay-Logs vom Slave-Server entfernt. Damit werden auch die evtl. korrupten Logs entfernt. Die Replikation beginnt anschließend genau an dem Punkt, an dem sie zuvor abgerissen ist, indem ein neues Binärlog vom Master-Server angefordert wird.

Und siehe da, ich hatte meine Replikation wieder am Fliegen.

MySQL Datenbanken auf neuen Server übertragen

Mit diesem Artikel möchte ich euch ein Tutorial bieten, dass erklärt wie Datenbanken von einem MySQL Server auf einen anderen übertragen werden können. Es kann euch damit bei der Konsolidierung oder Migration von MySQL-Servern gute Dienste leisten.

Um Inkonsistenzen zu vermeiden empfehle ich den MySQL-Quell-Server in den Read-Only Modus zu schalten. Dazu ist zuerst eine Anmeldung am MySQL Server erforderlich.

mysql -u root -p

Einschalten des Read-Only Modus:

mysql> set GLOBAL read_only = true;

Möchte man den Read-Only Modus später wieder abschalten, so meldet man sich wieder am Server an und führt den folgenden Befehl aus.

mysql> set GLOBAL read_only = false;

Es gibt im Prinzip mehrere Möglichkeiten die Datenbanken auf den neuen Server zu transferieren. Ich entscheide mich hier für den Weg der in meisten Fällen zum Ziel führen sollte. Wir können die gewünschten Datenbanken nun mit dem folgenden Befehl sichern. Um die Zeit für den Transfer über das Netzwerk zu reduzieren wird der Dump noch mit gzip gepackt.

shell> mysqldump -u root -p --databases db_name1 [db_name2 ...] >my_databases.sql
shell> gzip my_databases.sql
shell> scp my_databases.sql.gz user@zielserver:/zielverzeichnis/

Auf dem Zielsystem können die Datenbanken nun mit gunzip entpackt und in die Datenbank eingespielt werden.

shell> gunzip my_databases.sql.gz
shell> mysql -u root -p < my_databases.sql

Jetzt müssen wir noch dafür sorgen, dass auf dem neuen MySQL-Server die gleichen Benutzer wie auf dem Quellserver hinzugefügt werden und diese die gleichen Berechtigungen auf die Datenbanken erhalten wie sie sie auf dem Quellsystem besaßen. Ich habe mich dafür entschieden die benötigten Benutzer und Berechtigungszuordnungen mit dem folgenden Abfragemuster aus der mysql-Datenbank des Quellservers in eine Textdatei zu schreiben. Dazu muss ich die Tabellen user und db abfragen.

SELECT someColumn FROM `table`
WHERE foo LIKE '%foo%'
INTO OUTFILE '/tmp/dbdump.txt'

Wie genau obige Abfrage aussieht ist von Fall zu Fall unterschiedlich. In meinem Fall habe ich in zwei Abfragen die Dateien mysql_user.txt und mysql_db.txt erstellt. Diese sind nun auf den Zielserver zu übertragen.

Auf dem Zielserver müssen die Inhalte dieser Dateien nun wieder in die Tabellen user und db der Datenbank mysql eingespielt werden. Wer auf Nummer sicher gehen möchte testet den Import mit der Datenbank test, welche auf jedem MySQL Server vorhanden sein sollte. Das Einlesen der Dateien erledigt man mit dem LOAD DATA INFILE Kommando.

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...)]

Bei einigen Ubuntusystemen, auf denen AppArmor läuft kann es zu einem Fehler beim Einlesen der Datei kommen. Wer von diesem Problem betroffen ist, kann hier eine Lösung finden.

Damit ist es geschafft. Unsere Datenbanken sind nun auf dem neuen Server angekommen und wir können den alten im besten Fall abschalten.

Linux – Systemauslastung mit top analysieren

top – ist eines der wichtigsten Tools für den Linux Systemadministrator, wenn es darum geht die Systemauslastung eines Systems zu analysieren.

Sicherlich bin ich nicht der einzige, dem es nicht ganz leicht fällt alle Angaben von top auf Anhieb richtig zu interpretieren, wenn man es lange nicht mehr benutzt hat. Zum Glück habe ich jetzt im Web einen schönen Artikel gefunden, der die Systemanalyse mit top erläutert.

Auf www.pc-erfahrung.de habe ich den Artikel Linux – Systemauslastung analysieren, Schwachstellen finden entdeckt, welcher eine umfangreiche Beschreibung von top und eine Erläuterung der wichtigsten Optionen bietet.

An dieser Stelle vielen Dank an den Autor.

My-IT-Brain wieder online

Vergangene Woche, genauer gesagt am 22.05.13, trat ein Datenbankproblem auf in Folge dessen My-IT-Brain nicht mehr erreichbar war.

Dank des Google-Cache konnten alle Beiträge seit dem letzten Backup rekonstruiert werden. Es ist jedoch nicht ausgeschlossen, dass einige Kommentare verloren gegangen sind. Sollte euer Kommentar verloren gegangen sein, bitte ich um Entschuldigung.

Damit sich Störungen dieser Art nicht wiederholen setzte ich zukünftig auf mysqldumper, um schnell und einfach Dumps der Datenbank erstellen zu können.

Die Rekonstruktion der Beiträge ist nun abgeschlossen und My-IT-Brain steht euch wieder wie gewohnt zur Verfügung.

My-IT-Brain nutzt Bot-Trap im Kampf gegen WebSpam

Seit heute nutzt auch My-IT-Brain das Page-Restrictor-Script gegen WebSpam.
Um dieses tolle und kostenlose Script nutzen zu dürfen muss man sich bei Bot-Trap.de registrieren und im Forum vorstellen. Mit dieser kleinen Sicherheitsmaßnahme wollen die Betreiber sicherstellen, dass das Script nicht von “bösen” Spammern missbraucht wird.

Nach der Freischaltung durch die Betreiber erhält man den Downloadlink für das Script und kann dieses in seine eigene Webseite einbinden.

Macht mit und sagt dem nervigen WebSpam den Kampf an.

Bildbearbeitung in der Kommandozeile

Auf Ausflügen und im Urlaub begleitet mich neben meiner Freundin meist auch meine kleine Canon IXUS, um die schönsten Urlaubsbilder festhalten zu können. Die Fotos mache ich meist mit der höchsten Auflösung. Falls ich später ein Bild in Postergröße drucken lassen möchte habe ich so keine Probleme wegen einer zu geringen Auflösung. Jedoch belegen Bilder in Hoher Auflösung schnell 3-4MB pro Bild was die SSD bei vielen Bildern sehr schnell füllt.

Zu den regelmäßigen Aufgaben nach dem Urlaub gehört daher das Bilder durchsehen und verkleinern. Denn zum Zeigen auf den Notebook oder Tablet reicht meist auch eine wesentlich kleinere Auflösung und man spart jede Menge Speicherplatz ein.

Das Verkleinern der Bilder erledige ich schnell und einfach auf der Kommandozeile. Dazu habe ich mir folgendes Skript erstellt, dem ich beim Aufruf die gewünschte Auflösung mitgebe und schon wandelt es alle Bilder im angegebenen Verzeichnis um. Dabei werden keine neuen Dateien angelegt, sondern die vorhandenen bearbeitet. Daher sollte man sicher sein welche Auflösung man will.

#!/bin/bash
# Bildgroesse reduzieren und Seitenverhaeltnis beibehalten
# Die gewuenschte Aufloesung wird abgefragt
# Author: Joerg Kastning
# Lizenz: GPLv3
# Programmbeginn
read -p "Bitte die gewünschte Auflösung eingeben (z.B. 1600): " aufloesung
ls -1 *.JPG *.jpg | while read file;
do {
mogrify -resize "$aufloesung"x"$aufloesung" "$file"
echo "Bild $file wird verkleinert."
}
done
echo "Die Bearbeitung ist beendet."
exit

Möchte man seine Bilder nun noch ins Web hochladen, um sie mit Freunden zu teilen kann man den Bildern ein Wasserzeichen hinzufügen. Wasserzeichen schützen eure Bilder davor, dass andere sie als ihren eigenen Schnappschuss ausgeben. Denn sind eure Bilder erstmal im Netz kann sie dort so gut wie jeder finden und kopieren. Beim hinzufügen der Wasserzeichen hilft das folgende Skript welches ich im Wiki von Ubuntuusers gefunden habe.

#!/bin/bash
# Wasserzeichentext in alle JPEG Bilder aus diesen Verzeichnis einfuegen
# Der Wasserzeichentext wird unten links ins Bild eingebracht
# Sie koennen folgende Parameter anpassen:
Textabstandvonlinks=10
Textabstandvonunten=10
Schriftgroesse=10
PfadFonts="/usr/share/fonts/truetype/msttcorefonts"
# Pfad ist je nach Distribution unterschiedlich!
Schriftart="Arial.ttf"
Schriftfarbe="white"
# Moegliche Farben koennen aufgelistet werden mit dem Befehl: convert -list color
Wasserzeichentext="Copyright Joerg Kastning"
# Programmbeginn
echo "Textabstand von links: $Textabstandvonlinks"
echo "Textabstand von unten: $Textabstandvonunten"
echo "Schriftgoesse: $Schriftgroesse"
echo "Schriftart: $Schriftart"
echo "Schriftfarbe: $Schriftfarbe"
echo "Wasserzeichentext: $Wasserzeichentext"
echo " "
ls -1 *.JPG *.jpg | while read file;
do {
horizontal=`identify -verbose $file | grep Geometry: | awk {'print $2'} |cut -d"x" -f 1`
vertikal=`identify -verbose $file | grep Geometry: | awk {'print $2'} |cut -d"x" -f 2`
X=$Textabstandvonlinks
Y=$(($vertikal - $Textabstandvonunten))
convert
-font $PfadFonts/$Schriftart -pointsize $Schriftgroesse -fill
$Schriftfarbe -draw "text $X, $Y '$Wasserzeichentext'" "$file"
"`basename Wasserzeichen_"$file"`";
echo "Bearbeite Datei $file"
}
done
echo "Wasserzeichen wurden erfolgreich eingearbeitet"
exit
# Programmende

Diese beiden Skripts machen aus der Skalierung und dem Hinzufügen von Wasserzeichen ein Kinderspiel. So macht Bildbearbeitung in der Kommandozeile Spaß.

Ergänzung vom 15.12.2017

Beim Aufräumen und Sortieren meiner Bilder entstand eine neue Anforderung, die ich mit den beiden bisherigen Skripten nicht abdecken konnte. Datum und Uhrzeit der Aufnahme, sollten aus den EXIF-Informationen extrahiert und in den Dateinamen kodiert werden. Diese Aufgabe werde ich fortan mit folgendem Python-Skript erledigen:

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
#
# Beschreibung:
# Dieses Skript dient der Verarbeitung von JPEG-Dateien. Es wertet das
# Attribut 'EXIF DateTimeOriginal' aus und benennt die verbeiteten Dateien
# um, so dass diese dem Muster '_img.jpg' entsprechen.
#
# Autor:    Tronde (https://ubuntuusers.de/user/Tronde/)
# Lizenz:   GPLv3 (http://www.gnu.de/documents/gpl.de.html)

import os
import exifread
import argparse

def main():
    parser = argparse.ArgumentParser(description="Dieses Skript dient der Verarbeitung von JPEG-Dateien. Es wertet das Attribut 'EXIF DateTimeOriginal' aus und benennt die verbeiteten Dateien um, so dass diese dem Muster  entsprechen.")
    parser.add_argument("-s", "--source-dir", required=False, default='.', dest="src", help="Quell-Verzeichnis mit den zu verarbeitenden JPEG-Dateien.")

    args = parser.parse_args()
    
    src = args.src

    os.chdir(src)
    for file in os.listdir(src):
        if file.endswith(".jpg") or file.endswith(".JPG"):
            f = open(file, 'rb')
            tags = exifread.process_file(f, details=False, stop_tag='EXIF DateTimeOriginal')
            str_DateTime = str(tags['EXIF DateTimeOriginal']).split()
            str_Date = str(str_DateTime[0]).split(':')
            str_Time = str(str_DateTime[1]).split(':')
            Date = str_Date[0] + "-" + str_Date[1] + "-" + str_Date[2]
            Time = str_Time[0] + str_Time[1] + str_Time[2]
            fname = Date + "T" + Time + "_img.jpg"
#            print(fname)
            os.rename(file,fname)

if __name__ == "__main__":
main()

Das obige Skript

  1. liest alle JPG-Dateien eines Verzeichnisses ein,
  2. wertet die EXIF-Informationen aus und
  3. benennt die verbeiteten Dateien um, so dass diese dem Muster ‚_img.jpg‘ entsprechen.

Alles Skripte finden sich auch auf GitHub im Repository: https://github.com/Tronde/Bildbearbeitung

MySQL: Passwort in der Datenbank ändern

Meist werden Passwörter als MD5-Hash in einer Tabelle gespeichert. Möchte man nun einem Benutzer ein neues Passwort über die Datenbank vergeben, so geht dies mit dem folgenden Befehl.

update TABLENAME set password=MD5('PASSWORD') where COLUMNAME='USERNAME';

TABLENAME ist der Name der Tabelle, die Benutzername und Passwort enthält. PASSWORD ist das neue Passwort im Klartext, COLUMNAME der Name der Spalte, welche die Benutzernamen enthält und USERNAME ist der Name des Benutzers, dessen Passwort wir setzen wollen.

Werden die Passwörter hingegen im Klartext in der Datenbank gespeichert, lautet der Befehl wie folgt:
update TABLENAME set password=PASSWORD('PASSWORD') where COLUMNAME='USERNAME';

Anschließend führt man noch das folgende Kommando aus und beendet die Sitzung:

FLUSH PRIVILEGES;
quit

The_Excerpt in Twenty Twelve mit Child-Theme

Dieser Artikel beschreibt die Anpassung des Standartthemes “Twenty Twelve”. Es wird ein sogenanntes “Child Theme” erzeugt und so angepasst, dass auf der Startseite und den Kategorieseiten nur Auszüge der Artikel angezeigt werden und nicht der komplette Artikel.

Child Theme

Ein WordPress Child Theme ist ein Theme, welches die Funktionalität eines anderen Themes, des sogenannten Parent Themes übernimmt und um eigene Anpassungen ergänzt. Die Verwendung eines Child Themes bietet sich an wenn man ein Theme anpassen/verändern möchte. Diese Anpassungen sollten nicht, im Standardtheme vorgenommen werden, da sie bei einem Update des Themes überschrieben werden und verloren gehen. Lagert man die Änderungen in ein Child Theme aus bleiben sie bei einem Update des Parent Themes erhalten.

Die Themes liegen im Pfad /wp-content/themes eurer WordPress Installation. In diesem Verzeichnis kann man nun ein neues Unterverzeichnis für das Child Theme anlegen. Ein Child Theme benötigt mindestens eine style.css.  In der style.css des Child werden die Einstellungen des Parent Theme importiert und um die eigenen Änderungen ergänzt. Wird das Child Theme aktiviert ersetzt die style.css des Child die style.css des Parent.

Hier ist ein Beispiel für eine entsprechende style.css:

/*
Theme Name: Twentytwelve Child
Description: Child theme for the twentytwelve theme 
Author: Your name here
Template: twentytwelve
*/

@import url("../twentytwelve/style.css");

Hier folgt die Erklärung was der obige Code macht:

  1. /* öffnet den Header des Child Theme.
  2. Theme Name: definiert den Namen des Child Theme.
  3. Description: Eine Beschreibung des Themes. Diese ist optional und kann entfallen.
  4. Author: Name des Autors. Angabe ist optional und kann entfallen.
  5. Template: Definiert das Parent Theme.
  6. */ schließt den Header des Child Theme.
  7. Die Regel @import importiert die Einstellungen aus der style.css des Parent Theme

Damit haben wir alles was wir für das Child Theme brauchen und können dieses im WordPress Backend unter Design -> Themes aktivieren. Noch sehen wir keine Veränderung, da wir ja bisher nur die Einstellungen des Parent Themes importiert haben. Nun passen wir das Theme weiter an.

The_Excerpt

Auf der Startseite des Blogs, den Kategorie Seiten und den Suchergebnisseiten sollen nicht die vollständigen Artikel angezeigt werden, sondern nur Auszüge.

Dazu kopieren wir die Datei content.php aus dem Parent Verzeichnis in das Child Verzeichnis. Diese öffnet man mit einem Editor und geht zur Zeile 33, welche wie folgt aussehen sollte.

<?php if ( is_search() ) : // Display Excerpts only for Search ?>

Diese Anweisung bewirkt, dass die Artikelauszüge nur auf den Suchergebnisseiten angezeigt werden. Um sie auf den Kategorieseiten und der Startseite ebenfalls anzuzeigen ändern wir die Zeile wie folgt ab.

<?php if ( is_search() || is_home() || is_category() ) : // Display Excerpts for Search, Category and Home ?>

Nachdem die Datei gespeichert wurde aktualisiert man die Browseransicht und die Artikel werden nicht mehr komplett sondern nur noch auszugsweise dargestellt. Aber wir können noch mehr tun.

Normalerweise endet ein Auszug mit […]. Wir können statt dessen jedoch auch einen Link mit
einem Benutzerdefinierten Text anzeigen lassen.

“Weiterlesen…” Link hinzufügen

Um die benötigten Änderungen vornehmen zu können erstellen wir im Verzeichnis des Child eine leere functions.php und fügen folgenden Code ein.

 <?php
/**
 * Twenty Twelve functions and definitions.
 *
 * Sets up the theme and provides some helper functions, which are used
 * in the theme as custom template tags. Others are attached to action and
 * filter hooks in WordPress to change core functionality.
 *
 * When using a child theme (see http://codex.wordpress.org/Theme_Development and
 * http://codex.wordpress.org/Child_Themes), you can override certain functions
 * (those wrapped in a function_exists() call) by defining them first in your child theme's
 * functions.php file. The child theme's functions.php file is included before the parent
 * theme's file, so the child theme functions would be used.
 *
 * Functions that are not pluggable (not wrapped in function_exists()) are instead attached
 * to a filter or action hook.
 *
 * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

// Remove ... from excerpt and change the text
function change_excerpt_more()
{
  function new_excerpt_more($more)
    {
    // Use .read-more to style the link
     return '<span> <a href="' . get_permalink($post->ID) . '">[Weiterlesen...]</a></span>';
    }
  add_filter('excerpt_more', 'new_excerpt_more');

}
add_action('after_setup_theme', 'change_excerpt_more');

Damit werden die […] hinter dem Auszug entfernt und durch unseren eigenen
Text ersetzt. Das Ergebnis kann man hier auf meinem Blog betrachten.

T-Online Mediencenter in Ubuntu einbinden

Mit dem T-Online Mediencenter bietet die Telekom einen Cloudspeicherdienst mit 25GB
Speicherkapazität. Dieser Artikel schreibt wie man das Mediencenter als Datenspeicher in Ubuntu/Linux einhängen kann, um es komfortabel mit dem Dateimanager oder über die Shell nutzen zu können.

Wie viele andere Speicherdienste kann auch das Mediencenter über den Webbrowser
genutzt werden. Die Software zur Synchronisation und zum Zugriff gibt es jedoch nur für Windows. Ein Softwareclient für Linux ist auch nicht in Planung. Es besteht jedoch die Möglichkeit das Mediencenter mittels WebDAV in das lokale Dateisystem einzuhängen. Die folgende Anleitung beschreibt wie dies funktioniert.

Quelle: http://skripta.de/Davfs2.html

T-Online-Cloud (Mediencenter) unter Linux einbinden
===================================================

Anmerkung: Die folgende Kurzanleitung wurde aus verschiedenen 
aehnlich lautenden Online-Anleitungen zusammengestellt und getestet.
z.B.:
http://anderes-en.de/blog.php?mode=view&blog=11
http://blog.philippklaus.de/2010/04/mount-t-online-mediencenter-via-webdav/

Es wurden nur geringfuegige Aenderungen vorgenommen. 

=======================================================

Paket davfs2 installieren:

    * sudo apt-get install davfs2

Berechtigungen fuer den Benutzer (username = lokaler Linux-Anmeldename) setzen:

    * sudo chmod u+s /usr/sbin/mount.davfs
    * sudo usermod -a -G davfs2 username

Im Home-Verzeichnis den spaeteren Mountpoint (Verzeichnis) erstellen:

    * mkdir ~/Mediencenter

Jetzt zur fstab:

     * cd /etc
     * sudo nano fstab

und folgendes am Ende eintragen (username = lokaler Linux-Anmeldename):

     * # T-Online Mediencenter
     * https://webdav.mediencenter.t-online.de/ /home/username/Mediencenter davfs rw,noauto,user 0 0

Datei secrets erstellen und editieren 

     * cd ~
     * mkdir ~/.davfs2
     * touch ~/.davfs2/secrets
     * chmod 600 ~/.davfs2/secrets
     * nano ~/.davfs2/secrets

In die Datei ~/.davfs2/secrets folgendes eintragen (username = lokaler Anmeldename) und 
fuer anmeldung@t-online.de sowie password die T-Online-Zugangsdaten eintragen:

     * /home/username/Mediencenter anmeldung@t-online.de password

Dann die davfs2.conf kopieren und editieren:

     * cp /etc/davfs2/davfs2.conf ~/.davfs2/
     * nano ~/.davfs2/davfs2.conf

Die dort vorhanden Settings auf folgende Werte aendern und das # davor entfernen:

     * if_match_bug 1
     * use_locks 0
     * cache_size 1 # MiByte
     * table_size 4096
     * delay_upload 1
     * gui_optimize 1

Jetzt kann man mit mount ~/Mediencenter das Online-Verzeichnis einhaengen 
ohne Eingabe der Zugangsdaten.