MacOS rsync: Zeichensalat

Ähnliches Problem wir hier.

Insbesondere beim Verwenden von „–delete“ kommt die von MacOS mitgelieferte rsync-Version nicht mit Sonderzeichen klar. Daten mit Umlauten werden jedes mal gelöscht und danach erneut übertragen. Die mitgelieferte Version (2.6.9) hat noch keinen iconv-Support zum Konvertieren der Zeichensätze.

Abhilfe schafft es rsync 3.x zu installieren: Entweder selbst kompilieren oder ein Binary von z.B. hier verwenden. Rsync liegt danach unter /usr/local/bin/.

Für den Zeichensatz des Macs gibt es ein pseudo-UTF8: „UTF8-MAC“. So klappt es dann endlich mit dem rsync (hier Mac <=> Linux):

/usr/local/bin/rsync -av --delete --iconv=UTF8-MAC,UTF8 -e ssh otto@192.168.24.27:/home/otto/data/ data/

PDF in PNG/JPG umwandeln (mit ImageMagick)

Mal wieder ein Notizzettel. Alle PDF Dateien in einem Verzeichnis in PNG umwandeln. Dabei auf korrektes Farbprofil achten, die Schriften mit „Antialiasing“ rendern und dann das PNG in 8bit Farbtiefe abspeichern:

#!/bin/bash
 
for f in `find . -name "*.pdf"`; do
echo $f
 
convert \
-profile CMYK/USWebCoatedSWOP.icc \
-profile RGB/AppleRGB.icc \
-density 480 ${f} -resize 25% \
-set filename:f '%t.%e' \
-flatten \
-colorspace rgb \
-background white \
-depth 8 \
-quality 84 \
PNG:'%[filename:f].png'
 
done;

Leicht abgewandelt geht das auch als JPG. Dafür nur die Ausgabe ändern. Der Qualityparameter findet nur bei JPEG Anwendung.

Etwas tricky ist die „density“ Anweisung: Da ich im Output 120dpi haben möchte aber dennoch gerne einen Antialias Effekt beim Schriftrendering hätte, wird das Bild 4-Fach vergrößert aufgelöst und dann um 25% verkleinert…

Die Colorprofile liegen im Unterverz. „CMYK“ und „RGB“ und können hier von Adobe heruntergeladen werden. Den Hint mit den Color-Profilen habe ich vom Linux-Magazin.

PDF komprimieren

Ghostscript Kommando zum komprimieren von PDF Dateien (natürlich im wesentlichen die enthaltenen Bilder). Muss ich mir merken:

#!/bin/bash
 
gs	-q -dNOPAUSE -dBATCH -dSAFER \
	-sDEVICE=pdfwrite \
	-dCompatibilityLevel=1.3 \
	-dPDFSETTINGS=/screen \
	-dEmbedAllFonts=true \
	-dSubsetFonts=true \
	-dColorImageDownsampleType=/Bicubic \
	-dColorImageResolution=96 \
	-dGrayImageDownsampleType=/Bicubic \
	-dGrayImageResolution=96 \
	-dMonoImageDownsampleType=/Bicubic \
	-dMonoImageResolution=96 \
	-sOutputFile=$1_shrinked.pdf \
	 $1

Quelle: ubuntuusers.de.

Screen: named sessions

Screens sind ja sehr nützlich; aber ab einer gewissen Anzahl wird es unübersichtlich:

root@vm:~$ screen -r
There are several suitable screens on:
	31176.pts-0.deploy1	(Detached)
	17565.pts-0.deploy1	(Detached)
	16079.pts-0.deploy1	(Detached)

Aber das Screen wäre nicht Screen wenn es nicht auch dafür eine Lösung hätte: Session-Namen.

Methode 1: Setzen direkt beim start des Screens

  • screen -S backup

Methode 2: Setzen aus einem laufenden Screen heraus (aktuelle Session)

  • Screen Prompt öffnen: STRG+A : (STRG und A dann doppelpunkt)
  • sessionname backup (danach Enter)
  • Screen ganz normal verlassen mit STRG+A d

Das Ergebnis sieht dann schon viel übersichtlicher aus:

root@vm:~$ screen -r 
There are several suitable screens on:
	31176.backup	(Detached)
	17565.testing	(Detached)
	16079.watch	(Detached)

Mit „screen -r backup“ wechselt man jetzt schnell in die richtige Session.

Duplicity meldet „sshbackend Failed“

Wenn Duplicity foglendes meldet:

