Seiten

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

Mittwoch, 21. Februar 2018

Video-Download-Tool

Ich stehe immer mal wieder vor dem Problem, dass ich die ein oder andere Sendung im TV verpasst habe und gern nachträglich sehen will. Nun gibts ja Sender, die bieten via HbbTV die ganze Sendung an und es gibt Sender, die zeigen nur ne Vorschau und zwingen einen in ne App mit Registrierung und Geldeinwurf, in der man dennoch Werbung zu sehen bekommt. Ich will für die viele Werbung nicht noch Geld bezahlen. Also suchte ich nach einem Weg, die Videos so von der Seite zu holen und entdeckte youtube-dl.
Damit lässt vermutlich fast jedes Video aus dem Netz laden.


Link: https://rg3.github.io/youtube-dl/

Installation:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Ausführung:
youtube-dl <Link/zum/Lieblingsvideo>


 

Samstag, 27. Mai 2017

Synology NFS-Freigaben unter (K)Ubuntu einbinden

Freigegebene Verzeichnisse auf Netzwerkgeräten hab ich lange Zeit über Samba in mein (K)Ubuntu-System eingebunden, früher, weil ich noch ein Windowsgerät im Netzwerk hatte, später, weil ich zu faul war meine Skripte anzupassen und einfach den Status quo behielt. Dabei waren die Verzeichnisse direkt via /etc/fstab eingebunden.

Nun brachte das für mich mit dem Upgrade auf 16.04 und damit auf Systemstart systemd folgende Nachteile:
1. Der Rechner fuhr nicht mehr hoch, da die Netzlaufwerke natürlich bei Systemstart noch nicht vorhanden sind.
2. Nach Lösung von 1. fuhr der Rechner anschließend nicht mehr runter, weil die Netzlaufwerke noch in Gebrauch waren.

Es musste also eine Lösung her, und die heißt: Einbinden via NFS!
Leider geht dies nicht so leicht, wie ich vermutet hätte und alle Anleitungen, die ich fand bieten keine holistische Lösung, da alle den ein oder anderen Fallstrick unerwähnt lassen.

Nun also mein Weg zum Erfolg:

1. Eindeutige IP

NFS lebt von eindeutigen IPs, daher müssen die Geräte vom Router eindeutige IPs bekommen, in meinem Fall:
192.168.1.101 = Laptop
192.168.1.102 = NAS

2. NFS am NAS aktivieren

Unter Systemsteuerung -> Dateidienste  NFS aktivieren.


3. Gemeinsame Verzeichnisse am NAS freigeben

In der Systemsteuerung -> Gemeinsamer Ordner auf einem Ordner "Bearbeiten" wählen und dort die Registerkarte "NFS-Berechtigungen" ansteuern. 
Nun eine neue Regel erstellen.


  • Als IP vergebe ich meinen Laptop.
  • Mit Schreib-/Leserechten.
  • Alle Benutzer zu admin zu ordnen [Fallstrick 1: eine andere Auswahl führte bei mir nicht zum Erfolg, obwohl mein Laptop-User auch am NAS bekannt ist].
  • Sicherheit: sys
  • asynchron
  • und Zugriff auf Unterordner erlauben.

4. Freigabe am Laptop prüfen

Auf der Konsole kann man mit 
showmount -e 192.168.1.102
Überprüfen, ob die Freigabe geklappt hat und auch gleich, wie der Freigabepfad ist. Die Ausgabe sieht dann in etwa so aus:
$ Export list for 192.168.1.102:
/volume1/video 192.168.1.101
/volume1/photo 192.168.1.101
/volume1/music 192.168.1.101

5. Autofs am Laptop installieren

sudo apt-get install autofs

6. Autofs einrichten

Dazu müssen zwei Dateien bearbeitet werden

6a) auto.master

sudo nano /etc/auto.master
darin trägt man den Eingehängepunkt und die Datei ein, in der die NFS-Freigaben konfiguriert sind (--ghost gibt an, dass die Verzeichnisse auch sichtbar sind, wenn das Freigabe-Verzeichnis noch nicht gemountet wurde):
/media/NAS /etc/auto.nas --ghost
Anschließend den Einhängepunkt anlegen
sudo mkdir /media/NAS 

