ZN80.NET

Carstens Blog

Category: Unix/Linux (page 1 of 2)

Java 8 unter macOS 10.13

Für Netbeans 8.2 braucht man Java 8. Warum auch immer. Du kannst Java 8 mit Hilfe von homebrew installieren. Einfach und bequem.

Als erstes die Rezepte aktualisieren, dann die Rezepte für Java 8 laden und anschließend installieren.

brew update
brew upgrade all
brew tap caskroom/versions
brew cask install java8

Danach findet man Java 8 und die anderen Versionen im Ordner

/Library/Java/JavaVirtualMachines/jdk-*/Contents/Home

Anschließend die netbeans.conf Datei mit einem Editor öffnen:

vim /Applications/NetBeans/NetBeans\ 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

und die Zeile um netbeans_jdkhome ändern:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home"

Kommentarzeichen entfernen und den Pfad zu JDK 8 einfügen. Fertig!

Up1 auf uberspace installieren

Mit Up1 lassen sich Daten verschlüsselt mit Freunden teilen. Daten können dabei Dateien jeglicher Art und Text sein. Das gute an Up1 ist aber, dass die Daten im Browser verschlüsselt und erst danach auf den Server hochgeladen werden. Nach dem Upload enthält die URL eine Zeichenkette die als Schlüssel für die Daten dient. Ohne diesen Schlüssel lassen sich die Daten nicht anzeigen.

So können Bilder geschützt z.B. per E-Mail oder Messenger ausgetauscht werden, ohne das man irgendwo Accounts anlegen muss oder sich mit Uploadseiten und Passwörtern auseinander setzen muss. Dadurch das das Passwort hinter einem #-Zeichen im Browser steht, wird es auch nicht an den Server übertragen und bleibt in eurer Hand bzw. in eurem Browser und nur dort!

Vorraussetzungen für dieses How-To

  • ein Konto bei uberspace.de
  • eine aufgeschaltet Domain (z.B.: example.org)
  • ein wenig Erfahrung mit dem Terminal und Linux Commands

Installation

Am besten erstellst Du dir ein app Verzeichnis und klonst dort das Up1-Repository hinein

[user@antila ~]$ mkdir app
[user@antila ~]$ cd app
[user@antila app]$ git clone https://github.com/Upload/Up1
Klone nach 'Up1' ...
remote: Counting objects: 1036, done.
remote: Total 1036 (delta 0), reused 0 (delta 0), pack-reused 1036
Empfange Objekte: 100% (1036/1036), 232.47 KiB | 0 bytes/s, Fertig.
Löse Unterschiede auf: 100% (612/612), Fertig.
Prüfe Konnektivität ... Fertig.
[user@antila app]$

Dann in das Verzeichnis wechseln, die Beispielkonfiguration für den Server und Client kopieren und im Server-Verzeichnis die Node Pakete installieren.

[user@antila app]$ cd Up1/
[user@antila Up1]$ cp server/server.conf.example server/server.conf
[user@antila Up1]$ cp client/config.js.example client/config.js
[user@antila Up1]$ cd server
[user@antila server]$ npm install

Konfiguration

Für die Konfiguration brauchen wir zwei Angaben. Zum einen einen freien Port für den Service und zweitens einen API-Key der vom Server- und Client-Teil benutzt wird um die Dateien zu ver- und entschlüsseln.

Um diesen API-Key zu generieren benutzen wir einfach date und md5sum

[zn80@antila Up1]$ date | md5sum

Der lange String der dabei herauskommt wird in der server/server.conf bei api_key und in der client/config.js bei upload.config.api_key eingetragen.

Und Du brauchst natürlich noch den freien Port auf deinem Uberspace. Freie Ports gibts es nur zwischen 61000 und 65535. Ob ein Port noch frei ist, kannst Du mittels

/usr/sbin/ss -ln | fgrep 61234

überprüfen. Wird nichts im Terminal angezeigt, dann ist der Port noch frei und du kannst ihn in die server.conf und in die .htaccess eintragen.

"http": {
"enabled": true,
"listen": ":61234"
},

Um den Zugriff über den Browser zu musst Du die Node-Anwendung noch bekannt machen. Ein Weg ist, eine Sub-Domain einzurichten und dort mittels .htaccess den Zugriff umleiten.

