V7 + universelles Postsyncscript

Hallo zusammen

was muss man tun um postsync mit einem Linuxclient zu nutzen?
Ist das „universelle postsync-script“ schon dabei? Als Vorlage? Nimmt man noch das „alte“ Paket der 6.2 ?

Grüße Rainer

Hallo Rainer,

was muss man tun um postsync mit einem Linuxclient zu nutzen?
Ist das „universelle postsync-script“ schon dabei? Als Vorlage? Nimmt
man noch das „alte“ Paket der 6.2 ?

nimm einfach das postsync Script aus dem default.cloop Paket …
Da ist auch die linuxmuster-client Struktur dabei.

LG

Holger

Wo liegt das? Ich hab das universelle per copy&pasta aus der Dokuseite, aber es waere einfacher wenn das irgendwo schon auf der Platte liegen wuerde. Ein fast leeres liegt ja schon in examples.

Hallo Harry,

nimm einfach das postsync Script aus dem default.cloop Paket …
Da ist auch die linuxmuster-client Struktur dabei.

Wo liegt das? Ich hab das universelle per copy&pasta aus der Dokuseite,
aber es waere einfacher wenn das irgendwo schon auf der Platte liegen
wuerde. Ein fast leeres liegt ja schon in examples.

hier:

https://web.semgym-karlsruhe.de/nextcloud/s/a5pNgXw7tjrtEs5

LG

Holger

1 „Gefällt mir“

Glaub im Code fuer das Universelle fehlt ein „fi“ am Ende.

https://docs.linuxmuster.net/de/latest/clients/postsync/postsync-patchclasses.html

Danke, wieso liegt das nicht mit auf der Platte?

Edith: Problem gefunden, da wird noch die sshd_config geschrieben.

@baumhof: da ist in root noch ein .ssh-Ordner, der die authorized_key patched, ist das so gewuenscht?
Ich nutzt den root-Account noch um auf die Desktoprechner zu kommen.

Nutzt jemand diese Skripte bzw. den Ordner? Bei mir wird swap wieder nicht richtig gepatcht bzw. eine hartkodierte fstab mit SDAs reinkopiert.
Ich vermute (!) Du patchst die fstab aus historischen Gruenden noch per postsync-Reinkopieren fuer jeden Raum einzeln oder ich mach irgendwas falsch.

Hallo Harry,

@baumhof https://ask.linuxmuster.net/u/baumhof: da ist in root noch
ein .ssh-Ordner, der die authorized_key patched, ist das so gewuenscht?
Ich nutzt den root-Account noch um auf die Desktoprechner zu kommen.

da einfach deinen key reinlegen: dann kommst du immer per root und ssh
auf die linuxclients: ich find das super praktisch.

LG

Holger

Tach Holger,
aber nur von der 10.32.1.1 :slight_smile:

Gruss Harry

Nachdem ich mit dem universellen Postsyncskript jede Menge Zeit vergurkt habe, hier ein paar Erkenntnisse.

  1. Das Patchen der fstab tut nicht.
  2. die Vorlage von Holger tut soweit, allerdings sind einige Dinge hartkodiert, sprich die Server-IP ist die 10.32.1.1, sshd_config laesst nur von dieser SSH-Sitzungen zu, man muss also in einigen Dateien nach Konfigurationen suchen, die sich als Tretminen erweisen koennen, dabei versteckte Ordner (.ssh) nicht vergessen.
  3. Die Vorlage in der offiziellen Doku hat ein fehlendes „fi“ am Ende, das macht einem das Leben schwer und nicht nur mir, sondern allen, die diese nutzen wollen.
  4. Testen am Besten per linbo-ssh und dort mit „linbo_wrapper sync:1“, dann sieht man die Fehler.

Frage: Ist das universelle Postsyncskript nur fuer die Gurus gedacht? Dann sollte es aus der Doku raus, Einsteiger werden naemlich so ordentlich auf die Schnauze fliegen.

Es scheint mir sinnvoll, dieses in einen example-Ordner auf dem Server zu hinterlegen mit ein paar Kommentaren in der ersten Zeile bzgl. der Fallstricke, ich hab hier naemlich mittlerweile mehrere Versionen davon und weiss nicht mehr genau, welche aktuell ist.

