Posts mit dem Label QNAP werden angezeigt. Alle Posts anzeigen
Posts mit dem Label QNAP werden angezeigt. Alle Posts anzeigen

Mittwoch, 25. März 2015

Keinen Zugriff mehr auf NAS QNAP T412

Mit erschrecken musste ich gestern feststellen, dass ich keinen Zugriff mehr auf mein NAS hatte.
Weder das Webinterface, noch die freigegebenen Ordner und Laufwerke liessen mich aufs NAS. Sogar per ssh konnte ich mich nicht verbinden. Lediglich ein ping war noch moeglich. Selbst mit einem zweiten Rechner war es mir nicht moeglich aufs QNAP zuzugreifen.
Die Lampen am NAS zeigten keine Auffälligkeiten, auch ein Neustart des Gerät half nicht.

Verzweifelt fing ich an zu googlen -> ohne Erfolg, dieses Problem schient nicht auf das letzte Update zurueckfuehrbar zu sein.
Da kam mir die Idee die ganze Sache nochmal ueber Linux zu versuchen. Diesmal klappte es zum Glueck. Ich hatte Zugriff. Mir fiel ein Stein vom Herzen, nichts war kaputt und es sind auch keine Daten verloren.
Unter Linux loggte ich mich nun auf die Weboberflaeche ein und sah die letzten Benachrichtigungen durch. Dabei wurde mir die Ursache sofort klar: Meine IPs waren geblockt (dauerhaft).


  • ich hatte vor kurzem das Passwort fuer den Zugang zum NAS geaendert 
  • ich hatte noch davor das dauerhafte blocken von IPs, die sich falsch einloggen, eingestellt
  • meine verbundenen Netzlaufwerke haben autologin
  • --> Fazit: Ich werde geblockt!!!

Abhilfe:


  • Netzlaufwerke neu einrichten
  • freigeben der IPs




Freitag, 7. Februar 2014

Java Runtime.exec() in Kombination mit fdupes

Zum Pruefen meines Bilderordners auf dem NAS,  schreibe ich gerade ein JAVA Programm. Es soll alle Duplikate finden  und mir anzeigen, danach soll ich auswaehlen koennen welche geloescht werden koennen.

Unter Linux gibt es da ein tolles 'Tool' genannt fdupes. Damit lassen sich auf der Commandozeile ziemlich schnell Duplikate finden. Die Syntax ist ganz einfach:

fdupes -r <VerzeichnisInDemNachDuplikatenGesuchtWerdenSoll>

Auf der Kommandozeile funktioniert dies prima, aber aus dem Javaprogramm heraus ist es irgendwie nicht so trivial.

Ich versuchte
 // pfad aus gewaehltem Ordner in pt speichern
 pt =chooser.getSelectedFile().getAbsolutePath();
 p= Runtime.getRuntime().exec("fdupes -r " +  pt);

Dies funktioniert auch prima, aber sobald in diesem Pfad ein Leerzeichen auftaucht (beispielsweise "Dokumente und Einstellungen") lieferte es mir keine Duplikate zurueck. Und das obwohl ich ueber die Commandozeile fuer den selben Eintrag Duplikate angezeigt bekam.

Die Loesung ist eigentlich recht einfach, aber ich habe Ewigkeiten gebraucht um sie zu finden (google und stackoverflow sei dank). Deshalb zur Erinnerung ins Blog:

getRuntime().exec(string) gibt es auch als getRuntime.exec(string[])

Das bedeutet ich kann auch ein Array von Strings uebergeben. Wobei das erste Element der Befehl ist und die restlichen Elemente Paramter.

Also wird noch ein String-Array eingefuehrt -> pth[]
String pth [] ={"fdupes","-r",pt};
Dies bekommt die Elemente fdupes als Kommando , "-r" als ersten Parameter (rekursive Suche in allen Unterordnern) und schliesslich noch den absoluten Pfad in dem gesucht werden soll.
Nun kann die Sache so ausgefuehrt werden: 

p= Runtime.getRuntime().exec(pth);

Und siehe da, nun klappt es! :) Ich habe Feuer gemacht!

Donnerstag, 12. Dezember 2013

Hub / Switch an Fritzbox 7317 funktioniert nicht (richtig)

Mein an der Fritz Box angeschlossener Hub / Switch funktionierte nicht mehr. Ich bestellte also einen Neuen. Leider wollte der auch nicht wie gewohnt funktionieren, also einstöpseln und loslegen war nicht...

