• sed again

    From Kai Richter@2:240/77 to Alle on Tue Jul 15 02:45:22 2025
    Hallo Echo!

    Ich kann jetzt eine Liste aus epoch date und titel in Klardatum umwandeln: (statt cat file steht hier echo, zum besseren testen)

    #!/bin/sh
    echo 1630608689,titel | sed -e "s/\([0-9]\{10\}\)/"`date -r \1 '+%d%B%Y'`"/" exit

    Das Problem: Ich bekomme einfach keine Leerzeichen in das Datum Format.

    Rauskommen soll ein einfaches
    date "+%d %B %Y"
    15 Juli 2025

    bzw. im Endergebnis
    15 Juli 2025,titel

    Ich werde mir wohl einen Workaround basteln und zwei Zahlen durch zwei Zahlen plus Leerzeichen ersetzen. Und vier Zahlen durch Leerzeichen vier Zahlen.
    Trotzdem würde mich interessieren ob bessere Lösungen gibt.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: He Zivi, roll mich an die Tastatur! (2:240/77)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Tue Jul 15 05:57:22 2025
    Am 15 Jul 25 02:45:22 schrob Kai Richter an Alle zum Thema
    <sed again>

    echo 1630608689,titel | sed -e "s/\([0-9]\{10\}\)/"`date -r \1 '+%d%B%Y'`"/" exit
    Das Problem: Ich bekomme einfach keine Leerzeichen in das Datum Format.

    Nimm halt etwas anderes und ersetze es:
    sed -e "s/\([0-9]\{10\}\)/"`date -r \1 '+%d_%B_%Y'`"/" |tr _ ' '
    Oder gib der Shell Anfuehrungszeichen mit:
    sed -e "s/\([0-9]\{10\}\)/`date -r \1 \"+%d %B %Y\"`/"
    Oder nimm kein date:
    perl -ne 'use POSIX qw(strftime);s/[0-9]{10}/strftime("%d %B %Y", localtime($1))/e; print;'




    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Tue Jul 15 19:43:56 2025
    Tag auch Gerhard!

    Am 15 Jul 25, Gerhard Strangar schrieb an Kai Richter:

    echo 1630608689,titel | sed -e "s/\([0-9]\{10\}\)/"`date -r \1
    '+%d%B%Y'`"/" exit
    Das Problem: Ich bekomme einfach keine Leerzeichen in das Datum
    Format.

    Nimm halt etwas anderes und ersetze es:
    sed -e "s/\([0-9]\{10\}\)/"`date -r \1 '+%d_%B_%Y'`"/" |tr _ ' '

    Danke für den Hinweis, das könnte klappen. Allerdings habe ich gestern Nacht eines übersehen: Der sed Platzhalter \1, welcher auf den in Klammern stehenden gefundenen Inhalt abzielen sollte (1630608689), wird nicht an `date` übergeben. Daher war das Datum immer 01. Januar 1970. :(

    Oder gib der Shell Anfuehrungszeichen mit:
    sed -e "s/\([0-9]\{10\}\)/`date -r \1 \"+%d %B %Y\"`/"

    Das hatte ich die Nacht schon mit allen erdenklichen Versionen aus " und ' ausprobiert, nur die funktionierende war nicht dabei.

    Oder nimm kein date:
    perl -ne 'use POSIX qw(strftime);s/[0-9]{10}/strftime("%d %B %Y", localtime($1))/e; print;'

    Von Perl und AWK und was es sonst noch so gibt, habe ich noch gar keinen Plan.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Target locked (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Tue Jul 15 20:32:52 2025
    Hello Kai!

    15 Jul 25 02:45, Kai Richter wrote to Alle:

    Trotzdem würde mich interessieren ob bessere Lösungen gibt.

    $ echo 1630608689,titel | while read v; do echo $(date -r "${v%%,*}" "+%d %B %Y"),${v##*,} ; done
    02 September 2021,titel


    "besser" liegt natürlich immer irgendwie im Auge des Betrachters...


    Regards,
    Gerrit

    ... 8:32PM up 221 days, 2:39, 10 users, load averages: 0.67, 0.77, 0.85

    --- msged/fbsd 6.3 2021-12-02
    * Origin: We are the second generation (2:240/12)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Thu Jul 17 20:44:40 2025
    * Originally by: Gerrit Kuehn (2:240/12), 15 Jul 25 20:32.

    Hello Kai!

    15 Jul 25 20:32, Gerrit Kuehn wrote to Kai Richter:


    $ echo 1630608689,titel | while read v; do echo $(date -r "${v%%,*}"
    "+%d %B %Y"),${v##*,} ; done
    02 September 2021,titel


    Mir fällt gerade auf, daß es vermutlich wenig sinnvoll ist, beide Matches "greedy" zu machen. Vermutlich paßt 'v%,' besser als 'v%%,'.


    Regards,
    Gerrit

    ... 8:44PM up 223 days, 2:51, 10 users, load averages: 0.96, 0.83, 0.77

    --- msged/fbsd 6.3 2021-12-02
    * Origin: We're telling tales of communication (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Mon Jul 21 15:37:06 2025
    Moin Gerrit!

    Am 15 Jul 25, Gerrit Kuehn schrieb an Kai Richter:

    Trotzdem würde mich interessieren ob bessere Lösungen gibt.

    $ echo 1630608689,titel | while read v; do echo $(date -r "${v%%,*}"
    "+%d %B %Y"),${v##*,} ; done 02 September 2021,titel

    "besser" liegt natürlich immer irgendwie im Auge des Betrachters...

    Bingo. Vielen Dank! Ich musste etwas suchen, aber ich habe in man sh unter Parameter Expansion gefunden. Irgendwie bin ich dann bei einem Tutorial gelandet, welches ich mir wohl noch ein paar Mal unters Kopfkissen legen muss. Ich glaube am meisten wird mir zu schaffen machen, dass die shell andere expressions als die RE benutzt.

    Andererseits bietet auch die shell ein pattern replacement an, sodass ich mit ${name//find/replace/} vielleicht sogar ganz auf sed s/find/replace/ verzichten kann. Muss ich mir mal in einer ruhigen Stunde ansehen.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Der Eintritt ist verboten. Fuer die lebenenden Toten. (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Tue Jul 22 20:41:07 2025
    Hello Kai!

    21 Jul 25 15:37, Kai Richter wrote to Gerrit Kuehn:


    Bingo. Vielen Dank! Ich musste etwas suchen, aber ich habe in man sh unter Parameter Expansion gefunden. Irgendwie bin ich dann bei einem Tutorial gelandet, welches ich mir wohl noch ein paar Mal unters Kopfkissen legen muss. Ich glaube am meisten wird mir zu schaffen
    machen, dass die shell andere expressions als die RE benutzt.

    Man muß ein bißchen aufpassen, welche Shell man da gerade benutzt. Aber bereits die Grundausstattung POSIX/bourne reicht für viele Dinge eigentlich aus. Für kompliziertere Sachen dann bash oder zsh.
    Wenn man shell zu "old-school" findet, greift man für sowas als nächstes vermutlich zu einer SKript-Sprache wie ruby oder python.

    Andererseits bietet auch die shell ein pattern replacement an, sodass
    ich mit ${name//find/replace/} vielleicht sogar ganz auf sed s/find/replace/ verzichten kann. Muss ich mir mal in einer ruhigen
    Stunde ansehen.

    sed und awk können das sicher auch alles. Ist halt eine Frage davon, was man schon kann bzw. lernen will. Je komplexer die Aufgabe, desto eher will man vermutlich eine "modernere" Sprache.


    Regards,
    Gerrit

    ... 8:41PM up 228 days, 2:48, 10 users, load averages: 0.92, 0.84, 0.77

    --- msged/fbsd 6.3 2021-12-02
    * Origin: And the pastiche we've invented (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Wed Jul 30 05:55:58 2025
    Servus Gerrit!

    Am 22 Jul 25, Gerrit Kuehn schrieb an Kai Richter:

    was man schon kann bzw. lernen will. Je komplexer die Aufgabe, desto
    eher will man vermutlich eine "modernere" Sprache.

    Am Wollen scheitert es nicht, wenn da die Lernkurve nicht wäre. ;-)

    Je komplexer die Software, um so höher die Wahrscheinlichkeit, dass diese mal auf der Strecke bleibt. Ich habe die Hoffnung, dass mit POSIX shell scripten eine sehr lange Kompatiblität erhalten bleibt. Open Source allein reicht nicht immer aus. Es war toll und einfach, den isc-dhcpd von Linux auf FreeBSD mitzunehmen und die config Datei quasi 1:1 übernehmen zu können. Jetzt habe ich gerade gelesen, dass isc ihren dhcpd abgekündigt hat. Egal welchen dhcpd ich später wähle, wieder eine neue Config Syntax erlernen. Meine Begeisterung für neues lässt langsam nach, mir reicht es schon den Kram einmal zu konfigurieren.

    Noch läuft der isc-dhcp, ich habe also noch etwas Zeit mir einen Nachfolger auszusuchen. Ich denke es wird dnsmasq werden. Kann man die eigentlich parallel betreiben? Oder muss ich da ein gezieltes SwitchOver Wochenende einplanen?

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Schusselschlumpf (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Tue Aug 5 23:14:52 2025
    Hello Kai!

    30 Jul 25 05:55, Kai Richter wrote to Gerrit Kuehn:

    Je komplexer die Software, um so höher die Wahrscheinlichkeit, dass
    diese mal auf der Strecke bleibt. Ich habe die Hoffnung, dass mit
    POSIX shell scripten eine sehr lange Kompatiblität erhalten bleibt.

    Das würde ich grundsätzlich für richtig halten. Auf der anderen Seite ist eine reine POSIX-Shell halt bei komplexeren Aktionen auch schneller überfordert bzw. erfordert recht viel Code für eher einfache Aufgaben. Kommt eben darauf an, was man damit machen will.

    Noch läuft der isc-dhcp, ich habe also noch etwas Zeit mir einen Nachfolger auszusuchen. Ich denke es wird dnsmasq werden.

    Für kleinere Installationen sicher eine brauchbare Wahl. Die Alternativen sind imho auch nicht weniger "eigenwillig" in der Konfiguration.
    Bzgl. der Weiterentwicklung von Software: ist halt alles "moving target", man kommt nicht wirklich darum herum. Ich könnte immer noch bei gefühlt jeder 2. Interaktion mit systemd zur Spucktüte greifen, weil es in mehr Dimensionen "broken" ist als ich eigentlich zählen kann. Hilft aber nicht, das Ding wird man nicht mehr los.

    Kann man
    die eigentlich parallel betreiben? Oder muss ich da ein gezieltes SwitchOver Wochenende einplanen?

    Da der Daemon auf bestimmten Ports lauschen muß (67 ff), kann man nicht ohne weiteres zwei davon auf einmal laufen lassen. Ohne es jetzt konkret ausprobiert zu machen: vermutlich kann man einen IP-Alias auf der Netzwerkschnittstelle vergeben und den Servern dann in der Konfiguration mitgeben, sich jeweils nur auf eine dieser IPs zu binden.
    Weiterhin muß man dann aber auch die Konfigurationen entsprechend anpassen, damit nur jeweils ein Server die Anfrage eines konkretes Clients beantwortet (ansonsten gibt es schnell Chaos im Netz).

    Kurz: ja, kann man wohl irgendwie machen (habe ich auch schon getan). Ich frage mich aber, ob Dir das wirklich die Arbeit erleichterten würde. Man muß halt beide Konfigurationen gleichzeitig so ans laufen bekommen, daß sie sich nicht gegenseitig stören.
    Wie groß ist Dein Netz, über wieviele Clients reden wir da? Und geht es nur um den DHCP-Teil, oder willst Du auch DNS irgendwie umstellen (würde sich bei dnsmasq ja anbieten, wie löst Du das momentan mit isc-dhcpcd)?


    Regards,
    Gerrit

    ... 11:14PM up 242 days, 5:21, 10 users, load averages: 0.91, 0.83, 0.82

    --- msged/fbsd 6.3 2021-12-02
    * Origin: America asleep, since Mulberry's too long (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Thu Aug 7 18:16:26 2025
    Tag Gerrit!

    Am 05 Aug 25, Gerrit Kuehn schrieb an Kai Richter:

    Wie groß ist Dein Netz, über wieviele Clients reden wir da?

    Mit jails wenn es hoch kommt ein Dutzend.

    Und geht es nur um den DHCP-Teil, oder willst Du auch DNS irgendwie umstellen (würde sich bei dnsmasq ja anbieten, wie löst Du das
    momentan mit isc-dhcpcd)?

    Einfach, ich nutze IPs und SMB. :)
    Mein dhcpd weist eigentlich anhand der MAC statische IPs zu.
    Ich habe fast keinen direkten Zugriff zwischen den Clients, Ausnahme "barrier" und eine Engima2 Box. Für die tut es auch die IP im Lesezeichen.

    Aber DNS würde dann mit dnsmasq kommen. Inzwischen habe genug rumgespielt und ein produktives mysql laufen. Damit ist der Grundstein für nextcloud gelegt und damit kommt auch ein Webserver. Das öffnet weitere Möglicheiten wie PiHole und Home Assitent mit Balkonkraftwerk.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Ihr... Ihr... Boah, ihr Praktiker ey! (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Thu Aug 7 20:57:01 2025
    Hello Kai!

    07 Aug 25 18:16, Kai Richter wrote to Gerrit Kuehn:

    Mit jails wenn es hoch kommt ein Dutzend.

    Also eher überschaubar.

    Mein dhcpd weist eigentlich anhand der MAC statische IPs zu.
    Ich habe fast keinen direkten Zugriff zwischen den Clients, Ausnahme "barrier" und eine Engima2 Box. Für die tut es auch die IP im Lesezeichen.

    Das klingt jetzt erstmal super-simpel für mich. Halt die paar Hosts in dnsmasq konfigurieren, IP-Range und DNS-Server festlegen, fertig?
    Lieferst Du noch irgendwelche anderen Dinge per DHCP aus? NTP-Server, TFTP-Server oder sowas? Das müßte man natürlich auch noch in die config packen.

    Aber DNS würde dann mit dnsmasq kommen. Inzwischen habe genug
    rumgespielt und ein produktives mysql laufen. Damit ist der
    Grundstein für nextcloud gelegt und damit kommt auch ein Webserver.
    Das öffnet weitere Möglicheiten wie PiHole und Home Assitent mit Balkonkraftwerk.

    Da kannst Du Dich ja entscheiden, ob Du dnsmasq selber als caching DNS-Server per DHCP auslieferst, oder erstmal direkt auf irgendeinen anderen Server (derzeit vermutlich Deinen Router?) verweist.


    Regards,
    Gerrit

    ... 8:57PM up 244 days, 3:04, 10 users, load averages: 0.36, 0.73, 0.80

    --- msged/fbsd 6.3 2021-12-02
    * Origin: Tall orders to fulfil (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Fri Aug 8 02:33:58 2025
    Hey Gerrit!

    Am 07 Aug 25, Gerrit Kuehn schrieb an Kai Richter:

    Also eher überschaubar.

    Jupp.

    Halt die paar Hosts in dnsmasq konfigurieren, IP-Range und DNS-Server festlegen, fertig? Lieferst Du noch irgendwelche anderen Dinge per
    DHCP aus? NTP-Server, TFTP-Server oder sowas? Das müßte man natürlich
    auch noch in die config packen.

    Da wäre noch ein PXE Server, der tftp benutzt. Soweit ich gesehen hatte, kann dnsmasq aber auch PXE Server. Wäre weiterhin nett, auch wenn ich den PXE Server nur selten brauche.

    Da kannst Du Dich ja entscheiden, ob Du dnsmasq selber als caching DNS-Server per DHCP auslieferst, oder erstmal direkt auf irgendeinen anderen Server (derzeit vermutlich Deinen Router?) verweist.

    Ich meine der Router geht auf den Provider DNS und reicht diesen dann an die Clients weiter. Das würde erstmal weiter so laufen, um caching DNS und dns2blackhole kümmere ich mich später.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Was ich machen will, mache ich auch. (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Sat Aug 9 12:34:04 2025
    Hello Kai!

    08 Aug 25 02:33, Kai Richter wrote to Gerrit Kuehn:

    Da wäre noch ein PXE Server, der tftp benutzt. Soweit ich gesehen
    hatte, kann dnsmasq aber auch PXE Server. Wäre weiterhin nett, auch
    wenn ich den PXE Server nur selten brauche.

    Du kannst die entsprechenden DHCP-Optionen von dnsmasq ausliefern lassen. tftp-Server hat dnsmasq integriert, man kann aber auch einen externen nutzen.

    Ich meine der Router geht auf den Provider DNS und reicht diesen dann
    an die Clients weiter. Das würde erstmal weiter so laufen, um caching
    DNS und dns2blackhole kümmere ich mich später.

    Wenn Du das über dnsmasq laufen läßt, bekommst Du so halt die per dhcp vergebenen Namen aufgelöst (Cache gibt es geschenkt dazu, da muß man eigentlich kaum etwas dazu tun). Als "uplink" würdest Du dann einfach Deinen Router angeben (bzw. automatisch aus /etc/resolv.conf lesen lassen). DNS-Anfragen in Deinem Netz gehen dann an dnsmasq, der löst die entweder selber auf (aus dem Cache, aus den vergebenen DHCP-Adressen und aus /etc/hosts des Rechners). Was nicht aufgelöst werden kann, wird als Anfrage an den Router weitergeschickt (und die Antworten ins Cache aufgenommen).
    Der Setup dafür ist eigentlich minimal und einfach. DNS-Filter sind etwas aufwendiger, das wäre dann der nächste Schritt.


    Regards,
    Gerrit

    ... 12:34PM up 245 days, 18:41, 10 users, load averages: 1.50, 1.07, 0.87

    --- msged/fbsd 6.3 2021-12-02
    * Origin: We are a nation of innovations (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Tue Aug 12 18:44:00 2025
    Grüß Dich, Gerrit!

    Am 09 Aug 25, Gerrit Kuehn schrieb an Kai Richter:

    Als "uplink" würdest Du dann einfach Deinen Router angeben (bzw. automatisch aus /etc/resolv.conf lesen lassen).

    Habe jetzt mal dnsmasq installiert und versuche mit der config warm zu werden.

    Wie ich gerade sehe, habe ich den Round-Trip über den Router ausgelassen. Der Router macht Firewall und dyndns updates. Er holt sich von der Kabel Bridge IP, netmask, gateway und 2x Provider DNS. Alles mit dhcpd läuft bereits auf dem Server mit dem isc-dhcpd-server und gated externen Traffic an die Router IP. Wie ich erst jetzt sehe, ist auf dem Router ebenfalls dnsmasq installiert, aber wegen der GUI ist mir das nicht aufgefallen.

    DNS-Anfragen in Deinem Netz gehen dann an dnsmasq, der löst die
    entweder selber auf (aus dem Cache, aus den vergebenen DHCP-Adressen
    und aus /etc/hosts des Rechners).

    Der csv style der config ist für mich noch gewöhnungsbedürftig. Soweit ich jetzt gelesen habe, arbeitet dnsmasq aber auch mit /etc/ethers und zusammen mit /etc/hosts würde das meine überwiegend statischen Konfigs fast 1:1 übernehmen. Ich müsste nur aus der dhcpd.conf die Host MACs übernehmen.

    Da schau her, man 5 dhcp-options, ist von 1995. Der isc-dhcpd benutzt die gleichen Schlüsselwörter, der dnsmasq leider nicht.

    Mal host greppen, 74? Dachte nicht, dass ich soviele habe? Ah, ^host ergibt rund 25. Mit VMs, passt. Jetzt aber eintragen statt zählen. ;-)

    * Origin: We are a nation of innovations (2:240/12)

    Ist die Zeile neu? ;-)

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Cheap, Fast, Reliable - pick any two. (2:240/77)