ich hab mal wieder ne ganze Menge Zeug im Internet gefunden. Nicht alles neu - dafür aber interessant. Viel Spaß beim durchblättern und so.
https://github.com/AnsiMail/AnsiMail/blob/master/INSTALLATION.md
https://github.com/dev-sec/ansible-os-hardening/blob/master/README.md
[https://fedoramagazine.org/use-sshuttle-to-build-a-poor-mans-vpn/](https://fedoramagazine.org/use-sshuttle-to-build-a-poor-mans-vpn/)
JSON ist der neue heisse shice auf allen erdenklichen Plattformen. Alle APIs die ich kenne und aktuell entwickelt werden geben ihren Senf als JSON dazu. JSON bedeutet JavaScript Object Notation und ist, nach den anfänglichen Bauchschmerzen die man hat weil JavaScript im Namen vorkommt, tatsächlich gar nicht soooo schlimm wie man es zuächst vermutet.
Natürlich darf man nun keine schicke XML erwarten, die man auch als Nachtlektüre lesen könnte. Vielmehr ist es mehrschichtig aufgebaut und man arbeitet sich so durch Arrays und Objekte durch, bis man an der Stelle ist die einen interessiert.
Das gute an der aktuellen Bewegung ist eigentlich, dass es überall nun APIs gibt, so kann man seinen kram endlich strukturiert weg skripten. Zwar hat das paar Jahrzehnte gedauert - aber mich hat ja auch keiner gefragt.
Wie dem auch sei: JSON ist gan passabel mittels JQ auf der Bash zu nutzen. Doch wie fängt man an?
Das muss man bei seinem Provider nachschauen wie das geht. In meinem Fall habe ich einfach mal bei HetznerCloud geschaut und bekomme ihn einfach, wenn in innerhalb meines Projekts auf Zugänge gehe und mir dort einen Key erstelle.
Natürlich macht auch bei einer API jeder was er für richtig hält. In Sofern ist es gar nicht so schlecht, wenn man sich in der Dokumentation bewegen kann.
Das ist der Teil, der wahrlich am einfachsten und am angenehmsten ist. Dazu nutzt man schlicht einen curl oneliner:
API_TOKEN=HIERISTDERUNTER1GEHOLTEAPITOKENSUPERDUPERKEYDRIN
curl -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions'
Schon bekommen wir Informationen von der API und können schauen was sie uns zu bieten hat. JSON ist in der Regel aber nicht cool formatiert - s jagen wir es zunächst durch JQ, damit es etwas schicker wird:
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq '.'
Was genau kann man mit dem Wust an Zeilen und Zeichen nun machen? Am eifnachsten schaut man sich um, indem man sich einen Überblick verschafft, was da eigentlich grade ankommt. Das geht mit dem Kommando keys
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq 'keys'
[
"actions",
"meta"
]
Damit kennen wir die oberste Ebene. Nun sollten wir vielleicht herausfinden ob es sich bei den Elementen um ein Objekt oder ein Array handelt. Dafür geben wir das erste Mal etwas nach dem Punkt an. Nämlich ein Teil der Ausgabe das wir uns anschauen wollen:
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq '.actions | type'
"array"
Wir sehen also, das actions ein Array ist. Das könnten wir der Reihe nach durchgehen, wenn wir wüssten wie lang es ist. Das finden wir schnell heraus, bevor es weiter geht
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq '.actions | length'
25
Soso, 25 Einträge hat das Array actions also. Wenn wir jetzt schauen wollen welche Objekte einen bestimmten Wert haben, so können wir hier einfach select benutzen.
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq '.actions[] | select(.command=="attach_to_network")
Damit bekommen wir dann alles zu sehen. Wenn uns aber nur die ID interessiert, dann können wir das gewünschte Feld einfach filtern, indem wir es hinten dran hängen
curl --silent -H "Authorization: Bearer $API_TOKEN" 'https://api.hetzner.cloud/v1/actions' | jq '.actions[] | select(.command=="attach_to_network") | .id'
Quellen und Links
In der aktuellen zeit vergeht nicht einmal eine halbe Stunde, ohne das irgendwas über Corona oder Covid-19 geschrieben wird. Obwohl Pandemien bereits bekannt sind, zeigt sich sehr unterschiedliches Verhalten und noch unterschiedliche Ansichten bezüglich des Umgangs mit der Thematik.
Ein Projekt was mir in letzter Zeit immer häufiger in die Timeline gespühlt wird ist Folding@home. Es handelt sich dabei um ein "Projekt für die Krankheitsforschung, das die Proteinfaltung und andere Arten von Molekulardynamik simuliert". Dafür braucht es viel Rechenpower. Durch die aktuelle dynamik und die Bereitschaft der Teilnehmer konnte damit der größte Supercomputer der Welt erschaffen werden.
Wer mitmachen möchte ist herzlich dazu eingeladen. Der Eintieg ist einfach und in der FAQ der Seite beschrieben. Wer ein Fan von Statistiken ist, erstellt sich vorher noch einen Passkey.
Auf meinen Linux-Systemen (RedHat basierend) konnte ich wie folgt:
export USERNAME=DERROCKER
export PASSKEY=1234567890ß123457890ß1234567890
export TEAM=12345
wget https://download.foldingathome.org/releases/public/release/fahclient/centos-5.3-64bit/v7.4/fahclient-7.4.4-1.x86_64.rpm
rpm -i --nodeps fahclient-7.4.4-1.x86_64.rpm
FAHClient --user=$USERNAME --team=$TEAM --passkey=$PASSKEY --gpu=true --smp=true --log=FAHlog.txt --power=full
Wer darauf keine Lust hat, kann das natürlich auch per Docker machen:
export USERNAME=DERROCKER
export PASSKEY=1234567890ß123457890ß1234567890
export TEAM=12345
docker run --name folding-at-home -e USER=$USERNAME -e TEAM=$TEAM -e PASSKEY=$PASSKEY -e ENABLE_GPU=true -e ENABLE_SMP=true --restart unless-stopped yurinnick/folding-at-home
und wer einen Kubernetes Cluster zur Hand hat ist natürlich auch eingeladen.
Das Ganze kann eine Weile dauern bis man eine Aufgabe zugewiesen bekommt. Aber dann geht es durchaus zur Sache und die Karre brummt.