6b) auto.nas

Nun die Konfiguration auto.nas bearbeiten
sudo nano /etc/auto.nas
und darin die NFS-Freigaben samt Einhängepunkt festlegen
NAS_Video -fstype=nfs,rw,retry=0 192.168.1.102:/volume1/video
NAS_Bilder -fstype=nfs,rw,retry=0 192.168.1.102:/volume1/photo
NAS_Musik -fstype=nfs,rw,retry=0 192.168.1.102:/volume1/music

Zu erst der Einhängepunkt (z.B. NAS_Video). Folgend von den Optionen:
  • -fstype=nsf (Dateisystemtyp)
  • rw (Schreib- und Leserechte)
  • retry=0 (Mount gibt sofort aus, wenn Server nicht erreichbar ist, ansonsten versucht mount den Server zwei Minuten lang zu erreichen und blockiert eventuell.
Anschließend die Freigabe am NAS
  • <IP des NAS>:<Freigabeverzeichnis>
Fallstrick 2: Ich hatte bei Ubuntuusers gelesen, dass man die Option soft verwenden soll, um ein Einfrieren des Dateimanagers zu verhindern, wenn es zu Unterbrechungen kommt. Bei mir bewirkt die Option eben genau, dass der Dateimanager einfriert statt eine Verbindung herzustellen.

7. Rechte vergeben

Fallstrick 3: Was die Rechte-Zuordnung angeht sind die Anleitungsseiten recht dürftig, ohne gehts nämlich nicht und während ich anfangs noch dachte es müssen die Einhängepunkte gesondert mit Rechten versorgt werden, sind es dagegen doch die Dateien  /etc/auto.master und /etc/auto.nas die Rechte benötigen.
sudo chmod 644 /etc/auto.master
sudo chmod 644 /etc/auto.nas

8. Verküpfungen erstellen

Nun müssen die verbundenen Verzeichnisse einmalig über die Konsole angeredet werden und dann kann man im Dateimanager eine Verknüpfung dazu erstellen.
cd /media/NAS/NAS_Video
cd ..
cd /media/NAS/NAS_Musik
cd ..
cd /media/NAS/NAS_Bilder
Nun sind alle Verzeichnisse einmal verbunden wurden und sind im Dateimanager sichtbar. Es kann nun eine Verknüpfung erzeugt werden.

Freitag, 18. November 2016

JDownloader auf Synology NAS installieren

JDownloader ist als Downloadmanager so ziemlich unschlagbar, denn neben direkten Downloads, kann man damit auch Daten von One-Click-Hostern oder auch von Youtube inkl. Konvertierung herunterzuladen.

Seit der Anschaffung meines NAS lud ich fortan an weiterhin auf dem Laptop runter und verteilte die Daten dann übers Netzwerk aufs NAS. Je nach Datengröße und Dateimenge kann das mit unter Länger dauern. Warum also nicht direkt den JDownloader auf den NAS laufen lassen?

Eine kurze Internetrecherche stimmte mich zuversichtlich.

1. Java installieren

Synology bietet in ihren Paketquellen zur Zeit Java7 und Java8 an, ich erscheide ich mich für Java8, da der Support für Java7 endlicher ist.

2. Paketquelle einbinden

Danach muss die entsprechende Paketquelle eingebunden werden.
Im Paket-Zentrum -> Einstellungen -> Paketquellen folgende Quelle hinzufügen:

Name: SynoCommunity
Ort:     http://packages.synocommunity.com/

3. JDownloader installieren

Nach Hinzufügen der Paketquelle lässt sich "JDownloader 2 *BETA*" im Paket-Zentrum installieren.

Nach erfolgreicher Installation findet sich der Link zum JDownloader im Hauptmenü.

4. MyJDownloader

Da der JDownloader nur im Headless-Modus gestartet wird, bedarf es einen Umweg, um eine grafische Oberfläche zu erhalten, dies erfolgt über MyJdownloader. Nach der Registrierung kann man die Login-Daten auf dem NAS hinterlegen.

Dazu die Login-Daten für MyJDownloader in den Settings hinterlegen:

Als erste eine Konsole öffnen und sich via SSH oder Telnet (da ich im lokalen Netzwerke arbeite gehe ich das Risiko ein) zum NAS verbinden. Anschließend mit bspw. nano (intatllierbar aus oben genannter Paketquelle) die entsprechende Datei mit root-Rechten bearbeiten:
sudo nano /volume1/@appstore/JDownloader/cfg/org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json

und Passwort und E-Mail-Adresse hinterlegen.

Danach JDownloader staten und man kann via https://my.jdownloader.org darauf zugreifen.



5. Tipps

Tipp 1: Initial wird "JDownloader@root" angezeigt, dies kann man in den Einstellungen -> Profieinstellungen -> MyJDownloaderSettings: Device Name ändern.

Tipp 2: Die Entpack-Passwortliste ist initial leer, kann man aber leicht mit der Liste aus der lokalen Installation am Rechner befüllen: Liste am PC kopieren, in den Einstellungen -> Profieinstellungen -> Extraction: Password List zwischen [ ] einfügen.

Tipp 3: Beim ersten Hochfahren des JDownloaders hat das Starten nicht korrekt geklappt, nach zwei/dreimal starten klappte es.

Tipp 4: Browser-Plugin "Official MyJDownloader Addon" - damit lassen sich Links per Click'n'Load leicht zur Instanz auf dem NAS hinzufügen.

6. Und sonst?

  • Die WebUI via MyJDownloader ist durch aus klickreicher als die lokale Instanz am Rechner.
  • Zu dem ist die Instanz am Rechner nahezu komplett konfigurierbar.
  • Dafür ist der Download aber direkt auf NAS und muss nicht noch manuell übers Netz kopiert werden.
  • Wenn man den Downloader-Ordner lokal am Rechner einbindet, kann man die Dateien auch bequem umbenennen, ohne die umständliche UI von Synology verwenden zu müssen.


Samstag, 14. November 2015

Garmin Oregon manuell updaten (ohne WebUpdater)

Garmin stellt regelmäßig Firmware-Updates für die verschiedenen Geräte bereit. Dies ist durchaus praktisch, um Bugfixes oder Nachbesserungen zu erhalten.
Leider wird seitens Garmin der Weg über den hauseigenen WebUpdater bevorzugt, damit steh ich als Linux-Nutzer auf der Straße, denn der WebUpdater steht nur für Windows und Mac zur Verfügung.

Es gibt aber auch einen, wenn auch umständlichen, Weg die Firmware-Updates manuell durchführen zu können.

Welche Firmware-Version ist aktuell installiert?
Als erstes sollte man herausfinden, welche Firmware aktuell auf dem Gerät installiert ist.
Dies kann man durch einen Blick in ./Garmin/system.xml bzw. ./Garmin/GarminDevice.xml schnell beantworten.

system.xml:
<SoftwareVersion>
         Software Version 4.40
</SoftwareVersion>

GarminDevice.xml:
<SoftwareVersion>
         440
</SoftwareVersion>

Welche Firmware-Version ist die aktuellste von Garmin?
Dies lässt sich über das ChangeLog von Garmin herausfinden:
Oregon 6x0: http://www8.garmin.com/support/download_details.jsp?id=6157
In diesen Bsp. die Versionsnummer 4.60

Oregon 7xx: https://www8.garmin.com/support/download_details.jsp?id=10379
In diesen Bsp. die Versionsnummer 4.00

Wie lädt man die aktuelle Firmware herunter?
Der Link zum Download ist:
http://download.garmin.com/software/Oregon6x0_WebUpdater__XYZ.gcd
http://download.garmin.com/software/Oregon7xx_WebUpdater__XYZ.gcd

Wobei XYZ durch die jeweilige Versionsnummer zu ersetzen ist.
In dem o.g. Bsp. wäre der Link also:
http://download.garmin.com/software/Oregon6x0_WebUpdater__460.gcd
http://download.garmin.com/software/Oregon7xx_WebUpdater__400.gcd

Wie spielt man die heruntergeladene Datei aufs Gerät?
Die heruntergeladene Datei "Oregon6x0_WebUpdater__XYZ.gcd" muss in "GUPDATE.GCD" umbenannt werden.
Anschließend muss sie ins Verzeichnis ./Garmin auf das Gerät kopiert werden.

Update-Installation durchführen
Das Gerät muss ordentlich aus dem System ausgebunden und das USB-Kabel entfernt werden.
Danach startet man das Gerät über den Einschalt-Knopf. Ab jetzt wird das Update installiert und das Gerät darf bis zur Fertigstellung der Installation keines Falls ausgeschalten werden.

Fertig.

Montag, 1. Juni 2015

Skript mit grafischer Oberfläche automatisch starten, wenn USB-Gerät angeschlossen wird - Automatischer PQ-Download

Da mir es langsam auf den Keks geht, dass ich die erstellen Pocket Queries (PQ) von der Geocaching-Seite alle einzeln herunterladen und entpacken muss, wollte ich das ganze skripten.
Da der Download aber mit der neuen GC-API nicht mehr per wget möglich ist, brauch ich dazu Software, die mit der API kommunizieren kann, die fand ich schnell: http://geo.rkkda.com/ - hier das Untertool geo-pqdownload. 
Das passende Skript, das die PQ herunter lädt, entpackt und aufs Garmin kopiert, war auch schnell geschrieben; um das ganze hab ich noch ne grafische Oberfläche gepackt, damit ich weiß, dass der Vorgang noch läuft.

Nun soll das Skript immer dann starten, wenn ich mein Garmin an den Laptop anschließe und zwar ohne ein Passwort eingegeben zu müssen. Das stellte mich vor das Problem, dass das Skript so als root und nicht mit dem angemeldeten Benutzer gestartet wird, so dass ich weder Dateiberechtigungen, noch eine grafische Oberfläche bekomme.

Lösungsweg:

1. Als erstes muss man Details zum eingebundenen Gerät einholen. Dabei hilft dieser Befehl:
sudo blkid -o list -w /dev/null 
Beispiel-Ausgabe:
device                 fs_type        label             mount point                           UUID
--------------------------------------------------------------------------------------------------------------------------
/dev/sda1            vfat                                  /boot/efi                             43F4-DFAE
/dev/sda2            ext2                                 /boot                                   56acf68d-2c5b-4b69
/dev/sdd              vfat             GARMIN        /media/<user>/GARMIN         abcd-1234

2.  Als nächstes muss das entsprechende Gerät in /etc/fstab definiert werden:
UUID=abcd-1234       /media/<user>/GARMIN     vfat noauto,users,noatime,rw,sync    0       0

3. Um nun das ganze Skript automatisch auszuführen muss man eine udev-Regel erstellen.
3a) Dazu muss man vorbereitend die Geräteinformationen ermitteln:
lsusb
Beispiel-Ausgabe:
Bus 003 Device 006: ID abcd:1234 Garmin International