[user@antila server]$ cd -P ~/html/
[user@antila html]$ cd ..
[user@antila user]$ mkdir up1.user.net
[user@antila user]$ cd up1.user.net 
[user@antila up1.user.net]$ nano .htaccess

Füge folgenden Text in die .htaccess ein:

RewriteEngine On
RewriteRule (.*) http://localhost:61234/$1 [P]

Jetzt starten wir den Server und prüfen ob das mit der Umleitung geklappt hat.

cd ~/app/Up1/server
node server.js

Wenn unter http://up1.example.org/ jetzt ein Upload Button von Up1 erscheint, super! Mit STRG+C kannst Du den Server vorerst beenden.

Als Service einrichten

Damit das ganze auch automatisch und im Hintergrund als Service funktioniert, kannst Du ihn als Daemon einrichten.

[user@antila server]$ test -d ~/service || uberspace-setup-svscan
[user@antila server]$ uberspace-setup-service up1service node ~/app/Up1/server/server.js

Der Service steht jetzt und Du musst nur noch eine Kleinigkeit anpassen. Und zwar müssen wir dem Service noch mitteilen, dass er vorher in das Verzeichnis unserer App wechseln muss. Dazu öffnest Du die ~/service/up1service/run Datei und fügst ein cd ~/app/Up1/server/ hinzu. Die letzten Zeilen sollten dann so aussehen:

# Now let's go!
cd ~/app/Up1/server/
exec /usr/local/bin/node /home/zn80/app/Up1/server/server.js 2>&1

Um den Service nun dauerhaft laufen zu lassen, führst du folgenden Befehl aus:

svc -du ~/service/up1service

HTTPS Zertifikate

Damit das auch alles über HTTPS funktioniert, musst Du in deiner Zertifikate-Konfiguration die gewählte Sub-Domain eintragen. In unserem Beispiel also die up1.example.org.

Wie Du deinen uberspace mit LetsEncrpyt Zertifikaten austattest steht im uberspace-Wiki.

Fehlersuche

Und falls mal etwas nicht mehr funktioniert, kannst Du das Log-File von deinem Service mit dem Befehl

tail ~/service/up1service/log/main/current | tai64nlocal

anschauen.

Nicht vergessen, die Datei down im Verzeichnis des Services (~/services/up1service) löschen, bevor Du deinen Dienst wieder startest.

Links und mehr

Und nun viel Erfolg und fröhliches Teilen!

Keybase Encrypted Filesystem

Moinsen,

vielleicht kennst du Keybase.io schon. Wenn nicht, dann hast du wirklich etwas verpasst. Keybase ist unter anderem ein Dienst, bei dem man viele seiner Online-Identitäten verifizieren und zusammenfassen kann. Was ich allerdings total verpennt habe, ist die Tatsache, dass Keybase.io seit fast einem Jahr eine Möglichkeit bietet, on-demand verschlüsselt auf sehr einfacher Art und Weise Dateien auszutauschen. Und wie das KBFS funktioniert, will ich mal versuchen zu erklären.

Ein kleiner Einblick in das /keybase/public/cblte Verzeichnis

Ein kleiner Einblick in das /keybase/public/cblte Verzeichnis

Als erstes musst du dir das Installationsprogramm der “neuen” Keybase.io-App herunterladen. Nach der Installation wird bei erfolgreicher Anmeldung auf deiner Festplatte ein Ordner erstellt. Unter macOS befindet sich dieser direkt im Root der Festplatte. Unter Windows wird ein Laufwerk K: eingebunden.

Öffentliches

Für öffentliche zugängliche Datei, legst du diese einfach in deinen Benutzerordner im Ordner /keybase/public. Die index.md Datei (z.B.) kann dann jeder über den Browser oder per Konsolenbefehl abrufen:

cat /keybase/public/cblte/index.md

Aber das beste ist, dass diese Datei (markdown) auch über https://cblte.keybase.pub als normale HTML Webseite gerendert und abgerufen werden kann. Cool!

Doch lieber geheim?

Doch wenn man nun nichts öffentlich teilen will sondern im geheimen mit jemandem teilen möchte, so geht das auch. Und zwar gibt es noch den Ordner

/keybase/private/cblte

