Bash prompt anpassen

Mittlerweile sind es sehr viele Systeme in der Clyso Cloud geworden, die den gleichen Hostnamen mit unterschiedlicher Subdomain haben.
Deshalb haben wir dem Bash Prompt mit Hilfe von hostname, sed etwas angepasst. Es wird in der Bash der hostname mit der Subdomain, aber ohne Domain Prefix angezeigt.
vim /etc/bash.bashrc

PS1=’${debian_chroot:+($debian_chroot)}u@$(hostname -f | sed -r „s/(.*).([^.]+.[^.]+)$/1/“):w$ ‚

Folgende Spezialkürzel unterstützt die Bash:
 

a an ASCII bell character (07)
d the date in „Weekday Month Date“ format (e.g., „Tue May 26“)
D{format}
the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific
time representation. The braces are required
e an ASCII escape character (033)
h the hostname up to the first `.‘
H the hostname
j the number of jobs currently managed by the shell
l the basename of the shell’s terminal device name
n newline
r carriage return
s the name of the shell, the basename of $0 (the portion following the final slash)
t the current time in 24-hour HH:MM:SS format
T the current time in 12-hour HH:MM:SS format
@ the current time in 12-hour am/pm format
A the current time in 24-hour HH:MM format
u the username of the current user
v the version of bash (e.g., 2.00)
V the release of bash, version + patch level (e.g., 2.00.0)
w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
W the basename of the current working directory, with $HOME abbreviated with a tilde
! the history number of this command
# the command number of this command
$ if the effective UID is 0, a #, otherwise a $
nnn the character corresponding to the octal number nnn
\ a backslash
[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
] end a sequence of non-printing characters

 
 

Problem: Debian Upgrade – A copy of the C library was found in an unexpected directory: '/lib/ld-2.11.3.so'

Upgrade: libc6 2.13-35 amd64
 

apt-get upgrade

 
Output:

Preparing to replace libc6:amd64 2.13-33 (using …/libc6_2.13-35_amd64.deb) …
A copy of the C library was found in an unexpected directory:
‚/lib/ld-2.11.3.so‘
It is not safe to upgrade the C library in this situation;
please remove that copy of the C library or get it out of
‚/lib‘ and try again.

 
Analysis:
Prüfung auf die Abhängigkeiten des Systems anhand von /bin/ls:

ldd /bin/ls | grep ld-linux

Output:

 /lib64/ld-linux-x86-64.so.2 (0x00007fe82018c000)

 

 ls -ltr /lib64/ld-linux-x86-64.so.2

Output:

/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.13.so

 
Solution:

mv /lib/ld-2.11.3.so /root/
mv /lib/libc-2.11.3.so /root/
mv /lib/libdl-2.11.3.so /root/
mv /lib/libm-2.11.3.so /root/
mv /lib/libpthread-2.11.3.so /root/
mv /lib/librt-2.11.3.so /root/
apt-get -f install && apt-get upgrade

files list file for package 'mysql-common' is missing final newline

files list file for package ‚mysql-common‘ is missing final newline
Problem:
Aus irgendeinem Grund ist die Datei:
/var/lib/dpkg/info/mysql-common.list
in einem inkonsistenten Zustand geraten.
Lösung:
Die Datei löschen und durch apt erstellen lassen
rm /var/lib/dpkg/info/mysql-common.list
apt-get update
apt-get upgrade

KSM – Kernel Samepage Merging (memory deduplication)

Im Linux Kernel 2.6.32 wurde ein interessantes Feature mit dem Namen Kernel Samepage Merging (memory deduplication) freigegeben.
Kernel Samepage Merging, kurz KSM (in der Vergangenheit auch als Kernel Shared Memory bekannt) ist eine Implementierung um Speicherinhalt mit den selben Inhalt zu finden und zu zusammenzuführen.
Modere Betriebssysteme nutzen intensiv Shared Memory, für Share Libraries usw. Die Virtualiserung, wie KVM, kann davon nicht profitieren. Jedes Gast-System hat den gleichen Kernel und die gleichen Bibliotheken, so sind viele Hauptspeicherseiten identisch. KSM ermöglicht es der Virtualisierung, daß  mehrere Gast-Systeme sich gleiche Hauptspeicherseiten gemeinsam teilen. KSM ist als Kernel-Daemon geschrieben, der periodisch den Speicher nach identischen Hauptspeicherseiten durchsucht und diese durch eine schreibgeschützte einzige Speicherseite ersetzt.
Wird diese Seite automatisch wieder aufgeteilt, wenn ein Update auf die Speicherseite erfolgt. Die Speicherbereiche, die KSM nach Kandidaten durchsucht werden, sind durch Userspace Applikationen, die madvice(2) benutzen,  definiert.
Laut RedHat ist es mit KVM und KSM möglich, auf einem Host mit 16 GB RAM, 52 Windows XP Gastsysteme mit 1 GB RAM lauf zu lassen.
KSM ist für KVM ursprünglich entwickelt worden, kann aber mit jedem anderen Virtualisierungssystem zusammenarbeiten.
Der KSM Damon wird über das sysfs-Dateisystem verwaltet, der Pfad ist /sys/kernel/mm/ksm/.
Mehr Informationen finden sie in der Dokumentation unter kernel.org.

Skype unter Debian 64-Bit installieren

Beim Start von Skype habe ich folgende Fehlermeldungen erhalten:
skype: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
und
skype: error while loading shared libraries: libQtDBus.so.4: cannot open shared object file: No such file or directory
Lösung des Problems ist die Installation folgender Pakete:
apt-get install lib32asound2 ia32-libs lib32gcc1 lib32ncurses5 lib32stdc++6 lib32z1 ia32-libs-gtk

FlashPlayer unter Debian installieren

Voraussetzung:
/etc/apt/source.list:
deb http://ftp2.de.debian.org/debian/ testing main contrib non-free
deb-src http://ftp2.de.debian.org/debian/ testing main contrib non-free
apt-get update
apt-get install flashplugin-nonfree
Update über:
/usr/sbin/update-flashplugin-nonfree –install

Linux über HTTP booten

Das Projekt boot.kernel.org ermöglicht das Booten einer beliebigen Linux-Distributionen über das Internet. Gegenüber dem bisherigen Verfahren über PXE bietet gPXE die Möglichkeit von HTTP- und FTP-Servern zu booten.
Zum Booten seiner Lieblingsdistribution installiert man sich einfach die Client-Software z.B. auf einen USB-Stick und kann damit jeden beliebigen Rechner mit seiner Linux-Distribution booten.

httptunnel – TCP-Verbindungen

Unter Homepage httptunnel können sie die Client- & Server-Software herunterladen.
httptunnel eignet sich für Netzwerke, die aus verschiedensten Gründen nur noch die http-Ports 80 und 443 zulassen.
Mit Hilfe von httptunnel können bliebige Ports über http getunnelt werden.
Das Konzept basiert auf einem Client-/Serverarchitektur. Die Anfrage werden an den Client über konfigurierbaren Port lokal gestellt. Der Client leitet die Anfragen an die konfigurierte IP-Adresse über Port 80 bzw. 443 weiter.
hts -F IP-Adresse:443 22
Der Server wartet auf Anfragen auf Port 80 bzw. 443 und leitet die Anfragen an den eigentlichen Dienst auf dem Server weiter.
Beispiel: httptunnel für ssh
Der ssh-Client verbindet sich auf einen lokalen Port (z.B. localhost:23333)
htc -F 23333 IP-Adresse:443
Der httptunnel-Client htc lauscht auf konfigurierten lokalen Port und verpackt eingehende Daten in http und leitet sie an die konfigurierte IP-Adresse (z.B. 192.168.0.1 an Port 443) weiter.
Damit werden die Daten über einen Port weitergeleitet, der in jedem Netz zur Verfügung steht und sich vom normalen Datenverkehr über http kaum unterscheidet. Ausnahme sind Firewall-Systeme, die Protokollanaylse betreiben. Diese kommen werden jedoch kaum eingesetzt, da der Ressourcenverbrauch momentan noch zu hoch ist.
Der httptunnel-Server hts wiederum lauscht auf dem Port 443 auf eingehenden Daten, entfernt die http-Protokoll-Anteile und leitet diese an Port 22 für ssh weiter.
Der ssh-Server auf dem gleichen Server lauscht auf Port 22 auf Daten und verarbeitet diese.

SSH Public-Key login

Anmeldung über Public/Privat-Key-Verschlüsselung
Auf dem Rechner(Quelle) von dem man sich später aus zu einem anderen Rechner(Ziel) verbinden will den private&public Key erzeugen:

ssh-keygen -t rsa -b 4096

Public Key auf Ziel-Rechner kopieren:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system

Oder, wenn ssh-copy-id nicht vorhanden ist, dann kann man die gleiche Aktion folgendermaßen ausführen:

cat ~/.ssh/*.pub | ssh user@remote-system ‚umask 077; cat >>.ssh/authorized_keys‘

oder in einzelnen Schritten hier