Dienstag, 3. Januar 2012
Memory Verbrauch addiert nach Prozessname
Mithilfe folgender Codewurst kann der Memoryverbrauch nach Prozessnamen addiert aufgelistet werden:
Kleine Variante - wenn wir die Hauptverbraucher ohnehin schon kennen, konzentrieren wir uns auf die:
ps -e -o comm,rss --no-heading|awk '{arr[$1]+=$2} END {for (i in arr) {printf("%15s ", i); printf("%6s \n", arr[i]);}}'|grep -v ' 0'|sort -nr -k2
Kleine Variante - wenn wir die Hauptverbraucher ohnehin schon kennen, konzentrieren wir uns auf die:
ps -C amavisd-new,clamd,apache2,mysqld -o comm,rss --no-heading|awk '{arr[$1]+=$2} END {for (i in arr) {printf("%15s ", i); printf("%6s \n", arr[i]);}}'|grep -v ' 0'|sort -nr -k2
"Memory Verbrauch addiert nach Prozessname" vollständig lesen
Montag, 2. Januar 2012
Dateien mit Leerzeichen im Namen verarbeiten
Konkretes Beispiel: es soll auf die Schnelle ein Stapel wav Dateien mit ffmpeg in mp3 konvertiert werden, die Dateinamen haben aber leider ein Leerzeichen (Track 1.wav usw.).
Die Lösung: die Umgebungsvariable IFS (Internal Field Separator) umschreiben.
Hinweis: der Ordner "mp3" muss natürlich vorher von Hand angelegt werden.
Folgendes scheitert am Leerzeichen:
Wenn ich vorher aber die IFS Variable auf Zeilenumbruch setze, klappt es:
Danach sollte IFS wieder auf den ursprünglichen Wert, also Leerzeichen, gesetzt werden:
Die Lösung: die Umgebungsvariable IFS (Internal Field Separator) umschreiben.
Hinweis: der Ordner "mp3" muss natürlich vorher von Hand angelegt werden.
Folgendes scheitert am Leerzeichen:
for f in *.wav; do ffmpeg -i "$f" "../mp3/${f}.mp3"; done;
Wenn ich vorher aber die IFS Variable auf Zeilenumbruch setze, klappt es:
IFS='
'
for f in *.wav; do ffmpeg -i "$f" "../mp3/${f}.mp3"; done;
'
for f in *.wav; do ffmpeg -i "$f" "../mp3/${f}.mp3"; done;
Danach sollte IFS wieder auf den ursprünglichen Wert, also Leerzeichen, gesetzt werden:
IFS=' '
Dienstag, 28. Juni 2011
Munin ip_ Plugin mit Ubuntu's ufw
Das Munin Monitoring Paket auf Ubuntu LTS (10.04, lucid) bringt unter anderem ein nettes Plugin zum iptables basierten Traffic Monitoring mit: ip_
Nett ist es deshalb, weil es die getrennte Trafficüberwachung pro IP Adresse ermöglicht.
So kann z.B. auch der ipv4 und ipv6 Traffic auf dem selben Interface schön auseinander sortiert werden.
Weniger schön: das Plugin ist mit von Haus aus schon am Server laufenden Firewalls, auch der ufw (Uncomplicated FireWall), nicht kompatibel.
Im folgenden Beispiel wird gezeigt, wie es trotzdem klappt:
Voraussetzung ist: ufw und Munin laufen bereits einwandfrei und ipv6 ist am System und auch in der Firewall aktiv.
Nett ist es deshalb, weil es die getrennte Trafficüberwachung pro IP Adresse ermöglicht.
So kann z.B. auch der ipv4 und ipv6 Traffic auf dem selben Interface schön auseinander sortiert werden.
Weniger schön: das Plugin ist mit von Haus aus schon am Server laufenden Firewalls, auch der ufw (Uncomplicated FireWall), nicht kompatibel.
Im folgenden Beispiel wird gezeigt, wie es trotzdem klappt:
- Plugin aktivieren (verlinken)
- Plugin konfigurieren
- ufw before.rules anpassen
- Plugin testen
- Munin durchstarten
Voraussetzung ist: ufw und Munin laufen bereits einwandfrei und ipv6 ist am System und auch in der Firewall aktiv.
"Munin ip_ Plugin mit Ubuntu's ufw" vollständig lesen
Donnerstag, 16. Juni 2011
Ruckzuck ein neues git Repo anlegen
Kurzer Überblick, bei folgendem Setup:
Auf dem Server gibt's den User "git", der sich via ssh mit Zertifikat verbinden kann. In dessen home liegen alle Repositories.
Der Server sei hier "myserver.com" genannt, der ssh Port sei 12345.
Eingeloggt als root auf dem Server (als User git eingeloggt fällt das "su" weg):
Danach bei mir lokal in einem Ordner, in dem ich schon ein wenig gecodet habe:
Gesetzt den Fall, dass das Repository zusätzlich zu ssh noch über http(s) zur Verfügung gestellt wird, auf dem Server:
Auf dem Server gibt's den User "git", der sich via ssh mit Zertifikat verbinden kann. In dessen home liegen alle Repositories.
Der Server sei hier "myserver.com" genannt, der ssh Port sei 12345.
Eingeloggt als root auf dem Server (als User git eingeloggt fällt das "su" weg):
su git
mkdir test.git
cd test.git
git --bare init
exit
Somit ist das leere repo am Server angelegt.mkdir test.git
cd test.git
git --bare init
exit
Danach bei mir lokal in einem Ordner, in dem ich schon ein wenig gecodet habe:
git init
git add testfile.txt
git commit -m 'added one testfile'
git remote add origin ssh://git@myserver.com:12345/home/git/test.git
git push origin master
git add testfile.txt
git commit -m 'added one testfile'
git remote add origin ssh://git@myserver.com:12345/home/git/test.git
git push origin master
Gesetzt den Fall, dass das Repository zusätzlich zu ssh noch über http(s) zur Verfügung gestellt wird, auf dem Server:
su git
cd test.git/hooks/
mv post-update.sample post-update
git update-server-info
exit
cd test.git/hooks/
mv post-update.sample post-update
git update-server-info
exit
Freitag, 29. Januar 2010
Kleine Spamassassin Rule gegen Pillenlinks im Mailheader
Lustig, zur Zeit läuft eine Spamwelle, bei der die Pillenlinks (Viagra, Cialis...) im "From" des Mailheaders untergebracht werden. Der Textteil der Mails ist dann nur sinnfreie Buchstabensuppe.
Da war ja mal wieder jemand kreativ.
Im Allgemeinen werden die Mails von Spamassassin gut aussortiert. Falls das doch nicht der Fall wäre, hilft folgende Rule in der local.cf:
Da war ja mal wieder jemand kreativ.
Im Allgemeinen werden die Mails von Spamassassin gut aussortiert. Falls das doch nicht der Fall wäre, hilft folgende Rule in der local.cf:
header MINIVIAG From =~ /(Viagra|Levitra|Cialis) .*www\.[a-z0-9]{4,8}\.(com|net|org)/i
describe MINIVIAG Viagra link im from
score MINIVIAG 2.0
Update: Da bessere ich gleich noch mal nach.
describe MINIVIAG Viagra link im from
score MINIVIAG 2.0
header MINIVIAG From =~ /(Viagra|Levitra|Cialis|Tamiflu) .*www\.[a-z0-9-]{4,8}\.(com|net|org)/i
describe MINIVIAG Pillenlink im from
score MINIVIAG 2.0
describe MINIVIAG Pillenlink im from
score MINIVIAG 2.0
Mittwoch, 6. Januar 2010
Mailheader decodieren mit Hilfe von perl
Spamfilter können auf Wunsch die aussortierten Mails am Server speichern. An sich sieht man es den Mails schon am Betreff an, ob sie tatsächlich spam oder doch ham (und in diesem Fall eventuell ein false positive) sind.
Allerdings müssen non-ascii Teile des Mailheaders passend encodiert sein, was das Lesen teilweise unmöglich macht.
Ein paar Beispiele:
=?iso-8859-1?Q?Hall=F6chen?=
=?UTF-8?Q?Hall=C3=B6chen?=
=?UTF-8?B?SGFsbMO2Y2hlbg==?=
=?iso-2022-jp?B?GyRCOiNHLyRiSSwkOiRkJGo/ayQyJGsbKEIhIRskQkcvS3ZBMCRO?=
=?GB2312?B?0rvSubzkyMM1MDDN8sjLudjXosT6svrGt7XEzfjC59Oq?=
Da sind diverse encodings, mal in quoted printable, mal in base64. Allen gemeinsam ist die schwere Lesbarkeit.
Mailheader oder Teile davon kann man am einfachsten mit perl decodieren:
Aber auch ganze Unterordner voller Spammails können durchsucht werden:
Nicht encodierte Teile sind übrigens gar kein Problem.
Allerdings müssen non-ascii Teile des Mailheaders passend encodiert sein, was das Lesen teilweise unmöglich macht.
Ein paar Beispiele:
=?iso-8859-1?Q?Hall=F6chen?=
=?UTF-8?Q?Hall=C3=B6chen?=
=?UTF-8?B?SGFsbMO2Y2hlbg==?=
=?iso-2022-jp?B?GyRCOiNHLyRiSSwkOiRkJGo/ayQyJGsbKEIhIRskQkcvS3ZBMCRO?=
=?GB2312?B?0rvSubzkyMM1MDDN8sjLudjXosT6svrGt7XEzfjC59Oq?=
Da sind diverse encodings, mal in quoted printable, mal in base64. Allen gemeinsam ist die schwere Lesbarkeit.
Mailheader oder Teile davon kann man am einfachsten mit perl decodieren:
echo '=?UTF-8?B?SGFsbMO2Y2hlbg==?=' | perl -MEncode -ne 'print encode("utf8",decode("MIME-Header",$_))'
Obiges Beispiel decodiert nicht einfach nur den Header, sondern encodiert auch gleich in UTF-8 (default wäre iso).Aber auch ganze Unterordner voller Spammails können durchsucht werden:
ls -1t | head -20 | xargs grep '^Subject: =?' | perl -MEncode -ne 'print encode("utf8",decode("MIME-Header",$_))'
Dieses Beispiel durchsucht die neuesten 20 Mails im Ordner nach encodierten Subjects und gibt diese decodiert als UTF-8 aus.Nicht encodierte Teile sind übrigens gar kein Problem.
Donnerstag, 31. Dezember 2009
Diverse Maildienste auf der Kommandozeile testen
Vertrauen ist gut, Kontrolle ist besser. Hier folgt eine Sammlung von Kommandozeilentests für diverse Maildienste (smtp, pop, imap...)
Wir gehen davon aus, dass der Mailserver erfolgreich installiert ist, in diesem Fall sei das Postfix mit Postgrey und Amavis, das Zertifikat wurde erstellt, die erforderlichen Dienste laufen und die gewünschten Ports sind in der Firewall geöffnet. Die Dienste imap, imaps, pop3 und pop3s werden von Dovecot zur Verfügung gestellt.
Als Beispieldomain verwende ich dein.mailserver.net, als Beispiel-IP 1.2.3.4, der Beispieluser (brauchen wir zum Testen der Dienste mit Login) heißt userlein und er hat das Passwort "geheim".
Um es übersichtlicher zu machen, sind die einzugebenden Befehle grün, die Antworten des Servers, auf die es besonders ankommt sind blau.
Nun aber zu den Praxisbeipielen:
Wir gehen davon aus, dass der Mailserver erfolgreich installiert ist, in diesem Fall sei das Postfix mit Postgrey und Amavis, das Zertifikat wurde erstellt, die erforderlichen Dienste laufen und die gewünschten Ports sind in der Firewall geöffnet. Die Dienste imap, imaps, pop3 und pop3s werden von Dovecot zur Verfügung gestellt.
Als Beispieldomain verwende ich dein.mailserver.net, als Beispiel-IP 1.2.3.4, der Beispieluser (brauchen wir zum Testen der Dienste mit Login) heißt userlein und er hat das Passwort "geheim".
Um es übersichtlicher zu machen, sind die einzugebenden Befehle grün, die Antworten des Servers, auf die es besonders ankommt sind blau.
Nun aber zu den Praxisbeipielen:
"Diverse Maildienste auf der Kommandozeile testen" vollständig lesen
(Seite 1 von 5, insgesamt 31 Einträge)
» nächste Seite