Import of duplicity.backends.sshbackend Failed: No module named paramiko"
UnsupportedBackendScheme: scheme not supported in url: scp://root@backu...

Dann fehlt noch das Paket „python-paramiko“:

sudo apt-get install python-paramiko

Tools 2012

Einige unsortierte Tools für Ubuntu/Debian Linux die ich nicht vergessen möchte:

  • pdfshuffler – PDFs sortieren, zusammenfügen, trennen
  • gpsprune – GPS Tracks bearbeiten. Insbesondere das komprimieren (reduzieren von Punkten) von Tracks ist hiermit für mich einfacher als mit gpsbabel
  • sqliteman – SQLite Datenbank Administrator
  • gpick – Color Picker Tool

nmon: Linux Performance Monitor

Nmon ist ein gutes Tool um sich auf der Konsole schnell einen Überblick über eventuelle Performanceprobleme zu verschaffen. CPU Auslastung, Netzwerk, IO Daten/Laufwerke, Prozesse etc. werden übersichtlich und z.T. grafisch dargestellt. Es gibt sogar auch eine CPU Langzeitstatistik welche auf der Console (!) einen „schönen“ Graphen zeichnet – nicht unbedingt ein Mehrwert aber nett anzusehen ;).

Bei Ubuntu ist „nmon“ in den Standard-Repositories enthalten, bei Centos/RHEL leider nicht.

dd over ssh

Libvirt unterstützt leider noch nicht das Migrieren von VM-Images auf andere Speicherformen – z.B. von NAS auf eine lokale Partition. Dieses muss man dann halt selber machen ;).

Folgendes Kommando holt sich vom entfernten Rechner den Inhalt des dort gemounteten iSCSI Targets und packt ihn in ein lokales Volume (in diesem Fall LVM):

ssh root@cloudnode \
"dd if=/dev/disk/by-path/ip-10.10.199.4:3260-iscsi-cloud1-11-lun-0" \
| buffer -S 10m -s 64k | dd of=/dev/vmdata/vm02

Das Tool „buffer“ hat noch den Nebeneffekt, dass es Statistiken zum laufenden Transport ausgibt. Ein ähnliches Tool in dem Zusammenhang ist Pipe-Viewer (pv), welches ich auch immer schon mal erwähnen wollte.

Nachtrag: VLC WM-Streaming

Nur damit ich die Kommandos in 4 (oder 2) Jahren nicht vergesse:

#ARD
cvlc dvb-t:// :dvb-frequency=690000000 :dvb-bandwith=8 :program=256 \
--sout '#standard{access=http,mux=ogg,dst=0.0.0.0:8080}'
#ZDF
cvlc dvb-t:// :dvb-frequency=586000000 :dvb-bandwith=8 :program=514 \
--sout '#standard{access=http,mux=ogg,dst=0.0.0.0:8080}'
#Eurosport (Update)
cvlc dvb-t:// :dvb-frequency=722000000 :dvb-bandwith=8 :program=16420 \
--sout '#standard{access=http,mux=ogg,dst=0.0.0.0:8080}'

Das Paket für den VLC ohne GUI unter Ubuntu heißt „vlc-nox“. Damit wird das Signal vom DVB-T USB-Stick im Raum Düsseldorf per HTTP Port 8080 im lokalen Netz verteilt. Bei vielen Clients sollte man lieber per Multicast streamen…

Update: Es gibt doch tatsächlich noch ein paar Tour-de-France gucker heute, daher auch noch das Kommando für Eurosport.

Passwörter generieren (mit gnome/zenity)

Immer mal wieder benötige ich eine Reihe neuer Passwörter. Da ich zu faul bin diese selbst zu generieren, lasse ich das besser machen. Dafür kann man z.B. makepasswd verwenden. Für die Bereiche wofür ich die Passwörter brauche reicht mir eine übliche Entropie völlig.

Da ich Gnome benutze habe ich mich gefragt, ob es nicht eine einigermaßen elegante Möglichkeit gibt, die generierten Passwörter „grafisch“ auszugeben.

Gibt es: zenity ist ein Tool mit dem man von der Kommandozeile aus verschiedene Dialoge zur Interaktion mit Scripten etc. öffnen kann. So gibt es z.B. Messageboxen, Textabfragen etc. Eine gute Übersicht findet sich hier. Ich habe mich für die Listenansicht entschieden, da man dort einfach per Copy+Paste an den Text kommt. Hier das komplette Kommando:

makepasswd --count 24 | \
zenity --list --editable --title "Passwörter" --column Password --height 400