[Quicktip] Wie man Daten von Freenas auf einen USB Datenträger kopiert

Um Daten von eurem FreeNAS Server auf einen FAT32 formatierten USB Stick/USB Festplatte zu bekommen sind folgende Schritte notwendig:

  • Per SSH auf die Console des Servers verbinden
  • Verzeichnis für den Stick erstellen:
    mkdir /mnt/USB-Stick
  • Finde mittels
    gpart list
    heraus, wie die Bezeichnung des USB Sticks ist (z.B. “da1p1”)
  • Nun mountest du den Stick in das entsprechende Verzeichnis, welches du unter Punkt zwei angelegt hast
    mount -v -t msdosfs /dev/da1p1 /mnt/USB-Stick
  • mittels der Kommandos “cp” und “mv” kannst du nun auf der Console die gewünschten Dateien kopieren
  • wenn du fertig bist, kannst du per
    umount /mnt/USB-Stick
    den Stick wieder auswerfen und dann anschließend vom Server abziehen.

Beim Ausführungen von Java jnlp Anwendungen erscheint ein Access Denied Fehler

Beim Ausführen einer Java Anwendung mit einer jnlp Datei bekam ich komischerweise immer wieder Fehlermeldungen „java.io.FilePermission“ für die Datei „/usr/bin/xprop“. Die Datei war im System vorhanden und durfte auch von jedem ausgeführt werden, selbst mit Sudo kam der Fehler.

Die Lösung des Problems ist zwar relativ leicht, aber mal wieder sehr ärgerlich: es ist ein Fehler in der OpenJDK und in meinem Fall der icedtea-netx Implementierung. Und um diesen zu umgehen muss man leider die original Oracle JAVA JRE runterladen und installieren.

Wichtig hierbei: man muss wohl zwingend die tar.gz Variante und nicht die RPM Variante nehmen, da nur diese „javasw“ enthält.

Das Vorgehen für die Installation ist:

  • openjdk und co vom System schmeissen (es geht auch anders, aber man muss die Sache ja nicht unnötig verkomplizieren)
  • unter http://www.oracle.com/technetwork/java/javase/downloads/index.html den Download Button unter „JRE“ anklicken und auf der folgenden Seite die AGB akzeptieren und dann die entsprechende tar.gz für 64bit oder 32bit herunterladen
  • tar.gz entpacken und den Ordner nach /usr/java/[ORDNER_NAME] verschieben
  • anschließend (keine Ahnung ob das der richtige Weg ist, aber er funktioniert) unter /usr/bin per Link die java und javasw Binaries verlinken:
cd /usr/bin
ln -s /usr/java/[ORDNER_NAME]/bin/java
ln -s /usr/java/[ORDNER_NAME]/bin/javasw

Nun könnt ihr die jnlp Datei einfach per
javasw [DATEI].jnlp aufrufen.

[Quicktip] xdebug 2.2.0 (php 5.4, MAC OSX) stürzt während der Laufzeit ab

Ein sehr ärgerlicher Bug bzw. mehrere Bugs führen bei xdebug 2.2.0 (aktuelles Release) dazu, dass sich der Debugger während seiner Arbeit einfach aufhängt. Teilweise geschieht dies in Zusammenhang mit Doctrine 2, teilweise aber auch nicht 😉

Es gibt aber einen einfachen Weg, dieses Problem aus der Welt zu schaffen – indem man den neuesten Developer-Branch auf github verwendet (derzeit Version 2.3.0). Und das geht so:

Geht auf eure Mac Console, legt ein Temp-Verzeichnis an oder wechselt in ein solches, und gebt da folgendes ein:

git clone git://github.com/derickr/xdebug.git

Anschließend wechselt ihr in das neu erzeugte Verzeichnis “xdebug” und gebt dort nacheinander

phpize
./configure
make
sudo make install

ein. Nach ein bisschen Wartezeit sollte alles durch sein und ihr könnt mittels

php -v

überprüfen, ob alles korrekt installiert wurde. Wenn in der letzten Zeile “with Xdebug v2.3.0dev” oder größer steht, dann seid ihr auf der neuesten Version und die Abstürze beim Debuggen sollten nicht mehr auftreten.

[Einzeiler] Dateien nach einem String durchsuchen, aber nur, wenn ein zweiter String nicht vorkommt

Sorry für die verwirrende Überschrift, aber anders kann ich es nicht in einen Satz zusammenfassen 😉

mit grep alle Dateien im aktuellen Ordner rekursiv durchsuchen

Ihr wollt in einem Ordner inkl. Unterordner alle Dateien nach einer Zeichenkette durchsuchen? Dann verwendet folgendes Kommando:

