Archiv für den Monat: Januar 2010

Firefox 3.6 und Java auf SuSE 11.1

Ich habe Anfang dieser Woche auf meinem Laptop den Firefox auf die Version 3.6 gebracht. Abgesehen von einem Addon, das den Browser zum unregelmäßigen Absturz brachte (ich hab noch nicht raus, welches Addon es ist – zzt. sind die meisten deaktiviert) funktionierte auch Java nicht mehr mit dieser Version.

Nach stundenlangem Googlen und Ausprobieren hab ich es nun endlich wieder am Laufen! Die Lösung ist eigentlich ganz einfach: ich musste einen Symlink von /usr/lib64/jvm/java-1.6.0-sun-1.6.0/jre/lib/amd64/libnpjp2.so in mein Mozilla-Plugin-Verzeichnis ~/.mozilla/plugins anlegen und den Browser neu starten. Das Plugin-Verzeichnis musste ich aber erst noch erstellen.

Diesen entscheidenden Hinweis fand ich per Google auf der Seite „Camp Firefox • Thema anzeigen – FF 3.6 Java Plugin“ — allerdings ist diese Seite zzt. nicht erreichbar, so dass ich den Google-Cache bemühen musste.

Die o.g. Datei stammt aus dem Paket java-1_6_0-sun-plugin-1.6.0.u17-1.20. Dieses wiederum hatte ich in meiner Verzweiflung per One-Click-Install aus dem Non-OSS openSUSE Factory-Repository geholt, aber das Standard-Paket 1.6.0.u17-1.1.1 sollte m.E. auch gehen.

Da ich bei der ganzen Herumprobiererei auch die aller-aktuellste JRE-Version von Sun heruntergeladen und installiert hatte und mich die Plugin-Testseite auch darauf aufmerksam gemacht hatte, dass es eine neuere Version des Plugins geben soll, haben ich den Link noch mal auf eben jene aktuelle Version geändert:

libnpjp2.so -> /usr/java/latest/lib/amd64/libnpjp2.so

Das funktioniert auch un die Testseite ist nun vollständig zufrieden.

print_r für Perl

Ich nutze unter PHP recht oft die Funktion print_r für’s Debugging. Diese Funktion gibt eine beliebige Variable strukturiert aus. Sinnvoll ist das natürlich am meisten bei Arrays und Objekten.

Für Perl gibt es kein print_r, dafür aber Data::Dumper (CPAN).

Ein kleines Beispiel:

use Data::Dumper;
my @arr = qw(foo bar foobar);
my %hash = (
             foo => 'bar',
             bar => @arr
           );
print Dumper(@arr, \%hash);

Das ergibt:

$VAR1 = [
          'foo',
          'bar',
          'foobar'
        ];
$VAR2 = {
          'bar' => $VAR1,
          'foo' => 'bar'
        };

Steht Data::Dumper mal nicht zur Verfügung geht es zur Not auch ohne.

Ein einfaches Array kann man sich so ansehen:

print "@array";

Mit dem Array aus den Beispiel von oben ergibt das:

foo bar foobar

Bei Hashs funktioniert das aber nicht. Hier geht es aber so:

my %hash =  (
              A => 1,
              B => 2,
              C => 3,
            );

{
  local $, = ' ';
  print %hash, $/;
}

Die Ausgabe sieht so aus:

A 1 C 3 B 2

Zugegeben, Data::Dumper ist da optisch besser, aber in der Not frisst der Teufel Fliegen…

Eine Reihe von IP-Adressen per Ping prüfen

Mitunter hat man das Problem, eine nicht kleine Anzahl an Rechnern auf Erreichbarkeit zu überprüfen. Die Adressen und Hostnamen liegen als Excel-Liste vor, aber diese alle von Hand zu pingen … dazu bin ich echt zu faul. Also habe ich mir ein kleines Script gebaut, welches diese Aufgabe elegant erledigt:

#!/bin/sh
#
# Sendet einen Ping an alle in der übergebenen Datei aufgeführten Adressen.
# In der Liste muss pro Zeile zuerst die IP-Adresse und danach durch Leerzeichen
# getrennt der Hostname stehen (optional).
# Die Ausgabe von Ping kann unterdrückt werden, indem STDERR ins Null-Dev
# geschickt wird:
# ping_list liste.txt 2>/dev/null
#

#set -x

Newline='
'

IFS=$Newline
for LINE in `cat $1`
do
  #echo "'$LINE'"
  ADR=${LINE%% *}
  HOST=${LINE##* }
  #echo "Adr: $ADR"
  #echo "Host: $HOST"
  if [ "$OSTYPE" = "linux" ]
  then
    ping -q -W 3 -c 1 $ADR 1>&2
  elif [ "$OSTYPE" = "hpux11.00" ]
  then
    ping $ADR -n 1 -m 3 1>&2
  else
    echo "Unknown OS"
    exit 99
  fi
  if [ $? -eq 0 ]
  then
    echo "$ADR ($HOST) is up"
  else
    echo "$ADR ($HOST) FAILED"
  fi
done
IFS=

Es arbeitet zzt. unter Linux (SuSE 11.1) und HP-UX 11i und kann auch hier heruntergeladen werden:
ping_list