Externe mit LUKS vollverschlüsselte Festplatte unter Ubuntu 20 mounten

Komfortabler Weise nimmt einem Ubuntu die meiste Arbeit bereits ab, wenn es um das Mounten verschlüsselter Platten geht.
Schließt man eine solche an, so begrüßt einen ein Passwort prompt und mountet dann die /boot partition

Die anderen Partitionen werden allerdings nicht gemountet.

Darum sehr Ihr auf der Platte erstmal nur den Kernel, die InitRD, Grub etc.
Um die anderen Partitionen zu mounten, macht zunächst ein lvscan um auf angeschlossenen Block Devices nach logical volumes zu suchen.

Ihr könnt sehen, dass es aktive, nicht gemountete LVMs gibt.
Mit vgchange -ay könnt Ihr die aktiven Volumegroups listen, dadurch bekommt Ihr die namen der LGs raus.

In /dev/mapper sind softlinks, die auf devices pointen.
Mountet dann das Device, dessen Softlink vom Namen her zu der Partition Passt, die Ihr mounten wollt.

Jetzt könnt Ihr auf die Daten der Partition zugreifen :)

Cheers,
Ori


Mounting external LUKS encrypted drive on Ubuntu 20

Conveniently in Ubuntu Desktop OS's if you connect an external whole disk encrypted drive, it will ask you to input a password and mount it.

So far so convenient.
However it does not mount all partitions, but ony the boot partition.

This is why you can only see the the kernel, the init ramdisk, grub etc.
To mount the other partitions first use lvscan to scan for logical volumes on all connected block devices.

You can see that one LG (logical group) is currently mounted, the other is not. Using vgchange -ay you can list the active volumegroups to get thier label.

The label is a softlink for a device. You need the devicename to mount the partition. Then check the content of /dev/mapper to see the device name.
Then create a mountpoint and mount the partition.

And now you can access the content of that partition :)

Cheers,
Ori


Daten per InfluxDB in Grafana abbilden

In diesem Artikel soll es darum gehen, wie man mit InfluxDB Daten in Grafana abbilden kann. Ich gehe davon aus, dass Ihr bereits eine bestehende Grafana Installation und eine InfluxDB habt, in die Ihr Daten kippen könnt.

Zum einsammeln der Daten benutzen wir Telegraf.
Die Installationsanleitung ist relativ straight forward.

Telegraf kommt mit diversen Plugins zum erheben von Daten daher.
Wir sehen uns das Modul input.exec an.

Die Daten die wir einsammeln werden sind Statistiken darüber, wieviele Karten in einem Kanboard in welchen Spalten eines Projektes liegen.

Kanboard kommt von Hause aus schon mit einem Tool zum erfassen dieser Daten namens CLI daher. Ein Beispiel Output von CLI wäre:

2020-03-20,3,9,1,0,0,13

Komma separiert stehen hier das Datum der Messung und die Werte wie viele Tickets sich in den einzelnen Spalten befinden.

Jetzt brauchen wir nur noch ein Script, welches diese Daten im InfluxDB Stil bereitstellt. InfluxDB arbetiet mit Series, also serien von Daten.

Eine Serie besteht dabei aus Messwerten.
Zusammen mit einem Zeitstempel bilden diese Daten dann einen Datenpunkt. Nähere Details dazu finden sich hier.

Hier wäre, wie der Datensatz für im InfluxDB Stil aussehen kann.

 kanban-project-23,host=kanban backlog=3,blocked=0,done=13,ready=9,review=0,wip=1 1584685951000000000

