Categories
Linux Networking

Thinkpad UMTS Modul (Qualcomm Gobi 2000 3G)

Mein neues Thinkpad T410i hat ein eingebautes UMTS Modul. Ich bin mir sicher, dass es anfangs unter Ubuntu Maverik ohne Probleme lief. Warum auch immer: nach irgend einem Update wurde es nicht mehr erkannt. Bug ist u.A. hier beschrieben.

Workaround

Firmware Dateien aus dem Windows Treiber kopieren. Diese liegen bei meinem Thinkpad auf der Windows 7 Partition unter “\Program Files (x86)\QUALCOMM\Images\Lenovo\6” und “\Program Files (x86)\QUALCOMM\Images\Lenovo\UMTS” (insgesamt 3 Dateien). Diese Dateien gehören dann in /lib/firmware/gobi (erstellen falls nicht existiert).

Danach lässt sich die Karte nach Eingabe der folgenden Kommandos wieder verwenden:

sudo /lib/udev/gobi_loader -2000 /dev/ttyUSB0 /lib/firmware/gobi
sudo killall modem-manager
Categories
Linux

Linux: USB generell abschalten

Möchte man den USB Support im Kernel generell abschalten geht dies mit dem Kernelparameter “nousb”. Also folgendes z.B. in die grub.conf eintragen:

title CentOS (2.6.18-194.17.4.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.17.4.el5 ro root=/dev/md1 nousb
        initrd /initrd-2.6.18-194.17.4.el5.img

Oder bei grub2 so wie hier.

Categories
Linux Plesk

Plesk/qmail: globales procmail Script

Die Möglichkeit Spam-Mails mittels procmail in einen Unterordner zu verschieben hatte ich hier schon mal aufgeschrieben. Leider bietet Qmail meines Wissens nicht die Möglichkeit ein procmail Rezept global anzuwenden sondern prinzipiell nur über die Einbindung in das .qmail-File des jeweiligen Postfachs.

Zumindest die Erstellung/Anpassung des procmail-Rezeptes kann man aber global Abhandeln. Prinzipiell wird das Script einfach nur in der .qmail Datei verlinkt:

| true
| preline /usr/bin/procmail -p /etc/procmail_spam

Soweit eigentlich logisch. Es gibt jedoch einen kleinen Haken: Das procmail Script benötigt das aktuelle Verzeichnis bzw. das aktuelle Postfach um die Mails richtig zu verschieben. Normalerweise steht das aktuelle Verzeichnis ja in der Umgebungsvariable $PWD – aber procmail löscht einige dieser Variablen aus Sicherheitsgründen. Auf neueren Plesk-Systemen bekommt man das Verzeichnis nur über die DELIVERED_TO Umgebungsvariable – welche nur gesetzt wird wenn man den besagten “Sicherheitsmechanismus” von Procmail ausschaltet (-p) und damit den Zugriff auf alle Umgebungsvariablen erlaubt.

LOGFILE=/var/log/procmail.log
#VERBOSE=YES
MAILDIRMAKE=/usr/bin/maildirmake
 
MAIL_HOME=`if [ -n "$DELIVERED_TO" ]; then echo $DELIVERED_TO | awk -F @ '{print "/var/qmail/mailnames/"$2"/"$1}'; else /bin/pwd; fi`
MAIL_HOME=`if [ -e "$MAIL_HOME" ]; then echo $MAIL_HOME; fi`

# sollte es keine Ordner Junk geben, diesen anlegen
DUMMY=`test -d $MAIL_HOME/Maildir/.Junk || echo "Junk" >> $MAIL_HOME/Maildir/courierimapsubscribed`
DUMMY=`test -d $MAIL_HOME/Maildir/.Junk || $MAILDIRMAKE -f Junk $MAIL_HOME/Maildir/`
 
# Spam-Mails nach 30 Tagen löschen
DUMMY=`find $MAIL_HOME/Maildir/.Junk/cur/ -type f -mtime +30 -exec rm -f {} \\;`
DUMMY=`find $MAIL_HOME/Maildir/.Junk/new/ -type f -mtime +30 -exec rm -f {} \\;`
 
# Spam-Mails in den Ordner Junk verschieben
:0 w
* ^Subject:.\*\*\*\*\*SPAM\*\*\*\*\*
$MAIL_HOME/Maildir/.Junk/
 
# Wichtig: alle weiteren Mails normal zustellen
:0 w
$MAIL_HOME/Maildir/

Um die .qmail Files anzupassen habe ich mir ein Script geschrieben. Sollte jemand einen eleganten Weg kennen ein Procmail-Script auch global in die Qmail Kette einzubinden darf er sich gerne melden ;)

Update: für neuere Plesk-Versionen war leider ein Update des Scripts nötig, da qmail dort anders aufgerufen wird und daher /bin/pwd nicht auf das richtige Homeverzeichnis verweist.

Categories
Linux Programmierung

Netbeans: Scanning for external changes

Vor einiger Zeit bin ich von PHPEd auf Netbeans PHP umgestiegen. Mir gefällt z.B. das Projekthandling, die eingebaute Versionierungsanbindung und speziell die Plattformunabhängigkeit. PHPEd ist zwar klasse unter Windows aber da ich meist unter Linux unterwegs bin und die Wine-Unterstützung für PHPEd nicht so gut ist (Geschwindigkeit) bin ich letztendlich zu Netbeans gewechselt. Dies nur am Rande.

Netbeans nervt aber ab und an mit seiner ewigen Scannerrei nach Änderungen im Code. Mitunter wechselt man den Fokus und Netbeans scannt (auch den Server) nach Änderungen (“Scanning for external Changes”).