Das Tauschen unter der Hand hier ist aus meiner Sicht sehr fehleranfaellig.

Gruss Harry

2 „Gefällt mir“

Hallo Harry,

  1. die Vorlage von Holger tut soweit, allerdings sind einige Dinge
    hartkodiert, sprich die Server-IP ist die 10.32.1.1, sshd_config
    laesst nur von dieser SSH-Sitzungen zu, man muss also in einigen
    Dateien nach Konfigurationen suchen, die sich als Tretminen erweisen
    koennen, dabei versteckte Ordner (.ssh) nicht vergessen.

war da nicht eine txt Datei dabei in der steht, was wo angepaßt werden muss?

Es scheint mir sinnvoll, dieses in einen example-Ordner auf dem Server
zu hinterlegen mit ein paar Kommentaren in der ersten Zeile bzgl. der
Fallstricke, ich hab hier naemlich mittlerweile mehrere Versionen davon
und weiss nicht mehr genau, welche aktuell ist.

Das Tauschen unter der Hand hier ist aus meiner Sicht sehr fehleranfaellig.

damit hast du natürlich recht: nur hat sich in den letzten 3 Jahren
niemand gefunden, der das „Paket“, also diese Feature, ordentlich betreut.
Alles was es da gibt ist die von dir gefundene Doku und die von mir
verschickte Vorlage …

LG

Holger

Die ist tatsaechlich da. :face_with_diagonal_mouth:

Wäre doch ein guter Moment sich dem ganzen anzunehmen, da ein ordentliches Debian Paket zu bauen und es auch ordentlich zu dokumentieren! :slight_smile:

Bin seit vorhin auf Schiermonnikoog und weit weg vom Thema, hab mir aber eben tatsaechlich nicht verkneifen koennen die Doku zur Debianpaketierung zu lesen. :grinning:

Hallo Harry,

heißt das jetzt das du dich der Paketierung annimmst? :wink:

Vorab ein ganz großer Dank, wenn es denn so ist.

Beste Grüße

Thorsten

Tag Thorsten,
wenn ich den ganzen Haufen vor mir abgearbeitet habe, dann schau ich mir das an, versprechen kann ich aber nichts, denn ich bin gefuehlt gerade ziemlich am Anschlag.
Erstmal muss unser Netz umgestellt sein und unzaehlige Leichen im Keller geborgen werden, sowohl in der Schule als auch privat.

Gruss Harry

Hallo Harry,

hättest du mir deine Version von postsync, damit ich die mit meiner und der von der Dokuseite abgleiche?
Vielen Dank.
Gerne auch per PM, wenn da mehr Sachen drinstehen, die du hier nicht öffentlich posten willst.

Vg, Tobias

Abend Tobias,
unseres tut wohl auch nur teilweise, ich such das mal raus.
Ich hab das von Holger oben genommen, der Link tut aber nicht mehr.
Gruss Harry

Denke das ist das Gleiche wie in der Doku.
Das Patchen des Hostnames tut bei uns nicht hab ich vorgestern gemerkt, scheint aber weiter nicht zu jucken.

echo "##### POSTSYNC BEGIN #####"
LOG=/mnt/var/log/postsync.log
echo "##### POSTSYNC BEGIN #####" >  $LOG
NOW=$(date +%Y%m%d-%H%M)
echo $NOW | tee -a $LOG

# IP-Adresse des Servers für LINBO 4.1
SERVERIP=$LINBOSERVER

# Die Hostgruppe des aktuellen Rechners  wird mit $HOSTGROUP abgerufen

# Raum feststellen. Dieses Skript geht davon aus
# dass die Rechner Namen der Form
# raumname-hostname haben, also z.B. cr01-pc18
RAUM=${HOSTNAME%%-*}
# wenn der string leer ist, raum auf unknown setzen
if [ "x${RAUM}" == "x" ]; then
    RAUM="unknown"
fi

# UVZ für die Patches auf dem Server. Mit dieser Variablen
# kann man verschiedene Patches, z.B. für unterschiedliche
# Linux-Versionen bereitstellen.
# Wenn man hier $HOSTGROUP einträgt, erhält jede Rechnerklasse
# ein eigenes Patchklassenverzeichnis auf dem Server.
# Damit kann man verschiedene Patchklassen mit derselben cloop-Datei
# bedienen, wenn man das benötigt.
PATCHCLASS="jammy_mint"