grep -ir "das will ich finden" ./*

Der Parameter “i” bewirkt, dass bei dem zu suchenden Begriff nicht auf die Groß-/Kleinschreibung geachtet wird, das “r” sorgt dafür, dass der zu durchsuchende Ordner auch rekursiv, also mit allen Unterordnern, durchsucht wird.

grep mit einem NOT verwenden

Wollt ihr nun noch nach Wort Nummer 1 suchen, aber Wort Nummer 2 soll nicht in der gleichen Zeile vorkommen? Dann kommt folgendes Kommando zum Einsatz:

grep -ir "das will ich finden" ./* | grep -iv "das soll nicht in der gleichen Zeile stehen"

Wie ihr seht, filtern wir das Ergebnis des ersten grep einfach nochmal mit grep, wenden aber den Parameter “v” an. Dieser bewirkt, dass grep sich genau umgekehrt wie sonst verhält – es werden also alle Zeilen angezeigt, die das gesuchte Wort NICHT enthalten.

Xbox 360 Games/Spiele tauschen

Heut schreibe ich mal wieder nen Beitrag in eigenem Sinne: ich möchte gerne ein paar Xbox 360 Spiele tauschen. Dafür liste ich hier die Spiele auf, die ich anzubieten habe. Darunter findet ihr die Liste mit Games, die ich gern im Gegenzug haben möchte. Falls etwas für euch dabei ist, meldet euch per Kommentar oder per Mail.

Ich habe folgende Games im Angebot:
GTA IV (FSK 18)
GTA IV – Liberty City Storys (FSK 18)
Operation Flashpoint – Dragon Rising (FSK 18)
Mafia 2 (FSK 18)
Kayne&Lynch 2 (FSK 18)
Call of Duty 4 (FSK 18)
Lost Planet (FSK 16)
Stranglehold (FSK 18)
Assasins Creed (FSK 16)
James Bond – ein Quantom Trost (FSK 16)
Quake 4 (FSK 16)

Ich würde gerne gegen folgende Games tauschen:

Red Dead Redemption
Call of Duty 7
Fallout 3 Add Ons (hab bisher nur das Original)
Fallout – New Vegas
Homefront
Overlord 1&2
Half-Life 2: The Orange Box
Tom Clancy’s Ghost Recon – Advanced Warfighter 1 & 2
F1 2010 – Formula 1
Need for Speed: Hot Pursuit
Mass Effect 1 & 2
Halo: Reach
Bulletstorm
Metro 2033
Tom Clancy’s Splinter Cell: Conviction
Medal of Honor (das aktuelle)
Saboteur
Crysis 2

[Quicktip] Passwort als Parameter an ssh übergeben

Als Erweiterung zu [Quicktip] ssh Verbindung ohne Known-Hosts Eintrag hier noch die Möglichkeit, das Loginpasswort für einen Server an den SSH Befehl zu übergeben:

Aus Sicherheitsgründen ist es nicht möglich, Passwörter an den ssh-Befehl unter Linux/Unix zu übergeben. Damit soll verhindert werden, dass Passwörter in Scripten hardcoded werden und somit nicht mehr sicher sind. Möchte man passwortlos per Script mit anderen Servern arbeiten, gibt es noch immer die Möglichkeit, die RSA Keys zu hinterlegen.

Nun gibt es aber auch einige wenige spezielle Anwendungsfälle, in denen das Passwort nicht wirklich Sicherheitsrelevant ist, man nicht die Möglichkeit hat den RSA Key zu hinterlegen und man immer mit wechselnden Rechnern zu tun hat. Für diese seltenen Fälle kann man sich mit dem “expect” Befehl behelfen. “expect” macht folgendes: man ruft ein Programm per “expect” auf und versieht das ganze mit einem Kontrollscript. Dann kann man mit einer Art regulärer Ausdrücke nach Ausgaben eines Programmes suchen und auf diese reagieren. Im Fall von ssh sucht man nach der Ausgabe “password:”. Findet expect dieses, soll es einen vorgegebenen Wert einsetzen und mittels Enter bestätigen. Wenn man nun noch ein bisschen Bash-Magie betreibt kommt dieses Script heraus.

Der Aufruf läuft dann so:

./sshlogin.exp password 192.168.1.11 who

In dieser Variante wird immer der Benutzer root verwendet, man kann das Script aber einfach noch um einen weiteren Parameter erweitern, schon ist der Benutzername auch variabel.

Und was war mein Anwendungsfall? Darüber gibt es demnächst einen Artikel… 😉

Links:
bash.cyberciti.biz

[Quicktip] MySQL Query-Ergebnis per Console in eine CSV Datei exportieren

Mit phpmyadmin und Konsorten ist es kein Problem, Ergebnisse von SQL Abfragen in CSV-Dateien zu exportieren. Problematisch wird es allerdings, wenn man eine aufwändigere Abfrage hat, die den php Timeout provoziert, oder aber man keinen Web-Client zu Verfügung hat. Dann greift man zur Konsolenversion von MySQL – welche diesen Export nicht direkt anbietet. Mittels ein bisschen Bash-Magie kann man sich aber behelfen:

mysql --database=database --execute="select a from b where a>1;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > filename.csv

Was passiert? Die Abfrage wird ausgeführt und die Ergebnisse werden in Textform ausgegeben. Mittels Pipe wird die Ausgabe an “sed” weitergegeben, welches diese in das CSV Format umwandelt und anschließend in die Datei “filename.csv” schreibt.

Via snipplr.com