bzw. den mit eurem Keybase.io Namen. Wenn du nun etwas mit wem anderen teilen möchtest, dann kannst du einfach die Namen mit Komma getrennt aneinander hängen. In meine Fall möchte ich gerne Dateien mit ruedigerp teilen.

/keybase/private/cblte,ruedigerp

Es lassen sich auch alle anderen verfügbaren Accounts benutzen. Wenn du nur den Twitternamen hast, dann benutze den doch einfach

/keybase/private/cblte,ruedigerp@twitter

So einfach ist das. Nun kann ich Dateien in diesen Ordner werden und ruedigerp sieht sie automatisch in seinem Ordner. Sobald er sie öffnen, kopieren oder verschieben möchte, wird die Datei heruntergeladen.

Die Antwort von Rüdiger ist nun auch in der Datei.

Wie du siehst, sehr einfach und unkompliziert. Einzig ein wenig mit der Konsole oder dem Terminal sollte man umgehen können. Ansonsten ist das keybase.io-Filesystem einfach zu bedienen und einfach zu benutzen. Dropbox und GDrive wird es dennoch nicht ersetzen können, aber sinnvoll ergänzen.

 

 

Die Tribute von Gast, oder wie man alle SSH Verbindungen aus der eigenen trennt

cowsay

Heute haben wir noch ein kleines Spiel gespielt. Die Aufgabe war es, als längster auf dem Rechner vom Dozenten zu verweilen und alle anderen hinauszuwerfen. Die eigenen Prozesse darf man ja abschießen und somit ist das möglich, dass man anderer SSH Verbindungen kappt.

Nach dem Start hat der Dozent den SSH-Dienst dann nach ein paar Sekunden beendet, so dass sich niemand erneut anmelden konnte. Der Gewinner war der, der als letztes noch verbunden war. Leider habe ich in der ersten Runde nicht so gut gespielt und meine Verbindungen wurden immer frühzeitig getrennt.

Doch jetzt habe ich den passenden Befehl gefunden. Mit der Hilfe von einem Freund ist folgender Befehl entstanden:

while true;do for i in $(ps fauxww | egrep "bash" | grep -v $$ | awk {'print $2'}); do /bin/kill -9 $i; done; sleep 1; done

In einer Endlosschleife werden alle Prozesse getötet. Die Liste der Prozesse wird dabei gefilter und die eigene PID wird ausgeschlossen.

#scripting Kopiere jede zehnte Datei in einen anderen Ordner

Für ein Zeitraffer-Projekt haben wir zwei GoPro Kameras an unterschiedlichen Orten positioniert und sie alle 60 Sekunden ein Bild aufnehmen lassen.  Das ist auch leider die maximale Zeit die man an der GoPro einstellen kann. Weil wir aber so viele Bilder gar nicht benötigen, hatte ich damals ein Script geschrieben, dass die  Datei auf der SD-Karte indiziert und dann nur jedes zehnte Bild kopiert.

Bei diesem Zeitraffer-Projekt nun habe ich erstmal alle Bilder gesammelt. Immer irgendwie in Ordner die ich nach dem Tag benannt habe, an dem ich den Import durchgeführt habe. Jetzt gilt es, diese vielen Datei auszusortieren und für das Zeitraffer-Video brauche ich wirklich nur jedes zehnte Bild. Ist ja ein Bauprojekt was über 2 Jahre geht. Da braucht es nicht so viele Bilder.

Tja, und was soll ich noch lange erzählen, das Kommando, welches über alle Verzeichnisse läuft und nur jede zehnte Datei kopiert passt in eine Zeile. Naja in zwei, denn ich habe es erst ausprobiert und dann einen Alias erzeugt.

ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner

daraus macht man dann mit

alias cpfiles="ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner"

ein Alias und fügt den in den folgenden Loop ein

for d in ./*/ ; do (cd "$d" && cpfiles); done

Jetzt wechselt man in das Verzeichnis mit den ganzen GOPRO Ordnern und führt den Loop aus. Damit werden die Datei schon sauber in ein extra Verzeichnis kopiert. Da nicht verschoben wird, kann in der Nachbearbeitung immer noch das ein oder andere Original-Bild nachgeladen werden.

Von hier, hier und hier habe ich das zusammengebaut.

« Older posts

© 2019 ZN80.NET

Theme by Anders NorenUp ↑