Startseite Artikel Galerie Kontakt
JK ~ IT & Technik Blog

Artikel mit Schlagwort "Linux"

vor »

Guayadeque Audioplayer – Was wird gerade gespielt?

Ich habe nach einer Möglichkeit gesucht, die Titelinformationen zu dem aktuell laufenden Song bei Guayadeque abzurufen (Stichwort: “now playing”, “current track”, “was ich gerade höre”). Zum Glück nutzt Guayadeque D-Bus bzw. MPRIS (Media Player Remote Interfacing Specification), was die Umsetzung deutlich erleichtert.
Mit dem folgenden Befehl werden die Metadaten (ID3-Tag) des Songs ausgelesen:

qdbus org.mpris.guayadeque /Player org.freedesktop.MediaPlayer.GetMetadata

Ausgabe (Beispiel):

album: Colour Haze
artist: Colour Haze
arturl: [...]/Colour Haze - 04 - Love.mp3
bitrate: 320
genre: Psychedelic Rock
location: [...]/Colour Haze - 04 - Love.mp3
mtime: 560000
rating: 5
time: 560
title: Love
tracknumber: 4
year: 2005

Mit sed kommt man recht bequem an die rohen Informationen. Der nachfolgende Befehl schneidet aus der Zeile mit dem Song-Titel das vorangestellte “title: ” heraus und gibt alles dahinter aus:

qdbus org.mpris.guayadeque /Player org.freedesktop.MediaPlayer.GetMetadata | sed -n -e 's/^title: //p'

Ausgabe (Beispiel):

Love

Das funktioniert natürlich auch mit den anderen Einträgen!
Anmerkung: Das Leerzeichen hinter “title:” ist notwendig, damit der gesuchte Text-String nicht mit einem Leerzeichen beginnt.

Guayadeque: offizielle Homepage

Verfasst am: 01.08.2011 · Kategorien: Linux
Schlagworte: , , , , , , , , , , , , , ,  · Kommentare: Keine Kommentare

USB-Stick automatisch synchronisieren (udev+rsync)

Im Zuge meiner Abschlussarbeit stellte ich einige Überlegungen zwecks der Verwaltung und Sicherung der entstehenden Datenflut an. Nach einigem Für und Wider habe ich mich für eine Variante entschieden, die ich hier kurz vorstellen möchte.
Ein USB-Stick dient zum Transport der Daten. Dies hat sich als besonders praktikabel erwiesen, da auf unterschiedlichen PCs gearbeitet werden muss und auch ein Internetzugang nicht immer garantiert ist.
Vor dem Verlust des USB-Sticks oder einem technischen Defekt ist keiner gefeit und darum muss eine möglichst einfache Backup-Lösung her.
Das geht unter Linux nativ mit Bordmitteln, die nur ein wenig kombiniert werden müssen:

Um das Sichern der Daten so bequem wie möglich zu machen, soll sich der USB-Stick nach dem Einstecken automatisch mit einem Verzeichnis auf der Festplatte synchronisieren. Ein Benutzereingriff soll nicht nötig sein.
Das kleine Tool udev (Homepage) ist dafür besonders gut geeignet, denn mit selbst erstellten Regeln kann man das Anschließen von Hardware erkennen (hotplug-Ereignisse) und selber Aktionen definieren.

Zuerst müssen ein paar Daten gesammelt werden, damit der USB-Stick von der udev-Regel eindeutig identifiziert werden kann. Mit dem folgenden Befehl sucht man sich das Device zum USB-Stick heraus:

mount


/dev/sdc1 on /media/JETFLASH600 …

Der USB-Stick ist dem System also unter /dev/sdc bekannt. Mit einem Tool von udev können nun Gerätedetails ausgelesen werden:

udevadm info --path=/sys/block/sdc --query=all --attribute-walk | grep serial


ATTRS{serial}==”RWTAG4K2
ATTRS{serial}==”0000:00:1d.7″

Das fett gedruckte ist die Seriennummer des USB-Sticks, die wir zur eindeutigen Identifizierung benutzen werden. Es können auch andere Merkmale zur Identifizierung genutzt werden und auch Kombinationen daraus (grep-Befehl weglassen). Nähere Informationen gibt es auf der man-Page.

Die udev-Regeln liegen bei Ubuntu im Verzeichnis /lib/udev/rules.d/ bzw. /etc/udev/rules.d/. Und im letzteren legt man eine eigene Regel an. Die Zahl im Dateinamen gibt an, zu welchem Zeitpunkt/in welcher Reihenfolge die Regeln greifen (näheres dazu in /lib/udev/rules.d/README).

sudo vim /etc/udev/rules.d/99-usb-backup-custom.rules

BUS==”usb”, ACTION==”add”, KERNEL==”sd?1″, SYSFS{serial}==”RWTAG4K2“, RUN+=”/pfad/zum/script/usb_backup.sh