# Das Verzeichnis, in dem die Serverpatches
# im lokalen Clientcache synchronisiert werden.
PATCHCACHE=/linuxmuster-client/serverpatches

echo "" | tee -a $LOG
echo "Hostname:      ${HOSTNAME}" | tee -a $LOG
echo "Raum:          ${RAUM}" | tee -a $LOG
echo "Patchcache:    ${PATCHCACHE}" | tee -a $LOG
echo "Hostgruppe:    ${HOSTGROUP}"   | tee -a $LOG
echo "Patchclass:    ${PATCHCLASS}" | tee -a $LOG
echo "" | tee -a $LOG

# -----------------------------------------
# Patchdateien auf das lokale Image rsyncen
# -----------------------------------------
echo " - getting patchfiles" | tee -a $LOG

# RAUM     -> Raumname
# HOSTNAME -> Rechnername
# Verzeichnis anlegen, damit es sicher existiert
mkdir -p /cache/${PATCHCACHE}
rsync --delete --progress -r "${SERVERIP}::linbo/linuxmuster-client/${PATCHCLASS}" "/cache/${PATCHCACHE}" | tee -a $LOG

echo " - patching local files"  | tee -a $LOG

# common: Bekommen alle clients der Patchklasse
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common ]; then
    echo "   - patching common to /mnt" | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/common/* /mnt/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks ]; then
  echo "   - unpacking tarpacks from common/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi

# Raum: Nur die Clients des Raums
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM} ]; then
    echo "   - patching ${RAUM} to /mnt" | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/* /mnt/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${RAUM}/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi

# Host: Nur der Rechner
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME} ]; then
    echo "   - patching ${HOSTNAME} to /mnt"  | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/* /mnt/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${HOSTNAME}/tarpacks to /mnt" | tee -a $LOG
 for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
    tar xvzf $pack -C /mnt | tee -a $LOG
 done
fi

# Hook, um eigene Skripte auszuführen
if [ -d /mnt/postsync.d ]; then
     for SCRIPT in /mnt/postsync.d/*
    do
        chmod 755 $SCRIPT
        echo "Executing: $SCRIPT" | tee -a $LOG
        #$SCRIPT > /dev/null 2>&1
        $SCRIPT | tee -a $LOG
        echo " ...done." | tee -a $LOG
    done
    rm -rf /mnt/postsync.d
 # wenn es /mnt/tarpacks gibt - löschen
 rm -rf /mnt/tarpacks

# hostname in /etc/hosts patchen
    sed -i "s/HOSTNAME/$HOSTNAME/g" /mnt/etc/hosts
     sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/hosts

# Zeitstempel letzter sync hinterlegen
echo $NOW > /mnt/lastsync

echo "##### POSTSYNC END #####" | tee -a $LOG

# Folgende Zeile stellt sicher, dass bei Änderungen des Postsync-Scriptes auf dem Server
# diese auch auf den Client übertragen werden.
# Achtung: Imageverzeichnis und Imagename sind anzupassen
rsync --progress -r $LINBOSERVER::linbo/images/jammy_mint/jammy_mint.postsync /cache/
fi


ok. kein wunder… Danke!

das „fi“ gehört vor die Zeile mit #wenn es /mnt/tarpacks gibt - löschen

Das mit den Hostname ersetzen funktioniert nur dann wenn du in deinen Verzeichnisbaum: linuxmuster-client/$HOSTGROUP/common|raum|hostname/etc/hosts so eine Datei ablegst, die „HOSTNAME“ an den richtigen Stellen hat…

/etc/fstab hab ich früher noch selbst gepatcht, das macht LINBO jetzt für mich - für das ROOT= und daher verzichte ich darauf in den Verzeichnisbaum ein /etc/fstab zu legen - weil das postsync das kopiert und das bereits gepatchte fstab wieder überschreibt.

Ich hatte bei mir grundsätzlich noch „export LOG“ usw. für alle Variablen, ich glaube, weil ich statt „$SCRIPT | tee -a $LOG“ dann source $SCRIPT | tee -a $LOG bislang hatte. ICh weiß nicht mehr genau wieso…

VG, Tobias