Archiv der Kategorie: ubuntuusers

[vdr] doppelte Aufnahmen löschen

Zum Fernsehen komme ich nicht viel und damit ich die ein oder andere Folge nicht verpasse, nutze ich den Linux Videorekorder.

Ein sehr nützliches Plugin ist epgsearch, mit dessen Hilfe der Timer automatisch programmiert wird. Es können Suchbegriffe eingegeben werden und der vdr programmiert den Timer wenn der gesuchte Begriff im Titel oder in der Beschreibung gefunden wurde.
Neben den Suchbegriff können noch Kanäle ausgewählt werden, auf denen aufgenommen werden darf.
Das Plugin bietet auch eine Funktion das bereits aufgenommene Folgen nicht noch einmal aufgenommen werden sollen, leider habe ich diese Funktion erst spät entdeckt und nun wurden einige Folgen doppelt aufgenommen.

Damit ich die doppelten Folgen schnell entfernen kann, habe ich mir folgendes Script erstellt.
#!/bin/bash
VDRPFAD=/vdr

grep "D " --include="info" -R /vdr/ | cut -d ":" -f 2 | sort | uniq -d > $VDRPFAD/vdrtemp

while read i
do
FILE=`grep "$i" --include="info" -R /vdr | tail -1 | cut -d ':' -f1 | sed -e 's/\/info//g'`
rm -R $FILE

done < $VDRPFAD/vdrtemp rm $VDRPFAD/vdrtemp

Das Script sucht nach doppelten Beschreibungen und löscht dann eine der gefundenen Aufnahmen.

brbd unter centos installieren

Angenommen man betreibt einen kleinen Server auf dem Daten abgelegt werden, diese werden zur Sicherheit auf zum Beispiel einem Raid abgelegt. Nun sollen die abgelegten Daten beim Ausfall des Server schnellstmöglich auf einem anderen System zur Verfügung stehen. Eine Möglichkeit die Daten auf den anderen Server zu kopieren wäre ein cronjob der alle x Minuten rsync ausführt. Eine weitaus bessere Lösung ist drbd.
Grob gesagt ist drbd ein Raid zwischen zwei Servern und wer mehr darüber wissen möchte, sollte sich die Seite http://www.drbd.org/ anschauen.

Zunächst muss unter centos das Repository installiert werden:
rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
Im Anschluss die benötigten Programme installieren
yum install drbd84 kmod-drbd84

Für das drbd device habe ich auf beiden Servern(drbd1,drbd2) /dev/sdb angelegt und die Netzwerkkarten eth1 über ein Crossover Kabel miteinander verbunden.

Die Konfiguration des drbd Device erfolgt in der Datei /etc/drbd.d/data.res:

resource data {
net{
csums-alg md5;
}
disk {
resync-rate 40M;
}
on drbd1 {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.1.1:7789;
meta-disk internal;
}
on drbd2 {
device /dev/drbd1;
disk /dev/sdb;
address 192.168.1.2:7789;
meta-disk internal;
}
}

Dann die drbd devices auf beiden Servern initialisieren:
drbdadm create-md data

Ausgabe:
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success

Im Anschluss das drbd auf beiden Servern starten /etc/init.d/drbd start und das Device aktivieren drbdadm up data.

Über cat /proc/drbd kann man feststellen ob die beiden drbd’s miteinander verbunden sind.
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r—–

Sollte dort anstatt Connected WFConnection stehen, konnte keine Verbindung hergestellt werden.

Zum Schluss muss auf einem der Server das drbd device als primary gesetzt werden, automatisch startet dann die Synchronisierung.

drbdadm primary --force data

Die Ausgabe von cat /proc/drbd sieht dann wie folgt aus
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:70296 al:0 bm:4 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:10415772
[>....................] sync'ed: 0.8% (10168/10236)M
finish: 0:02:28 speed: 69,632 (69,632) K/sec

Während die Synchronisierung läuft, kann bereits das Dateisystem auf gewohntem Weg (mkfs.ext4 /dev/drbd1) formatiert werden.

Nach der Formatierung kann das drbd device gemountet und genutzt werden.

drbd Resource auf dem anderen Server mounten

Möchte man das drbd Device auf dem anderen Server mounten, muß man es zunächst unmounten und das drbd device von Primary auf Secondary setzen.

umount /dev/drbd1
drbdadmin secondary data

Nun kann auf dem zweiten Server das drbd Device als primary gesetzt und gemounted werden.

Anmerkung
Ich bin in dem kleinen Artikel nicht auf die Iptables eingegangen, diese müssen natürlich auch entsprechend angepasst werden.
Demnächst werde ich einen Artikel erstellen in dem es darum geht, das eine Clustersoftware das setzen des Primary drbd device und das mounten übernimmt.

[gerrit] Benutzer auf einen Branch einschränken

Im Gerrit ist es möglich, das ein Benutzer nur den Zugriff auf einen bestimmten Branch bekommt.

Für das Lese und Schreibrecht auf den Branch develop(refs/heads/develop) werden die Rechte Read, Push und Create Referenz benötigt.