(wichtig: kein Zeilenumbruch!)

BUS==”usb” USB-Ports sollen beobachtet werden
ACTION==”add” Nur beim Anschließen des Gerätes die Regel ausführen (sonst startet das Backup-Script immer wieder neu)
KERNEL==”sd?1″ Mit dem Fragezeichen als Platzhalter wird die erste Partition des Device berücksichtigt (sda1, sdb1, …)
SYSFS{serial}==”RWTAG4K2″ Es wird nach der Seriennummer gefiltert
RUN+=”/pfad/zum/script/usb_backup.sh” Hier wird die Aktion angegeben (hier: Pfad zum Backup-Script)

Nun kann das Backup-Script angelegt werden (unbedingt die gekennzeichneten Stellen anpassen!):

vim /pfad/zum/script/usb_backup.sh
#!/bin/bash
{
dev="JETFLASH600" #Device-Name angeben! (hier z.B. /media/JETFLASH600)
exec 3> >(sudo -H -u USERNAME zenity \	#Username einfügen!
			--display :0.0 \
			--text-info \
			--title "USB-Stick Datasaver" \
			--width=450 \
			--height=250)
echo "USB-Stick detected: $dev" >&3
mp=$(grep "$dev" /etc/mtab)
i=0
while [ -z "$mp" ] && [ "$i" -lt 30 ]
do
	sleep 1
	mp=$(grep "$dev" /etc/mtab)
	i=$((i+1))
done
if [ -n "$mp" ]
then
	rsync -avz --delete /media/$dev /pfad/zum/backup >&3 #Verzeichnis anpassen!
	echo "Done!" >&3
fi
} &

Sehr wichtig sind die geschweiften Klammern ({,}) und das Et-Zeichen (&). Dies bewirkt, dass das Script im Hintergrund arbeitet und dazu parallel die gewöhnliche Einbindung des USB-Sticks ablaufen kann. Mit zenity (Homepage) wird ein kleines Fenster geöffnet, was eine Übersicht über den Vorgang gibt. Die etwas umständlich wirkende Warteschleife (while…) ist nötig, um die Zeit zwischen der Erkennung des USB-Sticks (Script wird gestartet) und dem Einbinden zu überbrücken. Erst nach dem Einbinden ist ein Zugriff auf die Dateien möglich.
Das Tool rsync (Homepage) gleicht die Daten zwischen dem USB-Stick und dem Backup-Verzeichnis ab. In der man-Page wird erklärt, was die einzelnen Optionen bedeuten:

-a Dateien, Verzeichnisse, symbolische Links rekursiv abgleichen und dabei Rechte beibehalten
-v Ausgabe anzeigen
-z Datenabgleich komprimieren
–delete in der Quelle (USB-Stick) gelöschte Dateien auch im Ziel (Backup) löschen

Das Backup-Script braucht jetzt noch Berechtigungen zum Ausführen:

chmod 755 /pfad/zum/script/usb_backup.sh

Ausserdem muss das Verzeichnis für das Backup angelegt werden:

mkdir /pfad/zum/backup

Damit die udev-Regel benutzt werden kann, ist ein Neustart des udev-Daemons nötig:

sudo service udev reload

Fertig! Ab sofort werden die Daten des USB-Sticks beim Einstecken in das Backup-Verzeichnis geschrieben.

Screenshot:

Verfasst am: 18.05.2011 · Kategorien: Linux
Schlagworte: , , , , , , , , , , ,  · Kommentare: Keine Kommentare

Nützlichste Tastenkürzel des Google Chrome

Im Nachfolgenden möchte ich die nützlichsten Tastenkürzel zusammenfassen, durch die Google Chrome das Surfen im Web erleichtert:

Beschreibung Tastenkürzel
Neues Fenster öffnen [STRG] + [N]
Neues Tab öffnen [STRG] + [T]
Tab schließen [STRG] + [W]
Das zuletzt geschlossene Tab öffnen [STRG] + [SHIFT] + [T]
Zum nächsten Tab springen [STRG] + [Bild auf]
Zum vorherhigen Tab springen [STRG] + [Bild ab]
Download-Tab anzeigen [STRG] + [J]
URL in Adressleiste markieren [STRG] + [L]
In Adressleiste springen und suchen [STRG] + [K]
Webseite neuladen [STRG] + [R]
Webseite durchsuchen [STRG] + [F]
Webseite als Lesezeichen speichern [STRG] + [D]
Zum Anfang der Seite springen [POS1]
Zum Ende der Seite springen [ENDE]
Nach unten blättern/scrollen [LEERTASTE]
Link in neuem Hintergrund-Tab öffnen [STRG] + Link anklicken
Ziel eines Links herunterladen [ALT] + Link anklicken
History zurück [ALT] + [←]
History vor [ALT] + [→]

Quelle: Google Chrome Hilfe