3b) Detailinformationen zum Gerät ermitteln:
sudo lsusb -vs  003:006 
So erhält man u.a. den Eintrag zur Seriennummer:
iSerial                  xxxxxyyyy1234
3c) Nun kann man im Verzeichnis: /etc/udev/rules.d eine neue Regel erstellen, z.B.: Garmin.rules
KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="xxxxxyyyy1234", SYMLINK+="GARMIN", ACTION=="add", RUN+="/home/<user>/Skripte/UpdatePQ_Helper.sh"
Wobei hier ein Gerät mit
  • Kernel-Einhängepunkt: /dev/sd?1
  • vom Typ: USB
  • mit der Seriennummer: xxxxxyyyy1234
  • Dateisystem-Einhängepunkt: GARMIN
  • Aktion: Hinzufühen (ADD)
gesucht wird. Sind alle Bedingungen erfüllt wird mit RUN das angegebene Skript gestartet - bei mir ein Hilfsskript.

4. Skriptaufruf
Ein Direktaufruf des Skripts ist nicht möglich, da so die grafische Oberfläche nicht sichtbar ist und wie o.e. nur mit root-Rechten ausgeführt wird.

Im Hilfsskript ist der Inhalt hier nur:
#!/bin/bash
#UpdatePQ_Helper.sh
DISPLAY=:0 LANG=de_DE.UTF-8 su -c /home/<user>/Skripte/UpdatePQ.sh <user>
DISPLAY=:0 LANG=de_DE.UTF-8 braucht man zwingend für die grafische Oberfläche.
Der zweite Teil lässt das eigentliche Skript mit einem bestimmten Benutzer ausführen.