Nun verband ich das NAS (QNAP) über Hub mit der Box. Der Ping lieferte immer nur Zeitüberschreitung. Nach etlichem rumprobieren, dachte ich, hängst du mal den Laptop ans Hub und schaust mal ob da etwas ankommt. Und welch Wunder, am Laptop kommt was an und plötzlich ist sogar das QNAP anpingbar.
Kabel raus aus dem Laptop -> ping tot. Also Kabel erstmal wieder rein.

Nun mal am NAS in die Web Konfiguration geschaut. Es erscheint dauernd ein Meldungfenster:
"Das System hat erkannt, dass Ihr DNS-Server die Hosts nicht auflösen kann; möglicherweise funktionieren einige Anwendungen nicht richtig." .

Sehr merkwürdig. Irgendwas ist hier faul. Nach ca. 2 Stunden herumsuchen und probieren habe ich die Ursache gefunden. Weder Nas noch Hub sind schuld. Die olle Fritzbx ist es! Hier ist doch irgendwie (ich wars nicht :) ) Dieser IPv6 kram aktiviert worden. Außerdem fehlten alle Portfreigaben. In den Netzwerk Einstellungen der Fritzbox unter IP Adresse vergeben, habe ich alles IPv6 Zeug deaktiviert und schon lief die Sache wieder.

Mit aktiviertem IPv6 zeigte mir die Box alle verbundenen LAN Geräte mit 10 MBit angebunden an, nach der Deaktivierung waren es wieder gewohnte 100 MBit. Kein Wunder, dass ich bei der letzten Forza Session so extrem laggy war. Ich hoffe nun läuft auch die XBox 360 Zockerei wieder ordentlich.

Sonntag, 14. April 2013

QNAP - Cronjob Script zum killen eines Prozesses

Da mir auf dem QNAP immer wieder der php Prozess die Prozessorlast und den load hochschraubt und ich noch nicht dahintergekommen bin, was den Prozess startet, habe ich nach einem Ausweg gesucht.

Ziel:
Erstellung eines Cronjobs, der alle X Minuten prüft ob der php Prozess läuft.

Die vorinstallierte top Version lässt leider keine Optionen zu:


top: invalid option -- n
BusyBox v1.01 (2013.02.28-18:30+0000) multi-call binary

Usage: top [-d <seconds>]

top provides an view of processor activity in real time.
This utility reads the status for all processes in /proc each <seconds>
and shows the status for however many processes will fit on the screen.
This utility will not show processes that are started after program startup,
but it will show the EXIT status for and PIDs that exit while it is running.

Deshalb wird per ipkg install ein neues top installiert:

ipkg install atop

Nun erstelle ich unter /share/ ein neues Verzeichnis scripts

mkdir /share/scripts
cd /share/scripts/

Hier soll nun das Script rein. Also erstelle ich die Datei killphp.sh:

vi killphp.sh

Und fülle sie mit folgenden Zeilen:

#!/bin/sh
d=`date`
pid=`atop -p 1 1 | grep php | cut -f1 -d" "`
txt=`atop -pc 1 1 | grep php`
if [ "x$pid" = "x" ]; then
  echo  $d " - Kein php Prozess gefunden" >> /share/scripts/killphp.log
else
  echo $d " - php Prozess " $pid " gekillt" >> /share/scripts/killphp.log
  echo $txt >> /share/scripts/killphp.log
  kill $pid
fi

Hier wird der aktuelle Datum/Zeit Stempel in d gespeichert. pid ist die ProzessId von php. txt gibt den Pfad von php zurück. Wenn nun kein php Prozess gefunden wird, schreibt er dies in das Logfile killphp.log. Wird der php Prozess gefunden, so wird die ProzessId und das php gekillt worden ist ins Logfile geschrieben. Ausserdem kommt der Pfad des Prozesses dazu und natuerlich wird der Prozess noch gekillt.

Jetzt noch die Logdatei erstellen.

touch killphp.log

Nun muss noch die Berechtigung der Dateien eingestellt werden. 

chmod 777 killphp.sh
chmod 666 killphp.log

Jetzt wird das ganze noch in die crontab eingetragen, so dass es alle 5 Minuten ausgeführt wird.

crontab -e

Hier diese Zeile einfügen:

*/5 * * * * /share/scripts/killphp.sh

Nun sollte sich die Datei killphp.log alle 5 Minuten um eine Zeile erweitern, und wenn der Prozess php anspringt, dieser wieder gekillt werden. Für den Fall, dass php benötigt wird müsste die Zeile in der crontab auskommentiert werden:

# */5 * * * * /share/scripts/killphp.sh