Unter folgendem Link ist ein Plugin beschrieben mit welchem man das Verhalten normalisiert: ScanOnDemand.

Categories
Linux

mod_rewrite: ohne www. nach www. weiterleiten

Kleines mod_rewrite reciept um URIs ohne “www.” nach URIs mit “www.” weiterzuleiten. Verbesserungen willkommen…

RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule ^(.+)$ - [env=ps:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.+)$ - [env=ps:http]

RewriteCond %{HTTP_HOST}   !^www\.%{HTTP_HOST} [NC]
RewriteCond %{HTTP_HOST}   !^.*\..*\..* [NC]
RewriteRule ^/(.*)         %{ENV:ps}://www.%{HTTP_HOST}/$1 [L,R]

Inspiriert von hier.

Categories
Linux

Ubuntu: Java-Plugin für Firefox

Seit Ubuntu 10.04 (lucid) sind einige Pakete von Multiverse ins Partner-Repository gewandert. So z.B. auch das “original” Java SDK/JRE von Sun.

Es genügt in den Paketquellen das “Partner” Repository zu aktivieren oder hinzuzufügen:

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update

Danach lässt sich z.B. das das Runtime Environment installieren:

sudo apt-get install sun-java6-jre

Für das Firefox-Plugin fehlt dann noch ein symbolischer Link:

ln -s /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/libnpjp2.so \
~/.mozilla/plugins/

Im Firefox sollte “about:plugins” in der Adresszeile jetzt auch das Java-Plugin anzeigen.

Update: Ubuntu 12.04/Precise

Da mittlerweile openjdk unter Ubuntu standard ist, reicht es das icedtea-plugin Paket zu installieren:

sudo apt-get install icedtea-plugin
Categories
Linux

GRUB2 Kernelparameter

Bisher (grub) konnte man Kernelparameter immer in der /boot/grub/menu.lst direkt eintragen. Bei Grub2 unter Ubuntu ist alles anders. Die menu.lst bzw. grub.cfg wird aus den Einträgen in /etc/grub.d und /etc/default/grub generiert. Das macht vieles einfacher.

Um z.B. generell bei allen konfigurierten Linux-Bootkerneln einen Parameter anzugeben reicht es in der Datei /etc/default/grub folgenden Eintrag zu ändern:

GRUB_CMDLINE_LINUX_DEFAULT="quiet 8250.nr_uarts=10"

Danach ist einmal “grub-update” notwendig. Für weitere Infos siehe hier.

Categories
Linux

OpenNMS: Memcached mit SNMP überwachen

opennmsIn OpenNMS gibt es zwar auch einen “nativen” Memcached-Monitor – aber dieser funktioniert nur wenn der Memcached direkt über das Netz vom Monitorserver aus erreichbar ist.

Mit der bekannten SNMP-extend Methode lässt sich der Memcached Daemon auch gut via SNMP mit OpenNMS überwachen. Hier nur kurz die wichtigsten Scripte und Schritte:

Service überwachen

Das geht am einfachsten über das “HostResourceSwRunPlugin” Plugin welches die laufenden Prozesse via SNMP überwacht. Zunächst muss der Service überhaupt erkannt werden:

/etc/opennms/capsd-configuration.xml

    
	
	
	
    

Dann wird die Überwachung definiert:
/etc/opennms/poller-configuration.xml

   ...

    
    
    
    
    

 ...
    

Statistiken

Um noch ein paar Graphen zu generieren werden per SNMP noch die Statusdetails des Memcached Daemons übertragen…

Categories
Linux

SVG Content-Type setzen

Um beim Apache den Content-Type für *.svg Dateien korrekt zu setzen:


ForceType image/svg+xml

Categories
Linux Networking

2 NICs mit Policy Based Routing (PBR)

Es gibt viele Gründe für 2 Netzwerkkarten im Server. Sollen diese in unterschiedliche Netze angebunden werden gibt es Probleme weil normalerweise nur ein Standardgateway existiert.

Der Traffic verlässt zwar korrekt den Server über die gesetzten Routen, jedoch die Pakete an fremde Ziele verlassen den Server immer über die default-route, also u.U. nicht über das richtige Interface.

Folgend kurz die Schritte zum Einrichten eines Policy-Based Routing unter Debian/Ubuntu…

Ausgangslage

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.7.56    0.0.0.0         255.255.255.248 U     0      0        0 eth0
10.10.6.32    0.0.0.0         255.255.255.224 U     0      0        0 eth1

Neue Einträge anlegen

echo "1 dmz-a" >> /etc/iproute2/rt_tables
echo "2 dmz-b" >> /etc/iproute2/rt_tables

eth0 Route anlegen

ip route add 10.10.7.56/29 dev eth0 src 10.10.7.58 table dmz-a
ip route add default via 10.10.7.57 dev eth0 table dmz-a
ip rule add from 10.10.7.58/32 table dmz-a
ip rule add to 10.10.7.58/32 table dmz-a

eth1 Route anlegen

ip route add 10.10.6.32/27 dev eth1 src 10.10.6.35 table dmz-b
ip route add default via 10.10.6.33 dev eth1 table dmz-b
ip rule add from 10.10.6.35/32 table dmz-b
ip rule add to 10.10.6.35/32 table dmz-b

Das Kommando “ip route show” sollte jetzt die entsprechenden Einträge zeigen.
Theoretisch könnte man sich das PBR für eine der beiden NICs sparen wenn man dort einfach die klassische default-route setzt. Hier noch eine ausführliche Anleitung zum Thema.