Bash widerkehrende Variablen aus CSV

  • Hello :)


    vielleicht hat ja jemand von euch eine Idee für folgendes Problem:


    Ich betreute mehrere Nextclouds, WordPress und solche Geschichten. Meine Server laden automatisch ein Git-Repo mit meinem Scriptpool runter. Diese würde ich gerne „allgemein“ schreiben, sprich ohne Pfadangaben oder sonstigen bezug auf einzelne Systeme/Konfigurationen. Auf Server 1 liegt Nextcloud da, auf SRV2 viellicht ganz wo anders. Nun war meine Idee das in ein CSV für jeden Server zu schreiben:


    Code
    ID,URL,DIRECTORY,DATABASE,BLABLA
    NXT1,https://klaut.example.com,/var/www/nextcloud,meineklautdb,bla

    So könnte ich im Script statt /var/www/cloud.domain.tld/ einfach einlesen sagen. Im Scriptaufruf würde ich dann sagen ./nextcloudscript $NXT1. Diese Angabe soll aus dem CSV kommen, er soll sie einlesen und in Variablen schreiben wie z.B. NXT1-DIR für das directory, NXT1-URL für die URL usw. So gerne ich es hätte, für diese Lösung kann ich kein Ansible nehmen ;(


    Habt ihr so eine "Hosted List" auch? Ist mein Ansatz doof und es geht einfacher? Ich freue mich auf Input!

  • Zur hilfreichsten Antwort springen
  • Was für Bash Skripte sind das denn? Allgemin schreit das förmlich nach einem Tool wie Ansible, mit dem du für deine Server verschiedene Variablen setzen kannst (im YAML Format). Das muss auch nicht zwingend remote ausgeführt werden. Das würde auch lokal gehen, in dem es das Git repo auscheckt und lokal Ansible ausführt.


    Das Auslesen von Variablen aus einer CSV Datei um diese in einem Bash Skript zu verwenden klingt doch sehr abenteuerlich.

    • Hilfreichste Antwort

    »Hauptsache BogoMIPS!«

    Fleischfresser

  • Kann man sicherlich auch machen. Ist halt immer so eine Sache, ob das CSV richtig formatiert ist und man am Ende auch den Inhalt bekommt, welchen man erwartet. Sollte man idealerweise auch noch validieren. Man fängt dann an einen kleinen Stein aufzuheben und hat am Ende einen halben Berg auf dem Buckel ;) .

  • sla

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Sehr gut, funktioniert! Danke 8)

    Das Auslesen von Variablen aus einer CSV Datei um diese in einem Bash Skript zu verwenden klingt doch sehr abenteuerlich.

    Ob ich mich nun im YAML oder einem CSV verschreibe, ist doch egal. Beides ist katastrophal bei Ausführung =O

  • Ein YAML Parser weigert sich das Dokument bei Syntaxfehlern einzulesen - ein mit cut/split/etc. zerpflücktes CSV wird allerdings auch mit Fehlern gelesen.


    Für deinen Anwendungsfall aber wohl egal, solange du dich zurechtfindest. :)

  • Das Snippet von Olivetti ist wohl am einfachsten zu lesen, man könnte das allerdings etwas effizienter gestalten:



    Code
    zeug=( $( echo ${myline}| cut -d',' --output-delimiter=' ' -f1-5) )
    id=${zeug[0]}
    url=${zeug[1]}
    ...
  • Ich würde in diesem Fall auch vorschlagen, lieber ein Automatisierungstool wie Ansible oder ähnliches zu verwenden. Auf der anderen Seite verstehe ich aber auch, dass die Einarbeitungsphase dort sehr viel größer ist, falls man noch nie damit gearbeitet hat.


    Falls du das mit dem Bash-Script umsetzen solltest, würde ich dir stark empfehlen vor dem Ausführen des Skripts noch mal eine Ausgabe der eingelesenen und ausgewählten Variablen zu tätigen, welche dann manuell von dir auf der Konsole bestätigt werden muss. Damit fängst du bestimmt schon einige Unannehmlichkeiten ab.