Das Hilfsskript und das eigentliche Skript müssen noch ausführbar gemacht werden:
chmod a+x ~/Skripte/UpdatePQ.sh ~/Skripte/UpdatePQ_Helper.sh

5. Gerät anschließen
Schließt man nun das Gerät an, wird dieses automatisch eingehängt, das Skript gestartet und am Ende wieder ausgehängt.

Färtsch.

P.S. Um das alles herauszufinden, war doch ein wenig Google-Hilfe nötig, daher auch der Blogeintrag, sonst muss ich das wieder alles einzeln ermitteln, wenn ich mein System das nächste Mal neu aufsetze.

Sonntag, 22. März 2015

Wie wandle ich GPX-Dateien in eine Blog-fähige Karte um?

Die Frage stellte mich vor eine Aufgabe, die ich so nicht erwartet hätte. Anscheinend ist mein Anliegen so ungewöhnlich, dass es von anderen Nutzern kaum gewollt ist.
Wie bekomme ich nun meine im Urlaub mitgetrackten Daten in eine Karte, die sich nicht nur scrollbar in meinen Blog einbinden lässt, sondern auch noch alle Wegpunkte händeln kann?
Zugegeben, hab ich mir das sehr viel leichter vorgestellt, als es eigentlich ist. So ging ich davon aus, dass ich die erstellten Dateien einfach bei Google Maps hochladen kann und mir eine Karte mit meiner Wegstrecke angezeigt wird, und diese Karte einfach in meinen Blog einbinden kann. *Haha* ... wenn es denn so einfach wäre!

