Table of contents
- 15.12.2023 - kleingebäck - ein kleinanzeigen.de Backup Tool
- 23.08.2023 - Umweltschutz, Tourismus und Korruption auf und um Fehmarn
- 22.07.2023 - Fixing the obscure EMMS user interface
- 19.07.2023 - tablizer - a tool to manipulate tabular output of shell commands
- 15.08.2022 - kill privileged sessions on tmux detach
kleingebäck - ein kleinanzeigen.de Backup Tool
Wenn Ihr kleinanzeigen nutzt, kennt Ihr das Problem: Ihr habt eine Reihe von Anzeigen, einige davon vielleicht mit dem Handy erstellt, verliert den Überblick und schon sind 2 Monate vergangen, einige Sachen haben sich nicht verkauft und die Anzeigen wurden gelöscht.
Um sie wieder einzustellen, muss man die Bilder zusammenkramen, sich überlegen, welchen Text man nochmal geschrieben hatte etc pp.
Das ist nun vorbei: mit kleingebäck kann man seine Anzeigen auf Platte sichern.
Das Tool ist zwar ein Comandozeilen-Werkzeug und so vielleicht nicht jedermans Sache, aber: es hat keinerlei Abhängigkeiten und ist tatsächlich recht einfach zu verwenden:
Zunächst muss man seine “User-ID” bei Kleinanzeigen.de ermitteln. Dazu am besten eine der eigenen Anzeigen aufrufen. Auf der rechten Seite gibt es einen Link über den man die Liste der Anzeigen für den Benutzer sehen kann:
Dort geht man auf die Liste (im Screenshot rot markiert) und landet auf der Listingseite. In der URL-Zeile des Browsers findet man nun die User-ID:
Nun erzeugt man eine neue Datei in seinem Home-Verzeichnis namens
.kleingebaeck.hcl und trägt dort die User-ID sowie das Verzeichnis
in dem die Azzeigen gespeichert werden sollen ein:
user = XXXXX
outdir = "/home/tom/Data/Anzeigen"(XXXX durch Deine User-ID ersetzen!)
Nun einfach das Tool aufrufen: ./kleingebaeck
Sofern keine Fehler gemeldet werden, sieht es hernach in dem Verzeichnis so aus:
Und wenn man in eines der Verzeichnisse geht:
Das Tool kleingebäck kann man bei Github herunterladen.
Es gibt ausserdem eine Dokumentation auf englisch.
Falls Ihr Probleme mit dem Tool habt oder Anregungen loswerden wollt, eröffnet gerne bei Github einen Issue, gerne auch auf deutsch.
Umweltschutz, Tourismus und Korruption auf und um Fehmarn
Einleitung
Aktuell gibt es Planungen durch das Bundesumweltministerium im Bereich der Ostseeküste, von Fehmarn bis hoch nach Eckernfürde einen Nationalpark zu errichten. Dagegen regt sich reichlich Widerstand.
Dieser Widerstand ist rein wirtschaftlich motiviert, weil durch einen Nationalpark die Küsten nicht mehr in der Form genutzt werden dürfen, wie das derzeit der Fall ist. Surfer, Segler, Yachteigner, Badegäste, Angler und Fischer müssen ihren Kram zusammenpacken und verschwinden. Die durchaus lautstarke Kritik an dem Projekt kommt denn auch vom Who is Who der Tourismusbranche aus der Gegend.
Ich kann den Protest durchaus verstehen. Es gibt genug Leute, die zu 100% vom Tourismus abhängig sind, deren ganzes Geschäftsmodell mit den Touristen steht und fällt. Einerseits.
Andererseits haben den Protest keine normalen Werktätigen unterschrieben. Das sind alles Leute in irgendwelchen Führungspositionen, Unternehmer, Eigentümer - die Kapitalisten des Tourismus der Gegend nenne ich die einmal. Die nagen alle nicht am Hungertuch.
Schauen wir uns deren Argumentation einmal genauer an:
Wissenschaftlichkeit
Es gibt keine wissenschaftlichen Konzepte
Bis zum heutigen Tag sind keine wissenschaftlich erarbeiteten Konzepte präsentiert worden, wie die in der Grafik abgebildeten seeseitigen, landseitigen und atmosphärischen Belastungen durch einen Nationalpark Ostsee signifikant eingedämmt werden sollen.
(gemeint ist diese Grafik).
Es fängt damit an, dass es Konzepte gibt und Wissenschaft. Das hat erstmal nicht notwendigerweise etwas miteinander zu tun. Man kann ein Konzept auf wissenschaftlicher Grundlage erstellen, aber die Wissenschaft erarbeitet üblicherweise keine Konzepte, sondern erforscht die Welt um uns herum, bildet Theorien über die beobachteten Phänomene, versucht Beweise dafür zu finden, überprüft dies in Peer Review Prozessen umd kommt schliesslich zu einem Konsens. Dieser muss nicht dauerhaft bleiben, wissenschaftliche Theorien - auch wenn sie allgemein anerkannt sind - müssen falsifizierbar sein.
Man muss aus dem Vorwurf also zwei Fragen ableiten:
-
Gibt es wissenschaftliche Arbeiten zum Thema Meeresschutzzonen?
-
Ist ein Konzept für die Errichtung eines Nationalparks zum gegenwärtigen Zeitpunkt erforderlich?
Zur ersten Frage lassen sich viele wissenschatliche Arbeiten finden, hier mal exemplarisch nur eine, die insbesondere auch auf den Konflikt zwischen menschlicher Nutzung eines Meeresschutzgebietes und dem Naturschutz eingeht:
Weitere Publikationen nur von diesem einen Institut.
Leichter verdaulich findet man z.b. beim NABU Informationen dazu.
Es gibt jedenfalls genügend wissenschatliche Nachweise, dass ein Meeresschutzgebiet für die in dem Gebiet lebende Flora und Fauna immer ein Segen ist - die Bestände erholen sich, zum Teil werden vom Aussterben bedrohte Arten gesichert und vor allem bleibt die Biodiversität erhalten, bzw verbessert sich üblicherweise auch.
So traurig das ist und so schwer verdaulich es für die Tourismusbranche auch sein mag: ohne solche Schutzzonen würde sich niemand nachhaltig um den Artenschutz in solchen Gebieten kümmern. Und die, die es trotzdem unermüdlich versuchen, befinden sich im permantenten Konflikt mit der lokalen Politik, der Wirtschaft und der Bevölkerung. Will man einen echten Schutz erreichen, muss das mit Zwang durchgesetzt werden - und zwar explizit gegen die Interessen der Wirtschaft.
Der zweite Punkt nach der Frage nach einem Konzept stellt sich meiner Meinung nach eigentlich gar nicht. Der Minister schreibt ja explizit:
Dialogprozess mit Beteiligten vor Ort
Ob ein Nationalpark eingerichtet wird und wenn ja, auf welchen Flächen wird in einem intensiven Konsultationsprozess mit den Ostsee-Anrainerkreisen und -kommunen sowie gesellschaftlichen Interessensvertretungen an der Ostsee diskutiert.
Dazu wird das Umweltministerium im Laufe des nächsten Jahres Gespräche mit Beteiligten aus Tourismus, Fischerei und Politik vor Ort führen. “Wir wollen im Frühling des nächsten Jahres in Gespräche mit allen Beteiligten in der Region einsteigen“, sagte Umweltminister Tobias Goldschmidt. Am Ende dieses intensiven Prozesses könnte ein weiterer Nationalpark in Schleswig-Holstein Wirklichkeit sein.
An dem Punkt würde ich noch kein fertiges Konzept erwarten. Bei solchen Konsultationen schaut man sich erstmal an, welche Ideen es gibt, was die bringen sollen, was die Forschung sagt, was die Betroffenen sagen und wenn es irgendwann eine Einigung oder Entscheidung gibt, wird erst ein Konzept erarbeitet.
Trotzdem gibt es durchaus Konzepte anderer Meeresschutzgebiete an denen man sich orientieren kann. Hier ein Beispiel: Nachhaltiges Management von Küsten- und Meeresschutzzonen, Indien
Interessant ist diese Forderung nach einem ‘wissenschaftlichen Konzept’ aber auch, weil die Gegner auf der selben Seite weiter unten folgendes formulieren:
WORAN WIR GLAUBEN!Wir glauben, dass es bessere Hybridlösungen für den Naturschutz und die Nutzungsinteressen gibt. Unser Ziel ist ein zusätzlicher, kreativer und von der Allgemeinheit mitgetragener Umweltschutz auf Grundlage der Natura2000 Gebiete, den die Interessensverbände mit ökologischen Nutzungskonzepten unterstützen. Die Entscheidungsgewalt über Natur und Mensch bliebe in Schleswig-Holstein für heute, morgen und übermorgen.
Wenn man seinem Gegner Unwissenschaftlichkeit vorwerfe, kann man nicht mit Glauben argumentieren.
Bund vs. lokale Interessengruppen
Eine Kritik die man überall zu dem Thema liest ist, dass es nicht angehen kann, dass der Bund einfach über so eine Sache entscheidet und lokale Interessengruppen aussen vor bleiben.
Zum einen stimmt das nicht, siehe Zitat vom Minister weiter oben. Ob bei der Einbeziehung lokaler Gruppen, Verbände, Vereine, Wirtschaftsvertreter etc jedermann eingeladen ist, der eine Meinung dazu hat, steht natürlich auf einem anderen Blatt. So ist das eben in der Bundespolitik. Darüber kann man sich ärgern, was auch nachvollziehbar ist, aber am Ende haben irgendwelche lokalen Interessengruppen in einer Demokratie bei einer solchen Entscheidung nichts zu melden. Sie können sich zu Wort melden, die Politik kann sie annhören - muss sie aber nicht. Demokratisch gewählte Volksvertreter sind in ihrer Entscheidung letztlich frei.
Die Alternative wäre eine Diktatur der Wenigen und die ist weder für die Bevölkerung, noch für die Natur und übrigens auch nicht für die Wirtschaft besser.
Die Konsultationen mit der Tourismusbranche sind indes bereits abgeschlossen, nähere Infos über die dort getroffenen Festellungen und Aussagen, kan man hier finden (auch runterscrollen und die PDFs lesen). Der Tenor ist klar:
-
der Tourismus wird den Bach runtergehen, Wassersport, Camping, Vermietung, Regatten uvm wird es nicht mehr geben.
-
und es wird behauptet, die Tourismusbranche täte schon recht viel für den Umweltschutz.
Letzteres kann ich als Bewohner der Region ganz klar als Märchen ablehnen. Da tut niemand was. Klar, es finden regelmäßig Müllsammelaktionen statt (um mal ein dort mehrfach erwähntes Beispiel rauszunehmen), allerdings sind das ehrenamtliche Bürgerinitiativen, die das machen, keine im Tourismus tätigen Unternehmer! Hier ein Beispiel einer solchen Aktion vom B.U.N.D.. Ich lese da nichts von einer Beteilung irgendwelcher Tourismusbetriebe.
Die anderen bereits stattgefundenen Workshops (Liste) ergeben ein ähnliches ablehnendes Meinungsbild. Gespannt bin ich auf den Workshop Naturschutz, der am 30.8. in Neumünster stattfinden wird.
Aber ich schweife ab. Was ich kritisiere ist dieses Beharren darauf, dass man der Tourismusindustrie ein Mitspracherecht was die Nutzung der Natur anbelangt, einräumen müsste. Warum? Klar, der Tourismus ist Nutznießer aber was leistet er zum Erhalt der natürlichen Resourcen?
Soweit ich das sehe gar nichts. Im Gegenteil! Wenn man auf Fehmarn lebt, so wie wir, dann kann man hier seit vielen Jahren vor allem eins beobachten: einen ungezügelten Rauptierkapitalismus, Gentrifikation, Profitgier und Rücksichtslosigkeit. Überall auf der Insel wird gebaut und auch wenn man von der Politik allenthalben Versprechungen vernimmt, dass dieses mal nun wirklich Wohnungen für die einheimische Bevölkerung gebaut werden sollen - es geschieht nicht.
Hier nur ein Beispiel: Windspeel nennt sich das Bauprojekt in der Theodor-Storm-Strasse 1-3 in Burg. Das war mal eine Arbeitersiedlung, die von Scandlines gegründet worden ist. Die Gebäude standen dann irgendwann jahrelang wegen Schimmel leer und es wurde ein Neubauprojekt geplant. Doch statt Wohnungen für Werktätige wurde das Grundstück von der Stadt an private Investoren verkauft, die dort nun Luxusapartements bauen, die für Preise bis zu 716.000 Euro (in Worten: siebenhundertsechszehntausend!) verkauft werden sollen.
Wie - anders als mit Korruption - ist eine solche Entwicklung erklärbar? In den allermeisten Fällen werden solche Bauprojekte auf Fehmarn einfach genehmigt. Die Nutznießer sind private Investoren, Auswärtige die sich einen Alterswohnsitz leisten, den sie zwischenzeitlich an Feriengäste vermieten (Zweitwohnbesitzer genannt) aber kaum eine Kellnerin oder ein Mechaniker der auf der Insel lebt und arbeitet. Diese Bevölkerungsgruppe wird nach und nach verdrängt. Das ist klassiche Gentrifizierung. Das was wir heute auf Sylt beobachten, wo praktisch alle Berufstätigen täglich mit dem Zug vom Festland nach Sylt pendeln müssen, weil sie sich dort keinen Wohnraum leisten können, wird hier auf Fehmarn auch kommen. Und jeder - auch die Politik - weiss es. Das Problem wurde häufig genug angesprochen und ist nachweislich in der Politik bekannt.
Man muss demnach konstatieren, dass der lokalen Politik auf Fehmarn die Belange der eigenen Bevölkerung gleichgültig sind. Alles was zählt ist der Tourismus. Baugenehmigungen für touristisch (oder wie oben erwähnt nicht einheimisch) genutzte Gebäude werden sang- und klanglos erteilt. Es spielt auch keine Rolle, wo ein Bauherr herkommt (bzw sein Geld).
Wenn diese Leute nicht tatsächlich korrupt sind (was ich natürlich nicht konkret beweisen kann), so sind deren Interessen jedenfalls extrem einseitig. Es geht ums Geld und zwar ausschliesslich ums Geld. Und ich will gar nicht erst damit anfangen, wieviele Bauunternehmer in der Gemeinde mitmischen. Fehmarn könnte - was das betrifft - genauso gut eine Insel vor Griechenland oder Italien sein.
Wieso sollte man solchen Leuten die Entscheidungshoheit oder gar ein Mitspracherecht über Umweltschutzprojekte geben? Aus meiner Sicht ist das nicht einzusehen. Tatsächlich werden Naturschutzprojekte schon seit Ewigkeiten immer über die Köpfe der lokalen Wirtschaft beschlossen. Es geht auch nicht anders. Natürlich hat kein Unternehmer an Umweltschutz. Wenn überhaupt, dann nur als Marketingmaßnahme. Aber wenn es legal ist und man damit mehr Profit machen kann, wird grundsätzlich auf die Natur geschissen.
Und dann wären da ja noch die Touristen
Ich muss ehrlich zugeben, dass ich wirklich nicht gut auf die Touristen auf Fehmarn zu sprechen bin. Gerade in den letzten Jahren nach Corona hat sich die Situation noch einmal deutlich verschlechtert. Die Leute sind aggressiver und unhöflicher geworden. Oder die netten Leute werden immer weniger, das kann ich natürlich nicht beurteilen. Auf jeden Fall nerven die. Ab schlimmsten sind die ebike-fahrenden Touristen. Man erkennt sie daran, dass sie mit Helm und oft sogar Sportkleidung unterwegs sind. Keine Ahnung wieso kaum Einheimische Radfahrer einen Helm benutzen, ich kenne jedenfalls keinen einzigen. Wie dem auch sei, die rasen mit Tempo 30 über den Bahndamm (heute ein Rad- und Fussweg) dahin, verwenden oft keine Klingel und pöbeln Fussgänger auch noch an, wenn sie nicht schnell genug zur Seite springen - was mit Hunden ja auch nicht immer einfach ist.
Diese Rücksichtslosigkeit kann man vielerorts beobachten, insbesondere dort, wo sich oft viele Touristen aufhalten, sieht es aus wie bei Hempels unterm Sofa. Überall wird Müll liegengelassen, auch sehr gerne an den Stränden. Klar, es wird auch Müll angespült, aber wenn man oft am Strand ist (und ich bin statistisch gesehen wesentlich öfter am Strand als irgendwelche Gäste), dann erkennt man den Unterschied zwischen frischem Müll und Angespültem.
Den Leuten ist die Natur auf Fehmarn scheissegal. Das groteske daran ist, dass die oft extra wegen der Natur hierher kommen. Wir stehen dann immer da, wenn uns jemand sowas erzählt und kratzen uns am Kopf: welche Natur denn?!?!?
Ja, es gibt auf Fehmarn schon Naturschutzgebiete: Wallnau, Grüner Brink, Krummsteert, und die nördliche Niederung. Diese Gegenden sind aber nur bedingt touristisch nutzbar. Der Rest der Insel jedoch besteht weitgehend aus Feldern, Strassen und immer weiter wachsenden Ortschaften.
Besser ist auf Fehmarn nur das Wetter und (bislang) die Preise im Vergleich zu manch anderer Gegend an der Ostsee. Aber wegen der Natur kommt man nicht hierher und wenn man es doch tut, ist man ein ahnungsloser Ignorant.
Das sind also die Leute, die gegen den Nationalpark sind: ignorante rücksichtslose Touristen und die Unternehmer, die sich auf dem Rücken der Umwelt und der lokalen Restbevölkerung eine goldene Nase verdienen. Genau die Clientel der ich als Politiker zuhören würde, wenn ich zu entscheiden hätte, Nationalpark ja oder nein. Ja nee is klaar.
Wie gesagt, das ist meine persönliche Sicht der Dinge. Oft wird einem als Kritiker (sofern man nicht eh gleich gelöscht wird) vorgeworfen: “aber Ihr lebt doch von uns!”. Das mag für viele zutreffen, auf mich und meine Familie nicht.
Ich kann Euch sagen, wann wir die aller aller ALLER schönste Zeit auf der Insel hatten: während Corona 2020. Damals war die Brücke gesperrt und nur Einheimische durften auf die Insel. Das war mitten zur Hauptsaison bei bestem Wetter. Die Strände waren wirklich menschenleer. Wir fanden das absolut herrlich, diese Ruhe, das gemächliche Verstreichen der Zeit. Bis ans Ende meiner Tage werden wir uns an diese Momente erinnern. Und ja, mir ist bewusst, dass eine Menge Leute ernstzunehmende Sorgen in der Zeit hatten - wir auch. Aber diese kurze Zeit der Einsamkeit und Ruhe haben wir trotzdem genossen.
Nicht alle Fehmaraner brauchen Touristen. Oder wenigstens nicht so viele. Mancher von uns hätte gerne eine bezahlbare Wohnung oder würde gerne ein kleines Häuschen bauen. Wenn der Nationalpark da für eine gesunde Schrumpfung dieser höllischen Branche sorgt, soll uns das Recht sein.
Wir sind dafür.
Fixing the obscure EMMS user interface
For years I am using a small shell wrapper script and mplayer to play mp3 songs in a loop, because I can’t sit at the computer and not listening to something. However, that script missed a lot of basic command such as “play the previous song” etc. Of yourse there are lots of terminal audio players, but most of them require a new set of key bindings to be learned. And to be honest, all my key binding related memory banks are full, I can’t just memoize yet another set of key bindings.
Then I discovered EMMS to my surprise. So I gave it a try.
And failed miserably.
The user interface of EMMS is not just bad, it is fucking crab. I needed more than an hour just to get it to play a damn song. Then when it finally did, I was unable to get it to stop playing because the buffer with the playlist went missing. A hidden buffer! What the hell were they thinking! Also it was (or rather IS) hard and complicated to create a new playlist and fill it with songs from a directory. Really this is the simplest task an audio player should be able to do. Not EMMS. I haven’t seen anything more fucked up than this.
From the deepest of my heart I really fucking hate EMMS!
On the other hand I truly love emacs. I love it so much that I am already mourning the day I’m dying because then I won’t be able to use emacs anymore.
Using emacs to me means, I am the sole dictator of what happens in my editor. And if I want it to play music and the code that offers such functionality doesn’t work the way I like it, I can and will just change it so that it does.
So, I went and wrote two functions which makes my live with EMMS much
much easier. The first one (and the more complicated one) is
audio-create-playlist. Here’s the docstring of the function:
Create a new audio playlist for EMMS player.
It asks interactively for NAME. The playlistname will be derived
as this: 'source-file-default-directory + \"playlist-\" + NAME.
If the playlist already exists nothing will be done.
Otherwise the user will be asked wether to add a directory or
file[s] to the playlist. In the first case the user can then
interactively select a directory. In the latter case the user can
add interactively one or more files.
The playlist will be saved when a directory has been selected or
the user declines to add another file.So when I want to create a new playlist, I just call this function, enter a name, add a directory or a couple of files using the interactive way for this the function provides and be done with it.
When I want to use this playlist the next day, I just call the other
function audio-open-playlist, which asks me for the playlist
location, opens it in an EMMS buffer and starts playing. And the
buffer will also be properly named so that I can easily find it. Also
it is visible and not hidden somehow.
Inside this buffer I can then just use the usual EMMS keys to navigate the
songs, like p, n, <space>, <ret> etc. Pretty easy.
If you want to use these functions and also take a look at my EMMS config: init-audio.el can be found on github.
tablizer - a tool to manipulate tabular output of shell commands
Last year I switched departments and am working now with k8s, the cloud and all the new fancy stuff. Most of the time I work on the commandline. I cannot say I am not happy with the new assignment, but some things k8s annoy me anyway.
Here’s an example:
kgpw|grep 5fc
connecttest10-pgbenchclient-5fcb6888c9-28csx 0/1 ContainerCreating 0 8d <none> kind-worker2 <none> <none>
connecttest10-pgbenchclient-5fcb6888c9-4cbh4 0/1 ContainerCreating 0 8d <none> kind-worker3 <none> <none>
connecttest10-pgbenchclient-5fcb6888c9-bh644 0/1 ContainerCreating 0 8d <none> kind-worker3 <none> <none>
connecttest10-pgbenchclient-5fcb6888c9-bp9sf 0/1 ContainerCreating 0 8d <none> kind-worker2 <none> <none>
connecttest10-pgbenchclient-5fcb6888c9-lw8kp 0/1 ContainerCreating 0 8d <none> kind-worker3 <none> <none>(kgpw == kubectl get pod -o wide)
The first problem is, that this output is waaaay to wide. Sometimes I get outputs which so wide, that even on a 3440x1440 monitor every line is being broken. The result is unreadable. I even once deleted the wrong database just because of this mess.
The other issue is that if you use something like |grep then the
headers go missing as can be seen in the example above.
I hate this fucking behavior.
Of course, it might be possible to circumvent all these (and more)
issues using tools like awk etc. And to make it clear: i tried this
in the beginning. But the shell function I used for this purpose got
more and more unflexible, it grew larger and larger up to the point
that it wasn’t maintainable anymore.
Enter tablizer.
Since working in the cloud, learning Go was a must anyway. And I am a practical learner, that is I need some usefull project to learn a new language. This annoyance here came in to the “rescue”.
By using tablizer I can combine tools like egrep, awk, sed, sort and
column in one handy and easy to use tool. I don’t use it directly most
of the time, but rather put it into handy shell aliases.
Here’s the usage message of it:
Usage:
tablizer [regex] [file, ...] [flags]
Operational Flags:
-c, --columns string Only show the speficied columns (separated by ,)
-v, --invert-match select non-matching rows
-n, --no-numbering Disable header numbering
-N, --no-color Disable pattern highlighting
-H, --no-headers Disable headers display
-s, --separator string Custom field separator
-k, --sort-by int Sort by column (default: 1)
Output Flags (mutually exclusive):
-X, --extended Enable extended output
-M, --markdown Enable markdown table output
-O, --orgtbl Enable org-mode table output
-S, --shell Enable shell evaluable ouput
-Y, --yaml Enable yaml output
-C, --csv Enable CSV output
-A, --ascii Default output mode, ascii tabular
Sort Mode Flags (mutually exclusive):
-a, --sort-age sort according to age (duration) string
-D, --sort-desc Sort in descending order (default: ascending)
-i, --sort-numeric sort according to string numerical value
-t, --sort-time sort according to time string
Other Flags:
--completion <shell> Generate the autocompletion script for <shell>
-d, --debug Enable debugging
-h, --help help for tablizer
-m, --man Display manual page
-v, --version Print program versionSo, let’s work through an example. Say we want to get a list of pods, their status and the node each pod is running on AND only pods matching some pattern shall be printed.
The very first thing you do, is execute the original command again
(without any |grep after it!) and put | tablizer behind it. You’ll
get something like this (shortened):
kgpw | tablizer
NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) IP(6) NODE(7) NOMINATED NODE(8) READINESS GATES(9)
connect11test10-benchtest-pgbenchclient-b68d988b8-9vks5 0/1 ContainerCreating 0 7d6h <none> kind-worker3 <none> <none>
connect11test10-benchtest-pgbenchclient-b68d988b8-dpq8g 0/1 ContainerCreating 0 7d6h <none> kind-worker2 <none> <none>
connect11test10-benchtest-pgbenchclient-b68d988b8-f2dpn 0/1 ContainerCreating 0 7d6h <none> kind-worker3 <none> <none>
connect11test10-benchtest-pgbenchclient-b68d988b8-fjhk4 0/1 ContainerCreating 0 7d6h <none> kind-worker2 <none> <none>
connect11test10-benchtest-pgbenchclient-b68d988b8-m64z7 0/1 ContainerCreating 0 7d6h <none> kind-worker2 <none> <none>
[..]This looks pretty unchanged to the original output, but the headers
are now numerized. Armed with that knowledge we can now reduce the
output to the columns we want to see by using the -c option:
kgpw | tablizer -c 1,3,7
NAME(1) STATUS(3) NODE(7)
connect11test10-benchtest-pgbenchclient-b68d988b8-9vks5 ContainerCreating kind-worker3
connect11test10-benchtest-pgbenchclient-b68d988b8-dpq8g ContainerCreating kind-worker2
connect11test10-benchtest-pgbenchclient-b68d988b8-f2dpn ContainerCreating kind-worker3
connect11test10-benchtest-pgbenchclient-b68d988b8-fjhk4 ContainerCreating kind-worker2
connect11test10-benchtest-pgbenchclient-b68d988b8-m64z7 ContainerCreating kind-worker2
connecttest10-benchtest-pgbenchclient-8bb8ff5d8-52xg5 ContainerCreating kind-worker3 Now we add our search pattern and we also add -n to hide the numberization:
kgpw|tablizer -c 1,3,7 -n 5fc
NAME STATUS NODE
connecttest10-pgbenchclient-5fcb6888c9-28csx ContainerCreating kind-worker2
connecttest10-pgbenchclient-5fcb6888c9-4cbh4 ContainerCreating kind-worker3
connecttest10-pgbenchclient-5fcb6888c9-bh644 ContainerCreating kind-worker3
connecttest10-pgbenchclient-5fcb6888c9-bp9sf ContainerCreating kind-worker2
connecttest10-pgbenchclient-5fcb6888c9-lw8kp ContainerCreating kind-worker3That’s pretty much it. Now put this commandline into some handy alias
and you’re good to go. There are many more options: you can let
tablizer generate markdown or orgmode tables, you can let it print
extended output like \x in psql, yaml mode etc etc. There are
usefull sorting options, you can even sort by kubernetes age output.
Also, you’re not limited to shell output, using the -s option you
can use the tool to process CSV files (or anything other looking
tabular with headers), you can also generate valid CSV for that
matter.
If you’re working on the commandline every day in a cloud environment and are annoyed by too large and confusing outputs, then give tablizer a try. It’s easy to install, there are precompiled binaries for the most popular architectures without dependencies. There are also tarballs containing a proper installer with a manual page if you’re into this.
kill privileged sessions on tmux detach
I’ve switched from screen to tmux recently but I got one problem: when I left a session on a remote server, then anyone who is able to gain access to my user account would be able to also gain access to any remote shells or root shells within the tmux session. Since tmux doesn’t provice a way to protect from this, I created my own solution.
A simple script finds all privileged sessions running in the currently attached tmux session and kills it. The script is being executed as a hook when I detach from the session. It also echos a message about the fact to the windows so that I know a couple of days later where my root shell went etc.
So, here’s the script:
#!/bin/sh
termsubsession() {
local index=$1
local pid=$2
local what="$3"
local sendkeys="$4"
echo "$what in window#$index under parent $pid, sending $sendkeys"
tmux send-keys -t $index $sendkeys
tmux run-shell -t $index "echo $what killed by $0"
}
tmux list-panes -s -F '#{pane_pid} #{window_index}' | while read PID INDEX; do
pstree -p -a $PID | while read LINE; do
if echo "$LINE" | egrep -q " root "; then
termsubsession $INDEX $PID "root shell" "C-d C-d C-d"
break
elif echo "$LINE" | egrep -q "note -i"; then
termsubsession $INDEX $PID "note -i" "q q C-m"
break
elif echo "$LINE" | egrep -q " /usr/bin/ssh "; then
termsubsession $INDEX $PID "remote shell" "C-d"
break
fi
done
doneAdd this line to your .tmux.conf:
set-hook -g client-detached 'run-shell ~/bin/terminate-privileged-sessions.sh'Take care if you try to adopt the solution. For example, I had to send 3 times C-d to my root shell. I start it usually using su - and then execute bash as root. So, 2 x C-d should be sufficient. But it didn’t work, for whatever reason.
Also note, that I do not just kill the processes in question. For the remote session killing the ssh client might be sufficient, but in case of the root shell it leads to the tmux window being closed. I was unable to figure out why this happend so I finally resorted to using tmux send-keys.