Verfasst am: 14.05.2011 · Kategorien: Internet, Linux
Schlagworte: , , , , ,  · Kommentare: Keine Kommentare

Short-Circuit-Tests bei der Shellprogrammierung

Bei der Shellprogrammierung gibt es mit den sogenannten Short-Circuit-Tests eine sehr komfortable und knappe Methode, um mehrere Befehle logisch hintereinander zu reihen und zu verküpfen.
Die Syntax sieht dazu wie folgt aus:

COMMAND1 && COMMAND2
COMMAND1 || COMMAND2

Prinzipiell funktionieren die Anweisungen wie if-Abfragen:
&&: liefert der COMMAND1 true, wird COMMAND2 ausgeführt
||: liefert der COMMAND1 true, wird COMMAND2 nicht (!) ausgeführt

Als COMMAND1 werden oft Abfragebedingungen verwendet (müssen aber nicht), während COMMAND2 ein richtiger Befehl sein muss.

Die Arbeitsweise der beiden Operatoren sind als logisch UND bzw. ODER zu verstehen. Der Gedanke dahinter:
Ist COMMAND1 true, so muss für UND (&&) auch COMMAND2 ausgeführt werden, um zu testen, ob COMMAND2 ebenfalls true ist. Falls COMMAND1 bereits false ist, wird COMMAND2 gar nicht erst ausgeführt.
Ähnlich bei ODER (||): Ist COMMAND1 true, reicht dies bereits aus, um das gesamte Statement true werden zu lassen und COMMAND2 wird nicht ausgeführt. Erst wenn COMMAND1 false ist, muss COMMAND2 ausgeführt werden, um dort auf true zu prüfen.
Tabellarisch kann es folgendermaßen dargestellt werden:

COMMAND1 && COMMAND2
COMMAND1 COMMAND2 RESULT
0 % 0
1 0 0
1 1 1
COMMAND1 || COMMAND2
COMMAND1 COMMAND2 RESULT
0 0 0
0 1 1
1 % 1

% bedeutet, dass der COMMAND nicht ausgeführt wird!

Beliebt sind solche Ausdrücke vor allem zum Abfangen kleiner Abfragen:

[ ! -f /path/to/file.ext ] && exit 1

(falls die Datei file.ext nicht existiert, wird das Programm an dieser Stelle mit dem Fehlercode 1 beendet)

rm text.ext || echo "Datei konnte nicht geloescht werden!"

(Fehlermeldung, falls Datei nicht gelöscht werden konnte)

ls test.ext && touch test.ext

(Datei anlegen, falls nicht existiert)

Noch viele weitere Möglichkeiten sind denkbar und zeigen die Flexibilität dieses Ausdrucks! Zudem lassen sich mehr als zwei Befehl hintereinander reihen (mit beliebig vermischten Operatoren).

Anmerkung: Code in Bourne-Again-Shell (Bash) Syntax

Verfasst am: 28.03.2011 · Kategorien: Linux
Schlagworte: , , , , , , ,  · Kommentare: Keine Kommentare

Terminal im Dateibrowser

Mit dem Paket Nautilus Terminal wird im Dateibrowser Nautilus ein Terminal integriert. Der große Vorteil ist, dass man sich mit der Shell (default: bash) in dem gleichen Verzeichnis befindet, wie mit dem Dateibrowser selbst. Arbeitet man mit Nautilus in einem Verzeichnis und muss einige Operationen über die Shell erledigen, ist es jetzt nicht mehr notwendig ein zusätzliches Terminal zu öffnen und dort dann in das entsprechende Verzeichnis zu navigieren.

Wie die Integration aussieht kann man auf folgendem Screenshot erkennen:

Die Installation erfolgt bequem mittels APT. (Achtung: Fremdquellen können das System gefährden!)

sudo add-apt-repository ppa:flozz/flozz    #Fremdquelle hinzufügen
sudo apt-get update                        #Paketquellen einlesen
sudo apt-get install nautilus-terminal     #Paket installieren
nautilus -q                                #Nautilus neustarten

Von nun an wird das kleine Terminalfenster im Dateibrowser angezeigt. Auf die verschiedenen Einstellungsmöglichkeiten möchte ich nicht weiter eingehen, da sie sich von selbst erklären. Lediglich auf den Punkt Nautilus-Terminal versteckt starten möchte ich hinweisen, weil ich ihn für sehr sinnvoll halte.

Weitere Informationen gibt es auf der Launchpad-Seite von Nautilus Terminal oder auf der Projektseite.

Anmerkung: Die Einfärbung der Bash hat mit dem o.g. Tool nichts zu tun. Sie ist unabhängig in der ~/.bashrc eingestellt!

Verfasst am: 28.10.2010 · Kategorien: Linux
Schlagworte: , , , , , , , ,  · Kommentare: Keine Kommentare
vor »