"kanban-project-1" ist die Serie
"host=kanban" ist ein der Serie zugeordneter Tagset (die selbe Serie kann für unterschiedliche Dinge gemessen werden.
Eine leerstelle, gefolgt von Key=Value pairs.
Eine leerstelle, gefolgt von einem epoch Zeitstempel (Millisekunden seit dem 01.01.1970)

Jetzt bräuchte man nur noch ein script, welches die Daten in diesem Format bereitstellt.

Gestatten, project-column-stats.sh, welches als ersten Parameter die Projekt ID erwartet.

Telegraf kann dieses script jetzt ausführen, indem Ihr der /etc/telegraf/telegraf.conf auf dem Client folgende Zeilen hinzufügt.

 [[inputs.exec]]
    commands = ["/path/to/project-column-stats.sh <PROJECT ID>"]
    data_format = "influx"

ACHTUNG: Das Script muss für den User Telegraf ausführbar sein!

Wenn Ihr alles richtig gemacht habt, könnt Ihr jetzt in Grafana eine Query für eure Daten schreiben.

SELECT mean("backlog") as backlog, mean("wip") as wip, mean("blocked") as blocked, mean("ready") as ready, mean("review") as review, mean("done") as done FROM "autogen"."kanban-project-14" WHERE $timeFilter GROUP BY time($__interval) fill(null)

Das Ergebnis sieht dann so aus.


[regex] SED's gierige kleine quantifier

Ein Problem über das ich im Kontext REGEX öfter gestoßen bin.

Sed beherscht leider keine non greedy quantifiers.
Bedeutet, dass mit sed kein suchmuster geschrieben werden kann, welches nur auf den ersten Treffer eines Suchmusters wirkt. Es wird immer der letzte treffer des Suchmusters greifen.

In perl würde das Suchmuster ^.*?XYZ alles von Beginn der Zeile bis zum ersten auftauchen von XYZ treffen.
Ich suche noch eine Passende AWK Syntax dafür...


Awsome things: regextester

Ich habe grade die Seite regextester.com entdeckt und dachte, die kann ich einfach mal hier festhalten. :)


Wordpress passwort über die DB zurücksetzen

Sollte man mal für eine der Wordpress Instzanzen das Passwort vergessen haben (oder es im keepass nicht mehr finden *hust*) hier eine kurze Anleitung, wie ihr das passwort fix neu setzen könnt.

  1. Mit der DB verbinden
    root@server# mysql -u root
  2. Die wordpress db finden und damit verbinden
    mysql> use wordpress;
  3. User finden, dessen pw Ihr setzen wollt
    mysql> UPDATE `wp_users` SET `user_pass` = MD5( 'SOMEPASSWORD' ) WHERE `wp_users`.`user_login` = "SOMEUSER";


Awesome things: atome bauen mit sed

mit sed -e 's/REGEX/suchwort/g' kann man "suchwort" durch "REGEX" ersetzen. So weit so bekannt.

Man kann mit sed allerdings auch Atome bauen.
Das ermöglicht es beispielsweise einen Satz neu zu sortieren.

echo "hallo test world" | sed -e 's/\(.*\) \(.*\) \(.*\)/\1 \3 \2/'

Ein Atom wird in Runde klammern gefasst und ist ein regex.
(regex1) (regex2) (regex3) (regex4)
Der regex in diesem Fall ist .* matcht auf alles.

Somit ist folgendes in den Atomen gespeichert:
ATOM1=dies
ATOM2=ist
ATOM3=ein
ATOM4=satz

Jetzt können diese Atome mit \<Atom> neu angeordnet werden.


Awsome Things: column

Column bereitet daten in spalten auf.
Mit -t werden die columns als table aufgezeigt.
Mit -s kann ein Delimiter definiert werden, wird -s nicht definiert ist blankspace der Delimiter.

Beispiel: mount

Beispiel: mount mit column -t


Awesome one-liners: disk usage

Hier ein netter one-liner, um schnell rauszufinden, wo große Datenmengen liegen:

du -cshx /* | grep G

stderr nach /dev/null, da das proc sonst errors wirft. Bei dem Grep allerdings ohne Sinn :-)

Erklärung:
-c "produce a grand total" rechnet die Dateigrößen in dem Verzeichnis zusammen
- s (seperate-dirs) for directories do not include size of subdirectories
-h human readable
-x skip directories on different file systems


Awesome things: lolcat

Einfach mal sachen nach lolcat -a pipen.
Macht die Welt besser :)