Erstmal die Fakten:
  • 47 .gpx-Dateien
  • mit 90k+ Wegpunkten
Steine, die mir in den Weg gelegt wurden:
  • Der Import bei GMaps verlangt eine CSV, XLSX oder KML-Datei.
  • Selbst wenn man eine KML-Datei importieren will, ist die Grenze hier bei 5MB pro Datei, mit max. 2k Wegpunkten.
  • Google akzeptiert maximal 10 Ebenen, damit 10 KML-Dateien. Sprich insgesamt 20k Wegpunkte.
  • Verschiedene Seiten im Netz, z.B. die, oder die können nur eine GPX verarbeiten.
  • In Google Earth, lassen sich zwar alle importieren, aber nicht als GMaps-Karte exportieren.
  • Nach Import aller Daten in Google Earth ist Spaß in der CPU angesagt, denn 100% werden von Google Earth veranschlagt und auf dem Rechner geht nicht mehr viel.
  • Versucht man hier den Export als KML-Datei, wird eine 97MB-Datei erzeugt.
  • In OpenStreetMaps lassen sich zwar die Wegpunkte importieren, eine Karte mit einer Strecke bekommt man aber nicht und muss diese händig erstellen.
  • Garmin "BaseCamp" ließ sich unter Linux (mittels Wine) nicht installieren.
  • QLandkarteQT lässt den Import aller Dateien zu, allerdings nicht den Export als KML-Datei(en).

Auf der Suche, wie ich nun aus meinen 47 Dateien eine KML-Datei erstellen kann, fand ich GPSBabel. Mittels Befehl:
gpsbabel -i gpx `for i in *.gpx; do echo -n " -f $i "; done` -o gpx -F AllGPX.gpx
lassen sich alle GPX-Dateien in eine GPX-Datei umwandeln.
(Beachte: Keine Leerzeichen im Dateinamen - Garmin-Geräte erzeugen Dateien standardmäßig mit Leerzeichen.)

Nun kann man die entstandene Datei noch ausdünnen und ähnliche Wegpunkte (in diesem Fall alle Wegpunkte, die weniger als einen Meter entfernt liegen) entfernen. Weitere Informationen dazu gibt es hier.
gpsbabel -i gpx -f AllGPX.gpx -x simplify,crosstrack,error=0.001k -o gpx -F simple.gpx
So verbleiben von 90k+ Wegpunkten immerhin noch 55k+ Wegpunkte.

