Tag Archives: File

Optimized Android-Apps mit Linux erstellen

Ich habe meine apps mit dem folgenden Bash-Skript optimiert, welches die Bild- & Sound-Dateien komprimiert, so dass die Apps kleiner werden und weniger Speicher verbrauchen… :-)

Habe die optimierten Apps zu meinem Update-Pack für Spica hinzugefügt -> cyanogenmod + x

 

1.) Bash-Skript in einer Textdatei unter Linux speichern (Tweak_app.sh) & Ausführrechte setzen (chmod +x Tweak_app.sh)

2.) “optipng”, “pngcrush”, “sox” installieren (z.B. für Debian: apt-get install optipng pngcrush sox)

3.) android-sdk herunterladen & sudo cp …..android-sdk/android-sdk/zipalign /usr/bin/

4.) Folgendes Verzeichnis anlegen und zu optimierende Apps darin speichern (./place-apk-here-to-batch-optimize/)

5.) Tweak-Skript ausführen (./Tweak_app.sh) -> Fertig


#!/bin/bash

LOG_FILE="apk.log"

if [ \! -f `whereis optipng | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install optipng (apt-get install optipng)"
	exit 1;
fi;
if [ \! -f `whereis pngcrush | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install pngcrush (apt-get install pngcrush)"
	exit 1;
fi;
if [ \! -f `whereis sox | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install sox (apt-get install sox)"
	exit 1;
fi;
if [ \! -f `whereis zipalign | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install zipalign (sudo cp ...android-sdk/android-sdk/zipalign /usr/bin/)"
	exit 1;
fi;	

rm -rf ./place-apk-here-to-batch-optimize/original/*
if [ -e $LOG_FILE ]; then
	rm $LOG_FILE;
fi;
touch $LOG_FILE
mkdir -p ./place-apk-here-to-batch-optimize/original
find ./place-apk-here-to-batch-optimize -iname "*.apk" | while read APK_FILE ;
do
	echo "Optimizing $APK_FILE"
	7za x -o"./place-apk-here-to-batch-optimize/original" $APK_FILE
	find ./place-apk-here-to-batch-optimize/original -iname "*.png" | while read PNG_FILE ;
		do
		if [ `echo "$PNG_FILE" | grep -c "\.9\.png$"` -eq 0 ] ; then
			optipng -o99 "$PNG_FILE"
			pngcrush -rem alla -reduce -brute "$PNG_FILE" tmp_img_file.png;
			mv -f tmp_img_file.png $PNG_FILE;
		fi
	done;
	find ./place-apk-here-to-batch-optimize/original -iname "*.ogg" | while read OGG_FILE ;
		do
        	sox "$OGG_FILE" -C 0 tmp_audio_file.ogg
        	mv -f tmp_audio_file.ogg $OGG_FILE
    	done;
	7za a -tzip "./place-apk-here-to-batch-optimize/temp.zip" ./place-apk-here-to-batch-optimize/original/* -mx9
	FILE=`basename "$APK_FILE"`
	DIR=`dirname "$APK_FILE"`
	mv -f ./place-apk-here-to-batch-optimize/temp.zip "$DIR/optimized-$FILE"
	zipalign -v -c 4 "$DIR/optimized-$FILE";
	ZIPCHECK=$?;
	if [ $ZIPCHECK -eq 1 ]; then
		echo "ERROR $FILE" >> $LOG_FILE;
		#rm "$DIR/optimized-$FILE"
	elif [ $ZIPCHECK -eq 0 ]; then
		echo "OK $FILE" >> $LOG_FILE;
	else
		echo "ERROR $FILE" >> $LOG_FILE;
		#rm "$DIR/optimized-$FILE"
	fi;
	rm -rf ./place-apk-here-to-batch-optimize/original/*
done;

C-Programm – neueste Datei eines Verzeichnisses (Linux)

Unter Linux kann man mit dem folgendem Befehl anzeigen lassen, welche die neuste Datei ist…

ls -1tr --group-directories-first /path/to/dir/ | tail -n 1

… habe gerade versucht dies mit C zu Programmieren, ggf. findest man noch Fehler im Skript!!! :-)

PS: weitere Infos zum arbeiten mit Dateien und Verzeichnissen findest du hier -> openbook.galileocomputing.de/c_von_a_bis_z/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>

time_t st_mTime(char *dir_name) {
    struct stat attribut;

    // printf("%s\n", dir_name); /* Test Ausgabe */
    if (stat(dir_name, &attribut) == -1) {
        fprintf(stderr, "... stat-Fehler\n");
        exit(1);
    }
    if (attribut.st_mode & S_IFREG) {
        return attribut.st_mtime;
    } else {
        return 0;
    }
}

int main(int argc, char *argv[]) {
    int length;
    char dir_name[1000];
    char dir_name_1[1000];
    char dir_name_2[1000];
    DIR *dir;
    time_t t1, t2;
    struct dirent *dir_info;

    if (argc>2) {
        fprintf(stderr, "Es ist nur ein Argument (Verzeichnis) erlaubt!!!\n");
        exit(1);
    }
    if (argc==2) {
        strcpy(dir_name, argv[1]);
    } else {
        strcpy(dir_name, ".");
    }

    if ((dir = opendir(dir_name)) == NULL) {
        fprintf(stderr, "kann %s nicht öffnen", dir_name);
        exit(2);
    }

    length=strlen(dir_name);
    if ((dir_name[length]) != "/") {
        strcat(dir_name, "/");
    }

    while ((dir_info = readdir(dir)) != NULL) {
        strcpy(dir_name_1, dir_name);
        strcat(dir_name_1, (char*)dir_info->d_name );

        while ((dir_info = readdir(dir)) != NULL) {
            strcpy(dir_name_2, dir_name);
            strcat(dir_name_2, (char*)dir_info->d_name );

            t1=st_mTime(dir_name_1);
            t2=st_mTime(dir_name_2);
             if(t1!=t2) {
                if(t1>t2) {
                    strcpy(dir_name_1, dir_name_1);
                } else if (t1

logo_icinga

Icinga

In diesem HowTo zeige ich wie du einen Monitoring-Server mit Icinga aufsetzt, dazu folgen einige Beispiele und eine optimierte Konfiguration.


Was ist Icinga?

Icinga ist ein “Fork” des wohlbekannten Überwachungssystems Nagios. Eine 100%ige Kompatibilität mit den internen Strukturen des letzteren erlaubt es Ihnen, mit Icinga alle Plugins und Addons zu benutzen, die von verschiedenen Firmen und der großen Community entwickelt wurden bzw. werden. Der Icinga-Dienst selbst läuft als eigenständiger Prozess mit eingeschränkten Rechten auf dem Server und lässt sich über die textbasierenden Konfigurationsdateien konfigurieren. Zudem läuft ein Web-Server (Apache2 + mod_cgi + mod_php5), um auf CGI basierende Web-Schnittstelle zum Abfragen der gesammelten Daten zuzugreifen. Wer bereits jetzt einen Blick auf die Software werfen will, sollte sich die Demo (User: guest, Passwort: guest) anschauen.


Windows-Server: Für das Monitoring von Windows-Servers kannst du die Software “NSClient++” einsetzten, in welcher nur das NRPE-Modul aktiviert werden muss, so dass Abfragen (Checks) serverseitig mit eingeschränkten Rechten ausgeführt werden und vom Monitoring-Server abgefragt werden können.

Linux-Server: Auch bei den Linux-Servern kommt ein NRPE-Server zum Einsatz, welcher die Abfragen (Checks) ebenfalls lokal ausführt und die Ergebnisse dem Monitoring-Server zur Verfügung stellt. Im laufe des HowTos, werde ich noch zeigen, wie man diesen installiert und konfiguriert.

SNMP: Einige Netzwerkkomponenten z.B. der Datendurchsatz von einigen Netzwerk-Schnittstellen, Temperaturwerte u.s.w. … können mittels SNMP abgefragt werden. Für diesen Zweck werden noch einige Erweiterungen (Plugins) für Icinga installiert.


Welches Betriebssystem?

In meinen Test nutze ich “Debian” in der aktuellen Version mit dem Codenamen “Lenny” . “Icinga” liegt in den nun offiziellen Backports bereits als vorkompiliertes Paket in den  Softwarequellen vor und kann daher leicht installiert und aktualisiert werden.


Vorbereitung der Umgebung

Betriebssystem
Ich nutze eine Standard Distribution von Debian (Lenny) mit minimalen vorinstallierten Anwendungen. Die Distribution bringt ein breites Spektrum am Software mit, so dass als erstes ein SSH-Server (openssh-server), Mailserver (postfix) und ein Webserver (apache2) nachinstalliert wurden. Wer sich mit der Paketverwaltung von Debian noch nicht so gut auskennt, sollte sich zuvor folgenden Post-Post durchlesen: suckup.de/blog/2010/02/13/aptitude-dpkg/


Monitoring-Server
Die Installation von Icinga wird über die Paketverwaltung des Betriebssystems realisiert, dazu müssen jedoch die zuvor erwähnten Backports mit im System aufgenommen werden.

echo 'deb http://backports.debian.org/debian-backports lenny-backports main' >> /etc/apt/sources.list
echo 'Package: *' >> /etc/apt/preferences
echo 'Pin: release a=lenny-backports' >> /etc/apt/preferences
echo 'Pin-Priority: 200' >> /etc/apt/preferences
apt-get updat

Installiert wurden die folgenden Pakete und dessen Abhängigkeiten.:

aptitude install icinga icinga-doc nagios-snmp-plugins nagios-nrpe-plugin
Hinweis: Bitte darauf achten, dass Nagios3 nicht mit installiert wird, da dies vom nagios-nrpe-plugin empfohlen wird.

Die Pakete „nagios-plugins“, „nagios-plugins-standard“ – die Nagios-Plugins werden ebenfalls automatisch als Abhängigkeit per Paketverwaltung installiert, und werden bei Ininga automatisch in der folgenden Konfigurations-Datei integriert.


Konfiguration von Icinga

Als erstes zeige ich anhand von einem Schaubild, wie die Konfiguration später aussieht. In dem Schaubild sind jedoch nicht alle Konfigurations-Dateien vorhanden, dies dient nur der Veranschaulichung.


konfig_1

konfig_2

Hauptkonfigurationsdatei: icinga.cfg
In der Hauptkonfigurationsdatei werden Basisparameter der Monitoring-Software festgelegt. Da bereits die Nagios-Plugins, dass heißt die einzelnen Prüf-Programme (Checks) für z.B. SSH, SMTP, FTP u.s.w. über die  Paketverwaltung des Betriebssystems installiert wurden, wurden die bereits mit folgender Zeile mit aufgenommen.

cfg_dir=/etc/nagios-plugins/config/

Des-weiteren gibt die nächste Zeile an, welches Verzeichnis von Icinga rekursiv nach Dateien, welche auf .cfg enden, durchsucht wird, so dass weitere Konfigurations-Dateien einfach angelegt werden können.

cfg_dir=/etc/icinga/objects/

Bisher haben wir noch nichts an der Konfiguration geändert, ich habe die angesprochen Zeilen nur erwähnt, um die Konfiguration besser verstehen zu können. Aus dem selben Grund, stelle ich hier einmal kurze die Verzeichnisstruktur (tree) der Konfiguration dar.:

|– cgi.cfg
|– commands.cfg
|– objects
|   |– contact
|   |   |– contactgroups.cfg
|   |   |– contacts.cfg
|   |   `– contacts_templates.cfg
|   |– hosts
|   |   |– intern
|   |   |   |– linux_server.cfg
|   |   |   |– windows_server.cfg
|   |   |   |– drucker.cfg
|   |   |   `– […]
|   |   |– host_templates.cfg
|   |   |– hostextinfo.cfg
|   |   |– hostgroups.cfg
|   |   |– kunden
|   |   |   |– kunde1.cfg
|   |   |   |– kunde2.cfg
|   |   |   `– […]
|   |– services
|   |   |– services_host.cfg
|   |   `– services_templates.cfg
|   `– timeperiods.cfg
|– htpasswd.users
|– icinga.cfg
|– resource.cfg

Tipp: Um über die Weboberfläche per CGI Befehle auszuführen, müssen wir “check_external_commands” von “0” auf “1” umstellen und dem Webserver (CGI) die Rechte auf folgende Datei geben.
check_external_commands=1

dpkg-statoverride --update --add nagios www-data 660 /var/lib/icinga/rw/icinga.cmd


CGI-Konfigurationsdatei: cgi.cfg
In dieser Datei werden die Zugriffsrechte für die zuständigen Benutzer und einige Einstellungen bezüglich der Weboberfläche festgelegt.


Kommando-Konfigurationsdatei: commands.cfg
Alle Abfragen welche nicht bereits mit den Nagios-Plugins installiert wurden, z.B. speziell entwickelte Skripte oder Kommandos zum Senden von SMS / E-Mails werden in dieser Datei definiert.

cd /etc/icinga/
wget http://suckup.de/commands.txt
mv commands.txt commands.cfg


Objekt-Konfigurationsdateien: objects/*.cfg
Kommen wir zur Host- / Servicekonfiguration und dessen Verzeichnisstruktur, um mit Vorlagen und Vererbungen zu arbeitet, gehen wir wie folgt vor.:

Bitte nicht einfach alle Befehle nacheinander per “Copy&Past” einfügen, überlege was du tust und falls du bereits etwas an Icinga konfiguriert hast, sicher diese Datei vorher!!!
cd /etc/icinga/objects/

rm *.cfg
wget http://suckup.de/timeperiods.txt
mv timeperiods.txt timeperiods.cfg

rm timeperiods_icinga.cfg
mkdir contact/ doc/ hosts/ services/

rm extinfo_icinga.cfg generic-host_icinga.cfg generic-service_icinga.cfg  hostgroups_icinga.cfg localhost_icinga.cfg services_icinga.cfg  contacts_icinga.cfg
cd contact/

wget http://suckup.de/contacts_templates.txt
mv contacts_templates.txt  contacts_templates.cfg

wget http://suckup.de/contacts.txt
mv contacts.txt  contacts.cfg

wget http://suckup.de/contactgroups.txt
mv contactgroups.txt contactgroups.cfg

cd ..
Tipp: In der Datei „contacts.cfg“ kannst du nun neue User eintragen und diese in der Datei  „contactgroups.cfg“ zu einer Gruppe zusammenfassen.
cd hosts/
mkdir intern/ kunden/

wget http://suckup.de/host_template.txt
mv host_template.txt host_template.cfg

wget http://suckup.de/hostgroups.txt
mv hostgroups.txt hostgroups.cfg
Tipp: In der Datei „hostgroups.cfg“ werden den Hostgruppen z.B. allen Windows-Server bestimmte Services zugeordnet, so dass in der Hostkonfiguration [intern/ und kunden/] nur noch die Hostgruppe zugeordnet werden muss, um alle zugeordneten Services zu checken.
wget http://suckup.de/hostextinfo.txt
mv hostextinfo.txt hostextinfo.cfg
Tipp: Um die „alte“ hostmap zu verwalten, kann man sich folgendes kleine Perl-Skript herunterladen, damit hat man eine GUI in der man die bereits eingetragenen hosts auf der Karte positionieren kann. Einfach mal bei google nach „nagios-2d-editor“ suchen.
cd intern/

wget http://suckup.de/switch.txt
mv switch.txt switch.cfg

wget http://suckup.de/linux_server.txt
mv linux_server.txt linux_server.cfg

cd ..
cd kunden/

wget http://suckup.de/kunde1.txt
mv kunde1.txt kunde1.cfg

cd ../../services/

Die hier zur Verfügung gestellten Dateien (hostextinfo.cfg, switch.cfg, linux_server.cfg, kunde1.cfg) müssen natürlich noch angepasst, werden (Hostnamen, Domain, Kunden-Name, IP-Adresse, Abhängigkeiten…) und halten einzig der Veranschaulichung der Konfiguration her. :-)

wget http://suckup.de/services_templates.txt
mv services_templates.txt services_templates.cfg

wget http://suckup.de/services_host.txt
mv services_host.txt services_host.cfg

Auch die hier zur Verfügung gestellt Datei (services_host.cfg) muss im Produktiv-System noch angepasst werden, weitere hilfreiche Tipps befinden sich als Kommentare in den Dateien selbst.

Wer bisher jeden Host und Service komplett in die „hosts.cfg“ und „services.cfg“ geschriben hat, kann mit der zuvor erklärten Methode zirka 90% der Konfiguration einsparen, zudem wird das ganze übersichtlicher und es schleichen sich weniger Fehler ein.


konfig_3

Tipp: Wenn du das Passwort, welches du bei der Installation angegeben hast, vergessen solltest, kannst du es per “htpasswd” neu setzten und auch neue User anlegen, dazu musst du neuen Usern die passenden Rechte in der “cgi.cfg”-Datei zuweisen .


Nagios-Plugins

Damit Icinga in der Lage ist Server (Dienste) und andere Ressourcen zu überprüfen, wurden die verschiedene Plugins bereits bei der Vorbereitung der Monitoring-Umgebung installiert, jedoch fehlten ggf. noch Plugins welche wir zusätzlich verwenden möchten, um diese mit in die Konfiguration auszunehmen, gehen wir wie folgt vor.:

1.) In dem folgendem Verzeichnis legen wir das Check-Programm ab…

cd /usr/lib/nagios/plugins/

2.) Tragen das dazu passende Kommando in dieser Datei ein…

vim /etc/icinga/commands.cfg

3.) Fügen ggf. eine neue Gruppe hinzu oder nutzen eine bestehende und fügen den ensprechenden Service_Check hinzu…

vim /etc/icinga/objects/hosts/hostgroups.cfg

4.) Nun können wir die Gruppe in allen Hosts verwenden…

vim /etc/icinga/objects/hosts/[intern|kunden]/*.cfg


Performancedaten darstellen: PNP

Als nächstes wollen wir einige Performance-Daten visuell darstellen, dafür installieren wir PNP4NAGIOS. Wie dieses Programm funktioniert findest du weiter unten…

Einige Abhängigkeit wurden als erstes nachinstalliert.

aptitude install g++ make php5 php5-gd rrdcollect rrdtool librrdp-perl librrds-perl

Als nächstes wurde der Quellcode heruntergeladen, entpackt und für das laufende System konfiguriert.

cd /usr/src/
VERSION=0.6.6
wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-$VERSION.tar.gz
tar -xvzf pnp4nagios-$VERSION.tar.gz
cd pnp4nagios-$VERSION
./configure

Danach wurden die in C geschriebenen Komponenten kompiliert.

make all

Und mit dem folgenden Befehlen wurden die Dateien (Programm, Konfiguration, zusätzliche Webserver-Konfiguration…) an die passende Stelle im Dateisystem kopiert.
make install && make install-webconf && make install-config && make install-init

Die Software wurde nun noch in Icinga integriert, dafür muss die “icinga.cfg“-Datei wie folgt angepasst werden.

# Performance-Daten aktivieren
process_performance_data=1
# Service Performance-Daten
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file
# Host Performance-Daten
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

In der “commands.cfg” Konfiguration müssen zudem zwei neue Kommandos eingefügt werden, sofern diese nicht bereits vorhanden sind.

define command{
command_name        process-service-perfdata-file
command_line        /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}
define command{
command_name        process-host-perfdata-file
command_line        /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
mv /usr/local/pnp4nagios/etc/npcd.cfg-sample /usr/local/pnp4nagios/etc/npcd.cfg

mv /etc/httpd/conf.d/pnp4nagios.conf /etc/apache2/conf.d/pnp4nagios.conf

In folgender Datei muss der Pfad zur passwd-Datei bearbeitet werden:

vim /etc/apache2/conf.d/pnp4nagios.conf

AuthUserFile /etc/icinga/htpasswd.users

rmdir /etc/httpd/conf.d && rmdir /etc/httpd/ && apache2ctl restart
Tipp: Um nun zu prüfen, ob alle Voraussetzen erfüllt sind, rufen wir einfach die entsprechend Webseite auf: z.B.: http://icinga.test.de/pnp4nagios/

Schlussendlich wird PNP mit folgender Konfigurationszeile in einer Host-Definition bzw. dessen Vorlage in die Weboberfläche integriert:

action_url     /pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$


pnp4nagios

Quelle: (3)

PNP4nagios Funktionsweise
PNP wird wie bereits zuvor beschrieben im Bulk-Modus (mit NPCD) betrieben. Dies bedeutet, dass die Performance-Daten in einem Verzeichnis gesammelt werden und dann von dem NPCD (Nagios Performance Data C Daemon) Dienst verarbeitet werden. Gegenüber dem Standard-Modus hat dieser den entscheidenden Vorteil, dass das Programm zur Verarbeitung der Performance-Daten nicht bei jeder Überprüfung (Check) ausgeführt werden muss und somit Systemressourcen eingespart werden.


pnp4nagios_config

Quelle: (3)

Monitoring-Client

Der „Nagios Remote Plugin Executor“ (NRPE) wird benötigt, um lokale Ressourcen auf den zu überwachenden Servern für den Nagios-Server bereitzustellen. Der NRPE-Dienst führt diese Überprüfungen wiederum über lokale Plugins aus. Unter Debian kann man den NRPE-Server mit folgendem Befehl installieren:

aptitude install nagios-nrpe-server nagios-plugins nagios-plugins-basic

Nun geben wir noch an, welche IP-Adresse auf die Daten zugreifen darf, also die IP-Adresse vom Monitoring-Server.

vim /etc/nagios/nrpe.cfg

allowed_hosts=X.X.X.X

Einige Kommandos sind bereits in der Datei nrpe.cfg definiert, diese Kommentieren wir jedoch nun aus und schreiben alle unsere Kommandos in die folgende Datei.

vim /etc/nagios/nrpe_local.cfg

z.B.:

# check system
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
command[check_syslog]=/usr/lib/nagios/plugins/check_procs -C syslogd -c 1:1
command[check_retro]=/usr/lib/nagios/plugins/check_procs -C retroclient -w 1:20 -c 1:20
command[check_process]=/usr/lib/nagios/plugins/check_procs -C process.pl -w 1:1 -c 1:1
command[check_mailq]=/usr/lib/nagios/plugins/check_mailq -M postfix -w 250 -c 1000
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 300
command[check_cron]=/usr/lib/nagios/plugins/check_procs -C cron -w 1:20 -c 1:20
command[check_bacula-fd]=/usr/lib/nagios/plugins/check_procs -C bacula-fd -w 1:1 -c 1:1
command[check_freshclam]=/usr/lib/nagios/plugins/check_procs -C freshclam -w 1:1 -c 1:1
command[check_amavisd]=/usr/lib/nagios/plugins/check_procs -u amavis -a amavisd -w 2:4 -c 1:5
command[check_clamd]=/usr/lib/nagios/plugins/check_procs -C clamd -w 1:5 -c 0:6
command[check_mysql]=/usr/lib/nagios/plugins/check_mysql -H 127.0.0.1 -u nagios -p test123
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh -H 127.0.0.1
command[check_amavis_port]=/usr/lib/nagios/plugins/check_tcp -H 127.0.0.1 -p 10025
command[check_spamd]=/usr/lib/nagios/plugins/check_procs -C spamd -c 1:10

# check disks
command[check_disk_root]=/usr/lib/nagios/plugins/check_disk -w 1000 -c 750 -p /
command[check_disk_tmp]=/usr/lib/nagios/plugins/check_disk -w 200 -c 100 -p /tmp
command[check_disk_var]=/usr/lib/nagios/plugins/check_disk -w 1000 -c 750 -p /var
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 80% -c 25%


nrpe

Quelle: (4)

Qualitätssichernde Maßnahmen

Um die syntaktische Korrektheit der Konfiguration zu prüfen,  geben wir folgenden Befehl ein:

icinga -v /etc/icinga/icinga.cfg
Tipp: In größeren Umgebungen kann es von Vorteil sein, die einzelnen Netzwerkkomponenten mit einem eindeutigem DNS-Hostnamen eingetragen.


Anhang A

Literaturverzeichnis

(1) [nagios-buch] Wolfgang Barth, Nagios System- und Netzwerk-Monitoring, Open Source Press, 2008
(2) [icinga-webseite] Icinga, http://www.icinga.org
(3) [pnp-webseite] PNP, http://docs.pnp4nagios.org
(4) [nagios-doku] Nagios3, http://nagios.sourceforge.net/docs/3_0/


Anhang B

Glossar

CGI-Programme/Skripte - Das Common Gateway Interface (zu deutsch etwa „Allgemeine Vermittlungsrechner-Schnittstelle“) kann Webseiten dynamisch generieren. In Nagios werden die Statusberichte in der Weboberfläche mittels CGI-Programmen erstellt.

DNS - Der Domain Name Service ist ein Dienst zur Auflösung von Hostnamen in IP-Adressen und umgekehrt.

PING - Dies ist ein Programm, mit dem überprüft werden kann, ob ein bestimmter Host erreichbar ist und welche Zeit das Routing zu diesem hin und wieder zurück in Anspruch nimmt.

SMTP - Das Simple Mail Transfer Protocol (zu deutsch etwa „Einfaches E-Mail-Sendeverfahren“) ist ein Protokoll der Internetprotokollfamilie, das zum Austausch von E-Mails in Computernetzen dient.

SNMP - Das Simple Network Management Protocol (zu deutsch etwa „einfaches Netzwerkverwaltungsprotokoll“) dient zur Verwaltung von Netzwerkgeräten. Alle Parameter die über das Netzwerk ausgelesen und gesetzt werden können sind in der Management Information Base von dem jeweiligen Gerät eingetragen.


Anhang C

Abhängigkeitsprüfungen

Das nachfolgende Bild zeigt ein Diagramm von Netzwerkkomponenten und deren Abhängigkeiten, die von Nagios überwacht werden.
Switch2 ist in diesem Beispiel gerade nicht mehr erreichbar und somit in einen Problemzustand gewechselt. Nagios muss feststellen, ob der Host selber down ist oder nur nicht mehr erreichbar ist, weil eine weitere Netzwerkkomponente zuvor ausgefallen ist.
Es werden parallele Prüfungen für die direkten Nachbarn ausgelöst. Monitor1 und File1 werden zudem gleichzeitig parallel überprüft, da Switch2 von diesen abhängig ist.


nagios

Quelle: (4)

Anhang D

Topologie eines Beispielnetzwerks


nagios2

Quelle: (1)

1.) ein kritischen Zustand eines Dienstes wird festgestellt
2.) der dazu passende Host wird überprüft und ist nicht erreichbar
3.) die Abhängigkeiten des Hosts werden parallel überprüft
4.) der switch1 ist noch vom Nagios-Server (nagios) aus zu erreichen
5. – 6.)    die nachfolgenden Netzwerkkomponente sind momentan nicht erreichbar

In diesem Beispiel würde nur eine Benachrichtigung für den ausgefallenen switch2 generiert werden.

spritemap

Webseiten komprimieren

Zurück zur “Webseiten beschleunigen” – Übersicht

2.) Komprimierung

So langsam möchte ich auf die Fragen, welche bisher aufgetaucht sein könnten eingehen und mit der Beschleunigung der Webseite anfangen, daher starten wir mit der Komprimierung.

Alle neuen Browser (ab IE6) unterstützen komprimierte Dateien, man kann sich dies so ähnlich vorstellen, wie in dem diesem Proxy-Beispiel, wo die Dateien serverseitig komprimiert werden und vom Client, in unserm Fall nun der Browser wieder dekomprimiert werden. Aber dazu kommen wir gleich. Das Problem ist, dass Bilder bereits komprimiert sind und falls diese im Nachhinein noch einmal passiert, diese sogar größer werden können als zuvor, daher versucht man diese bereits bei der Bereitstellung in der optimalen Dateigröße anzubieten, zudem sollte man vermeiden, dass zu viele kleine Dateien vom Server geladen werden müssen, da zu viele Verbindungen bzw. Anfragen sich auch seht negativ auf die Performance einer Webseite auswirken.

2.1) Bilder komprimieren

2.1.1) Bilder Sprites


spritemap
spritemap



Durch viele kleine Icons / Menü-Bildern kommen viele Serveranfragen zustande, welche man durch ein größeres Bild, welches dann wiederum mit css so bearbeitet werden kann, dass man bestimmte Bildabschnitte ansprechen kann, ersetzten könnte.


Nun noch ein kleines Beispiel zur Verdeutlichung:
www.websiteoptimization.com/speed/tweak/css-sprites


Es folgt noch ein Beispiel, um das Prinzip zu verstehen…


alte CSS-Regeln:

#header {background: url(bild1.jpg) top left repeat-x; height:80px;}
ul.menu li {background: url(bild2.jpg) top left repeat-x; height:15px;}

bild1.jpg und bild2.jpg sind jeweils 1px breit. Waf der folgenden Webseite → Sprite-Generator ← kann man diese beiden Dateien nun zu einer Sprite-Datei zusammenfassen und herunterladen bzw. auf Webserver hochladen.


Dieses Sprite-Bild wird nun für alle Elemente, die einen im Sprite enthaltenen Hintergrund haben eingefügt:

#header, ul.menu li {background-image:url(bg_sprite.png);}


Mithilfe der im Generator angegebenen Regeln, werden die alten CSS-Regeln ersetzen:

.sprite-bild1 { background-position: 0 -30px; }
.sprite-bild2 { background-position: 0 -110px; }

…wird zu…

#header {background-position: 0 -30px; background-repeat: repeat-x;}
ul.menu li {background-position: 0 -110px; background-repeat: repeat-x;}


Mit zwei Bildern macht dies noch nicht so viel Sinn, aber ich denke das reicht zum Verdeutlichen des Prinzipes.


2.1.2) PNG-Bilder komprimieren

VOR DER ÄNDERUNG/OPTIMIERUNG AN IRGENDWELCHEN BILDERN, BITTE EIN BACKUP ERSTELLEN!!!

Das folgende HowTo zeigt wie man png-Bilder direkt auf dem Server verkleinern kann, ohne dessen Qualität zu verringern.

sudo bash
aptitude install optipng
optipng -o7 bild.png  -out bild_new.png

z.B.:

2673 24. Jun 15:50 free-source_bottom.png
1297 27. Jul 01:55 free-source_bottom_new.png

folgender Befehl komprimiert alle Bilder im Verzeichnis, welche auf .png enden ->

optipng  -o7 *.png

oder man sucht mittels “find” die entsprechenden Bilder rekursive aus der gesamten Verzeichnisstruktur heraus

find . -iname '*.png' -exec optipng -o7 {} \;

Wichtig: um noch ein Backup der original Datei zu behalten kannst du den Parameter “-k” verwenden

Alternativ kann man die Größe von png-Bildern auch mit pngcrush optimieren, welches auf die selbe einfache Weise installiert werden kann.

sudo bash
aptitude install pngcrush
pngcrush -rem alla  -reduce -brute original.png optimized.png

Alternativ kann man dies auch wieder rekursiv im aktuellen Verzeichnis alle png-Bilder mittels “pngcrush” bearbeiten lassen.

for file in `find . -name "*.png"`;do
echo $file;
pngcrush -rem alla -reduce -brute "$file" tmp_img_file.png;
mv -f tmp_img_file.png $file;
done;

z.B.

Original: 8,9K
Optipng: 7.6K
Optipng + PNGcrush: 7.4K

Dies fällt bei größeren Bildern mehr ins Gewicht, jedoch kann auch die Komprimierung von solchen Logos etc. schon einige hundert MB im Monat einsparen, zumal PNG in Gegensatz zu JPEG eine verlustfreie Neukomprimierung unterstützt.


Link:
optipng.sourceforge.net
pmt.sourceforge.net


weitere Optimierungsmöglichkeiten für PNG-Bilder:
www.smashingmagazine.com


2.1.3) JPEG-Bilder komprimieren

VOR DER ÄNDERUNG/OPTIMIERUNG AN IRGENDWELCHEN BILDERN, BITTE EIN BACKUP ERSTELLEN!!!

Wie bereits zuvor beschrieben, können auch jpg-Bilder verkleinert werden.

aptitude install jpegoptim
jpegoptim --force  logo.jpg

z.B.:

24640 24. Jun 14:28 logo.jpg
22448 27. Jul 02:20 logo.jpg

Hier könnte man, wie bereits zuvor beschrieben, mittels “find” die entsprechenden Bilder heraussuchen und diese verkleinern lassen.

find . -iname '*.jpg' -exec jpegoptim --force {} \;


Link:
jpegoptim.sourceforge.net


Eine weitere Möglichkeit jpg-Dateien unter Debian/Ubuntu zu optimieren, welche nach meinen ersten Tests jedoch genauso gut funktioniert wie jpegoptim.

sudo bash
aptitude install libjpeg-progs
jpegtran -copy  none -optimize -perfect logo.jpg > logo_jpegtran.jpg


weitere Optimierungsmöglichkeiten für JPEG-Bilder:
www.smashingmagazine.com


2.1.4) Bilder komprimieren – Online

Auf der folgenden Webseite, kannst du deine Bilder auch online verkleinern lassen…

developer.yahoo.com

… der nachfolgende Link ist nur für PNG-Bilder geeignet …

gracepointafterfive.com/punypng/



example
example



… und hier noch ein Link, wobei hier größtenteils an der Qualität der Bilder geschraubt wird…

tools.dynamicdrive.com


Als alternative zu all dieses serverseitigen Möglichkeiten kannst du deiner Bilder natürlich auch mit einem Bildbearbeitungsprogramm (z.B. Paint.NET) öffnen und z.B. optimiert für Webseiten abspeichern.


2.2) JavaScript/CSS komprimieren

2.2.1) JavaScript/CSS komprimieren – serverseitig

Hier werde ich kurz zeigen wir du deine JS- und CSS-Dateien nicht nur komprimieren kannst, um die Ladegeschwindigkeit deiner Webseite zu verbessern, sondern auch noch optimierst, so dass diese schneller ausgeführt werden. Der CSS-Kompressions-Algorithmus verwendet zudem einen Satz von fein aufeinander abgestimmten reguläre Ausdrücke, um die CSS-Datei zu komprimieren.


Dateien kombinieren: (optional)


cat datei1.js > alle_dateien.js
cat datei2.js >> alle_dateien.js
cat datei3.js >> alle_dateien.js


cd /usr/src/
wget  http://yuilibrary.com/downloads/yuicompressor/yuicompressor-2.4.2.zip
unzip yuicompressor-2.4.2.zip
rm yuicompressor-2.4.2.zip
cd yuicompressor-2.4.2build
sudo aptitude install sun-java6-bin
java -jar yuicompressor-2.4.2.jar --type js -o  combined.js alle_dateien.js alle_dateien_klein.js

dies kann man übrigens auch mit CSS-Daten machen…

java -jar yuicompressor-2.4.2.jar --type css -o  combined.css alle_dateien.css alle_dateien_klein.css
Bei mir hat das kombinieren von einigen JS- und CSS-Dateien negative Auswirkungen gehabt, so haben einige JS nicht mehr funktioniert, zudem sollte man bedenken, dass einige Dateien nicht auf jeder Webseite benötigt werden und daher auch ruhig später geladen werden können, sobald ein Besucher z.B. auf Kommentare klickt.


Download:
Download – yuilibrary.com


Link:
How does it work? – developer.yahoo.com


Alternativ kann man CSS-Dateien auch sehr bequem mit “csstidy” komprimieren.

sudo aptitude install csstidy
csstidy mycssfile.css  myoutputfile.css

oder man lässt sich das Ergebnis erstmal auf dem Bildschirm ausgeben

csstidy  mycssfile.css

z.B.:

border-width: 1px;
border-style: solid;
/*Dies ist ein Kommentar*/
border-color: gray;

… wird zu …

border: 1px solid gray;


Link:
csstidy.sourceforge.net


2.2.2) JavaScript/CSS komprimieren – Online

Alternativ kann man, wenn man z.B. keinen V- oder Root-Server hat um zusätzliche Software zu installieren, die Dateien Online komprimieren zu lassen.


z.B.: für Javascript

Online Komprimierung – yui.2clics.net

shrinksafe.dojotoolkit.org

javascriptcompressor.com

ggf. kann man seine JS-Datei auch vorher überprüfen lassen um Fehler auszuschließen

www.jslint.com


z.B.: für CSS

www.cleancss.com

www.cssoptimiser.com

www.cssdrive.com


Eine weitere Methode besteht darin, die Daten selber gar nicht zu verändern, sondern diese direkt und nach einer bestimmten Zeit neu von einem Server komprimieren zu lassen, diese Methode hat daher auch wieder nachteiligen Einfluss auf die Ladegeschwindigkeit, da ein weitere Request, DNS-Lookup usw. hinzukommt. Jedoch kann man an diesen Online-Dienst auch mehrere CSS- bzw. JS-Dateien gleichzeitig übergeben. Ob dies wirklich die Performance steigern kann müsste man im Einzellfall ausprobieren.


z.B.:

http://reducisaurus.appspot.com/css?url1={{erste_URL}}&url2={{zweite_URL}}&url3={{dritte_URL}}&max-age={{cach_in_sekunden}}


Link:

code.google.com/p/reducisaurus/


2.3) Apache gzip-Kompression

Serverseitige Komprimierung und somit eine Reduzierung der zu Übertragungen Datenmengen von 40 – 70 % sind hier zu erreichen, zudem kannst du mithilfe der folgenden Konfigurationen gleich mehrere Webseiten, welche auf dem selben Server laufen optimieren.


ohne gzip-Kompression:


http_request
http_request



mit gzip-Kompression:


http_request_compressed
http_request_compressed



Aktiviere mod_deflate (gzip) – serverseitig

Diese Art der Komprimierung macht natürlich nur bei Dateien Sinn, welche auch komprimiert werden können z.B. HTML, CSS oder Javascript …


a2enmod deflate

… dieser Befehl kann unter anderen Distributionen anders aussehen z.B.: BSD

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so


Kommen wir zur Konfiguration des Modules, wir können “mod_deflate” in folgender Datei bearbeiten ->


vim /etc/apache2/mods-enabled/deflate.conf


#SetInputFilter DEFLATE
SetOutputFilter DEFLATE

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|jpg|ico|png|pdf|ipk|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:mpg|mpeg|flv|wmv|wma|ogg|avi|mov|mp3|mp4|swf)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|tar|t?gz|cab|zip|t?bz2|iso|bz2|sit|jar|rar|rm|rpm|deb)$ no-gzip dont-vary


Header append Vary User-Agent env=!dont-vary
Header append Vary User-Agent

Header set Vary *


DeflateCompressionLevel 6


Mithilfe von gzip (DeflateCompressionLevel) kann man verschneide Kompressions-Level einstellen, wobei 1 die schnellsten Komprimierung (weniger Kompression) und 9 die langsamste Komprimierung (beste Kompression) ist. Die Standard-Kompressions-Level ist 6. da eine zu hohe Kompression auf Kosten der der Systemleistung geht, ggf. kann man diesen Wert anpassen, wenn man noch genügend Ressourcen frei hat.

Nun müssen wir unsern Webserver neu-starten, um die Konfiguration zu übernehmen.

/etc/init.d/apache2 restart

und test…

gidnetwork.com/tools/gzip-test


Ausgabe: http://gedichte.voku-online.de/news.php


Web page compressed? → Yes
Compression type? → gzip
Size, Markup (bytes) → 52,039
Size, Compressed (bytes) → 9,934
Compression → % 80.9


Link:
httpd.apache.org/docs/2.0/mod/mod_deflate


2.3.2) Aktiviere mod_gzip – serverseitig

Wer noch apache und nicht apache2 verwendet sollte “mod_gzip” anstelle von “deflate” ansehen, jedoch werde ich nicht weiter auf die veraltete Apache-Version eingehen, wenn noch jemand den alten “Apache Web-Server” einsetzt, soll man ggf. ein Update auf apache2 durchführen…


“Nur unter Apache 1.3 ist “mod_gzip” effektiver ab “Apache 2.x” sollte man “mod_deflate” verwenden.”

www.howtoforge.com/linux_apache_mod_gzip


2.3.3) Aktiviere gzip – manuell

Es gibt auch noch die Möglichkeit Dateien serverseitig im Vorhinein zu komprimieren und in einer .htaccess anzugeben, welche Dateien bzw. Dateiendungen vom Browser wieder dekomprimiert werden müssen. Ich selber habe auch eine Mischung aus den verschienden Komprimierungsverfahren gewählt, so habe ich sehr große JS-Dateien im Vorhinein folgendermaßen komprimiert, so dass der Server dies nicht jedes mal machen muss, zudem hat dieses Verfahren den großen Vorteil, dass man die negative Auswirkung des hohen Komprimierungslevel, auf die Systemauslastung umgeht.

gzip -9 test.js
mv test.js.gz test.js.jgz


RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.jgz -f
RewriteRule (.*).js$ $1.js.jgz [L]
AddType "text/javascript" .js.jgz
AddEncoding gzip .jgz


Link:
tutorialajax.com/compress-javascript-with-gzip


Streameditor – sed

Dies ist kein Texteditor im klassischen Sinne, da dieser die ursprüngliche Datei gar nicht verändert, das Ergebnis der Bearbeitung wird auf der Standardausgabe zur Verfügung gestellt, kann jedoch auch in eine Datei umgeleitet werden.

Aufruf:

… | sed 'sed-Anweisung' | …
… | sed –e 'sed-Anweisung’ –e `sed-Anweisung' | …
… | sed –f 'sed-Anweisungsdatei' | …

Wie diese Anweisungen aufgebaut sind, werde ich nun erklären.

Dabei ist zu beachten, dass sed einige Zeichen als Sonderzeichen ansieht und falls man diese als „normale“ Zeichen verwenden möchte, mittels Backslash („“) auskommentieren muss.

* -> das davor stehende Zeichen kommt nicht oder beliebig oft vor

. -> genau ein beliebiges Zeichen

^ -> am Zeilenanfang

$ -> am Zeilenende

[Zeichenliste] -> genau ein Zeichen, aber nur aus der Liste/Bereich

z.B.:
[0-9] -> 0 1 2 3 4 5 6 7 8 9
[a-c] -> a b c
[A-Z] -> A B C D E F G … u.s.w.
[A-Za-z] -> A a B b C c D d E e F f G g … u.s.w

[^Zeichenliste] -> genau ein Zeichen, aber keines aus der Liste/Bereich

Text ersetzen:

… | sed 's/File/Datei/g' | …

diese Anweisung ersetzt das Wort „File“ durch „Datei“

g -> (Global Flag) ersetzt nicht nur das erste Vorkommen von „File“ in einer Zeile, sondern durchsucht die ganze Zeile

s -> weißt sed an Text zu ersetzten, man könnte dies als Funktion von sed ansehen

Falls man dies jedoch nicht auf die komplette Datei anwenden möchte, kann man sed Anweisen, dies nur auf einen bestimmten Bereich anzuwenden.

… | sed –n '1,$p' | …

gibt alles von der ersten bis zur letzten Zeile aus

… | sed –n  '1,5!p' | …

gibt alles außer die ersten fünf Zeilen aus

n -> Pufferinhalt vom Arbeitsspeicher wird nicht mit ausgegeben, also nur der verarbeitete Teil wird dargestellt

$ -> letzte Zeile

! -> negiert die Ausgabe

Kommen wir zum ersten praktischen Beispiel.

cat /etc/passwd | sed  –n '/bash$/p'

gibt nur die Zeilen aus der angegebenen Datei aus, welche als Start-Shell die bash eingetragen haben

GNOME Commander

GNOME Commander – File Manager

GNOME Commander ist ein zweispaltiger graphischer Dateimanager für GNOME. Er basiert auf GTK+ und GnomeVFS.

- FTP-Unterstützung
– Samba-Zugriff
– Ordnerzugriffsgeschichte
– Werkzeuge für fortschrittliches Umbenennen und Suchen von Dateien
– Ordnervergleich
– Integrierte Kommandozeile
– in über 30 Sprachen

Installation:

sudo aptitude install gnome-commander

Download:
www.nongnu.org/gcmd/


GNOME Commander
GNOME Commander


Bedingungen in der Shell – Linux

Hier soll an einigen Beispielen klar werden, wie man Bedingungen in z.B. Shell-Abfragen (if) einbaut.

Dateien:

-d file

-> file existiert und ist ein Verzeichnis

-e file

-> file existiert

-f file

-> file existiert und ist regulär

Beispiel:

if [ -f /etc/issue ] ; then cat /etc/issue | awk {'print $3'}; fi

-s file

-> file existiert und ist nicht leer

-r file

-> file existiert und ist lesbar

-w file

-> file existiert und ist beschreibbar

datei1 -nt datei2

-> datei1 ist jünger als datei2

datei1 -ot datei2

-> datei1 ist älter als datei2

Strings:

-z string

-> string ist leer

-n string

-> string ist nicht leer

Beispiel:

test="Hallo"
if [ -n $test ] ; then echo $test; fi
unset test
if [ -n $test ] ; then echo $test; fi

s1 == s2

-> s1 ist gleich s2

s1 != s2

-> s1 ist ungleich s2

s1 < s2

-> s1 ist kleiner s2 (bzgl. Sortierung)

s1 > s2

-> s1 ist größer s2

Arithmetik:

n1 -eq n2

-> n1 ist gleich n2

Beispiel:

a=5
b=5
if [ $a -eq $b ]  ; then echo -e "es sind die gleichen Zahlen"; else echo "es sind nicht die gleichen Zahlen" ;fi
b=4
if [ $a -eq $b ]  ; then echo -e "es sind die gleichen Zahlen"; else echo "es sind nicht die gleichen Zahlen" ;fi

n1 -ne n2

-> n1 ist ungleich n2

n1 -lt n2

-> n1 ist kleiner n2

n1 -le n2

-> n1 ist kleiner/gleich n2

n1 -gt n2

-> n1 ist größer n2

n1 -ge n2

-> n1 ist größer/gleich n2

Logik:

expr1 -a expr2

-> Ausdruck expr1 UND expr2

expr1 -o expr2

-> Ausdruck expr1 ODER expr2

Adobe Flash Plugin 10 – 32bit & 64bit

Installation auf Ubuntu – 32-Bit:

Als erstes musst du dir auf der folgenden Seite das “deb”-File herunterladen …

get.adobe.com/de/flashplayer/

… oder dir dies direkt per wget herunterladen.

wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.deb

Gegebenenfalls laufenden Firefox Prozesse beenden bzw. Firefox schließen …

killall -9 firefox

.. nun deinstallieren wir ggf. das bereits installierte flashplugin-Paket

sudo apt-get remove -y --purge flashplugin-nonfree gnash gnash-common mozilla-plugin-gnash swfdec-mozilla libflashsupport nspluginwrapper

Falls du bereits Versucht hast, Flash per Hand zu installiert, entfernen wir vorsorglich auch diese Dateien.

sudo rm -f /usr/lib/mozilla/plugins/*flash*
sudo rm -f ~/.mozilla/plugins/*flash*
sudo rm -f /usr/lib/firefox/plugins/*flash*
sudo rm -f /usr/lib/firefox-addons/plugins/*flash*
sudo rm -rfd /usr/lib/nspluginwrapper

Kommen wir endlich zur Installation vom “Flash Player”

sudo dpkg -i install_flash_player_10_linux.deb

Installation auf Ubuntu – 64-Bit:

Wer bereits Ubuntu 9.10 verwendet, sollte als erstes einmal versuchen den Flash-Player mittels folgendem Kommando zu installieren…

sudo aptitude install flashplugin-installer

… ansonsten kann man es mit folgendem Weg versuchen, töte ggf. laufenden Firefox Prozesse.

sudo killall -9 firefox

Download und installiere “Getlibs”

cd ~
wget http://frozenfox.freehostia.com/cappy/getlibs-all.deb
sudo dpkg -i getlibs-all.deb

nun deinstallieren wir ggf. das bereits installierte flashplugin-Paket

sudo apt-get remove -y --purge flashplugin-nonfree gnash gnash-common mozilla-plugin-gnash swfdec-mozilla libflashsupport nspluginwrapper

und falls wir bereits etwas per Hand installiert haben, entfernen wir dies auch

sudo rm -f /usr/lib/mozilla/plugins/*flash*
sudo rm -f ~/.mozilla/plugins/*flash*
sudo rm -f /usr/lib/firefox/plugins/*flash*
sudo rm -f /usr/lib/firefox-addons/plugins/*flash*
sudo rm -rfd /usr/lib/nspluginwrapper

Install ia32-libs und nspluginwrapper

sudo apt-get install ia32-libs nspluginwrapper

Extra libs install

sudo getlibs -p libcurl3
sudo getlibs -p libnss3-1d
sudo getlibs -p libnspr4-0d

Auf der folgenden Seite musst du dir das passende File herunterladen:

cd ~
wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz
tar zxvf install_flash_player_10_linux.tar.gz
sudo cp install_flash_player_10_linux/libflashplayer.so /usr/lib/mozilla/plugins/
rm -rf ~/install_flash_player_10_linux/
sudo nspluginwrapper -i /usr/lib/mozilla/plugins/libflashplayer.so

nun erstellen wir noch ein paar Links uns schon sind wir fertig

sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/mozilla/plugins/
sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/firefox-addons/plugins/

Fertig!

Alternativ kann man dies auch mit folgendem Skript ausführen….

das folgende Skript herunterladen z.B. mit “wget” oder einem Browser deinere Wahl

wget http://voku-online.de/flash10_en.sh

dieser Datei nun Ausführrechte geben

chmod +x flash10_en.sh

und ausführen…

sudo sh ./flash10_en.sh

PCManFM - inaction

Nautilus durch PCMan File Manager ersetzen

Wer nach einer schlankeren Alternative zu Nautilus sucht, sollte einen Blick auf das Programm PCManFM werfen, dieser Dateimanager ist in der Desktop Alternative LXDE bereits enthalten, wer also gleich einen ganz neuen schlanken und schnellen Desktop haben möchte kann diesen durch LXDE ersetzen… in diesen Blog-Beitrag wird jedoch erst-einmal beschrieben, wie man PCManFM installiert.

Features von PCManFM:

- Extrem schnell
– lässt sich innerhalb von einer Sekunde starten
– Tabbed browsing (Wie bei Firefox)
– Festplatten Management (mount/umount/eject through HAL)
– Drag & Drop Support
– Dateien können zwischen den tabs ausgetauscht werden
– Anzeigen großer Verzeichnisse
– File association Unterstützung (Standard Programme)
– Thumbnail für Bilder
– Bookmarks Unterstützung
– Behandelt non-UTF-8 encoded Dateien richtig
– Icon / Detail Ansicht
– an den FreeDesktop.org Standards angepasst
– Übersichtlich und Benutzerfreundlich (GTK+ 2)



PCManFM - inaction
PCMan File Manager in Action



Installation/Migration:

sudo aptitude install pcmanfm

Backup der Nautilus Config-Dateien erstellen …

sudo cp /usr/share/applications/nautilus-computer.desktop /usr/share/applications/nautilus-computer.desktop.backup
sudo cp /usr/share/applications/nautilus.desktop /usr/share/applications/nautilus.desktop.backup
sudo cp /usr/share/applications/nautilus-folder-handler.desktop /usr/share/applications/nautilus-folder-handler.desktop.backup
sudo cp /usr/share/applications/nautilus-home.desktop /usr/share/applications/nautilus-home.desktop.backup

… und durch pcmanfm ersetzen.

sudo rm /usr/share/applications/nautilus-computer.desktop
sudo rm /usr/share/applications/nautilus.desktop
sudo rm /usr/share/applications/nautilus-folder-handler.desktop
sudo rm /usr/share/applications/nautilus-home.desktop

sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/nautilus-computer.desktop
sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/nautilus.desktop
sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/nautilus-folder-handler.desktop
sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/nautilus-home.desktop

Im nächsten Schritt wollen wir den Desktop ersetzen, dafür deaktivieren wir zunächst mittels gconf-editor nautilus und sagen, dass dieses Programm nicht mehr für den Desktop zuständig ist.

nodesktop

so nun wollen wir Pcmanfm beiringen den “Desktop-Job” zu übernehmen. Dafür müssen wir Pcmanfm starten und dem Menüpunkt Bearbeiten -> Einstellungen folgendes ändern…

newdesktop

Der Desktop ist aber immer-noch von Nautilus, diesen kann man über …

(Gnome Startleiste)>System>Einstellungen>Sitzungen>aktuelle Sitzung

… beenden, und über …

(Sitzungen)>Sitzungsoptionen>Momentan laufende Programme merken

… werden unserer Einstellen auch für zukünftige Sitzungen behalten.

In der Konfiguration von PCmanFM selber, müssen wir dann noch folgendes einstellen …

(pcmanfm)>Bearbeiten>Einstellungen>Desktop>Dateisymbole auf dem Desktop anzeigen

… und in …

(Gnome Startleiste)>System>Einstellungen>Sitzungen>Startprogramme

pcmanfm hinzufügen.

Zum guten Schluss rebooten wir den PC einmal und fertig!