Wenn der Benutzer nur das angegebene Recht hat, ist er nicht mehr in der Lage auf das gitweb zuzugreifen. Um das gitweb nutzen zu können, benötigt der Benutzer das Read Recht auf refs/*.
Hat der Benutzer jedoch das Recht, kann er auf alle Branches innerhalb des Repositorys zugreifen.

[cygwin] keine Dateirechte beim upload mit Hilfe von lftp

Ein Kollege entwickelt seine Seite unter Windows und zum hochladen auf seinen webhosting Anbieter nutzt er lftp unter cygwin.
Das ganze funktionierte bislang ohne Probleme, bis er den Anbieter gewechselt hatte.

Beispiel:
lftp -u Benutzer,kennwort ftp-server -e "mirror -R /cygdrive/c/websites htdocs; exit"

Nachdem er die Dateien per lftp auf den neuen Server hochgeladen hatte, konnte die Seite über den Browser nicht mehr geöffnet werden. Ich schaute mir die hochgeladenen Dateien an und fand heraus, das Sie kein Dateirechte hatten. Nachdem ich die benötigten Rechte gesetzt hatte, war die Seite wieder aufrufbar.

Ich startete erneut die Übertragung der Dateien, diesmal jedoch zusätzlich mit dem Parameter -d. Bei der Debug-Ausgabe sah ich, das lftp ein CHMOD 000 auf die hochgeladenen Dateien ausführte.

Mit dem Parameter -p konnte ich lftp anweisen, die Rechte nicht zu ändern und die Seite war nach einem erneuten Upload aufrufbar.

lftp -u Benutzer,kennwort ftp-server -e "mirror -R -p /cygdrive/c/websites htdocs; exit"

[Raspberry Pi] Browser nach Systemstart im Fullscreen starten

Ein Kollege fragte mich neulich wie er am einfachsten auf drei Fernsehern verschiedene Urls für Präsentationen öffnen könnte. Er dachte zunächst daran einen Rechner mit entsprechender Grafikkarte zu kaufen, ich konnte ihn jedoch überzeugen anstatt eines Rechners, drei Raspberry Pi´s zu verwenden.

Der Plan ist, das der Raspberry Pi hochfährt und automatisch den Browser öffnet.
Um Resourcen zu sparen, wird der midori Browser über die Kommandozeile gestartet und nicht über einen Desktop. Das setzt voraus, das der Pi Benutzer nach dem hochfahren des Systems an der Kommandozeile angemeldet ist.

Hierfür muss die Datei /etc/inittab wie folgt angepasst werden:

Vorher
1:2345:respawn:/sbin/getty --noclear 38400 tty1
nachher
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1

Damit der Browser den gesamten Bildschirm ausfüllt (Kiosk Mode) und zum Beispiel der Mauszeiger nicht dargestellt wird, müssen noch weitere Programme installiert werden.

apt-get install matchbox x11-xserver-utils unclutter

Das Script sieht dann wie folgt aus:
#!/bin/sh
unclutter &
matchbox-window-manager & :
xset -dpms
xset s off
while true; do
/usr/bin/midori -e Fullscreen -a https://www.itbasic.de
done

Hier eine kurze Erklärung:
unclutter – lässt den Mauszeiger verschwinden
matchbox-window-manager – sorg für den Kiosk Modus
midori -e Fullscreen -a URL – startet den Browser
xset -dpms und xset s off deaktiviert den Bildschirmschoner
Die while Schleife sorgt dafür, das der Browser bei einem Absturz neu gestartet wird.

Nach einem chmod 755 presentation.sh, lässt sich das ganze dann über xinit /home/pi/presentation.sh starten. Um es wieder zu beenden reicht strg + alt + F1 und im Anschluss strg + c.

Automatischer Start

Ein Eintrag in der /home/pi/.profile reicht nun aus, damit die Präsentation nach dem Systemstart gestartet wird.

Ich habe jedoch das folgende Script in der /home/pi/.profile hinterlegt, welches prüft ob der Raspberry Pi eine IP Adresse über den dhcp Server bekommen hat. Wenn keine IP Adresse vorhanden ist, wird die Präsentation nicht gestartet und dafür ein Hinweis auf der Konsole ausgegeben.

start.sh:
#!/bin/bash
ifconfig | grep 192
if [ $? -eq 0 ]
then
xinit /home/pi/presentation.sh
else
echo "!!! keine Netzwerkverbindung !!!"
echo "Bitte stellen Sie eine Netzwerkverbindung her und"
echo "fuehren Sie xinit /home/pi/presentation.sh aus"
fi

Betriebssystem klonen

Für die zwei weiteren Fernseher muss mein Kollege einen Klone der SD Karte erstellen.
Das ganze lässt sich unter linux über dd einfach realisieren.

1. Image der SD Karte erstellen
dd if=/pfad/zur/sd/karte of=/home/user/sd-image.img
2. SD Karte wechseln und Image auf die neue SD Karte spielen
dd if=/home/user/sd-image.img of=/pfad/zur/sd/karte

Auf diesem Weg lässt sich ein Backup des gesamten System erstellen, hilfreich wenn man des öfteren verschiedene Programm etc ausprobieren möchte.

Hostnamen ändern

Zum Abschluss muss noch der Hostname in der /etc/hostname und /etc/hosts angepasst werden, da sonst der Hostname dreimal im Netzwerk vorhanden ist.

Quellen:
Browser im Kiosk Modus starten: https://github.com/MobilityLab/TransitScreen/wiki/Raspberry-Pi
Autologin:http://elinux.org/RPi_Debian_Auto_Login