Versucht man nun die entstandene ausgedünnte Datei in eine KML-Datei umzuwandeln, entsteht eine 97MB (ohne Ausdünnung 230MB) große Datei. Diese ist auf Grund ihrer Größe ebenfalls unnütz für GMaps.

Dann versuchte ich Openstreetmaps, das zwar mit der Datenmenge erstmal keine Probleme hatte, aber mir eine Karte mit Strecke verweigerte, so dass ich die Strecke händig nachmalen muss. Nicht gerade das, was ich will, denn ich will den bequemen Weg.

Nachdem mir nun langsam die Suchbegriffe ausgingen und ich sogar schon die zweite Ergebnisseite bei Google aufrufen musste, fand ich endlich GPSies, die Seite kann zwar meine zusammengefassten originalen 90k+ Wegpunkte auch nicht händeln - da die Dateigröße mit 10MB zu groß ist (max. 8MB zugelassen) - ist aber in der Lage die ausgedünnte GPX-Datei (mit 6,xMB) zu verarbeiten.

Die Seite hab ich nun genutzt, zeigt alle Wegpunkte gut an und lässt sich bequem per iframe-Tag in meinen Blog einbinden. Da es aber selbst-betitelt ein "Hobby-Projekt" ist, ahne ich schon, dass dies keine unendliche Lösung ist, aber immerhin schon mal ein Anfang und falls die Seite irgendwann den Dienst einstellen sollte, hoffe ich, dass es neue Lösungen gibt, die mir ein ähnlich einfachen Weg zur Verfügung stellen.

Mittwoch, 14. Januar 2015

MAC-Adresse ändern

Die MAC-Adresse stellt einen wesentlichen Parameter der Netzwerksicherheit dar, um die einzelnen Bereiche zu prüfen, ist es sinnvoll die MAC-Adresse zumindest temporär zu ändern. So die Idee. In meinem Fall, ist der Einsatz etwas profaner; in einem Anwendungsfall, der so sicher nicht gedacht ist: Das Hotel in dem ich aktuell bin stellt jedem Nutzer 30 Minuten kostenloses Internet zur Verfügung, danach ist eine Gebühr von A$ 5,50 pro Stunde fällig. Ganz schön happig für "Ich möchte nur mal eben bloggen, Fotos hochladen und noch schnell die sozialen Medien abgrasen, schaff das aber nicht in 30 Minuten."
Im Gegensatz zu anderen Hotels, die ein ähnliches Programm führen, wird man hier nicht über den Namen und die Zimmernummer authentifiziert, sondern über die MAC-Adresse. Was mich recht schnell auf die Idee bringt, meiner WLAN-Karte eine neue MAC-Adresse zu verpassen und die Magie der 30 Minuten erneut beginnen zu lassen. Ob dies nun legal ist oder nicht sei dahin gestellt, eine klare Aussage gibt es hier nicht und wird sicher in jedem Land anders gehandhabt. Aber wenn die Gebühr nicht so übertrieben hoch wäre, wäre ich sicher auch nicht auf die Idee gekommen, überhaupt einen solchen Weg einzuschlagen.

Hier kommt nun das praktische Tool macchanger zum Einsatz. Klar lässt sich die MAC-Adresse auch mit Bordmitteln, wie ifconfig lösen, allerdings bietet macchanger einige komfortable Funktionen, wie die zufällige Vergabe von MAC-Adressen.

Nach der Installation von macchanger habe ich mir noch ein kleines Skript geschrieben, das im laufenden Betrieb das Netzwerk deaktiviert, eine zufällige MAC-Adresse vergibt und das Netzwerk wieder aktiviert. Das Skript muss mit root-Rechten ausgeführt werden:
#! /bin/sh
stop network-manager
macchanger -a wlan0
start network-manager
Nun kann man wahlweise manuell nach 30 Minuten einfach das Skript erneut aufrufen oder einen cronjob erstellen, der automatisiert aller halben Stunde losläuft.

So viel sei gesagt: Ich liebe das "kostenlose" WLAN im Hotel. ;-)