#!/bin/sh . /etc/wmde-rp.conf set -x USER=`whoami` PAM_USER=$USER PAM_TYPE=open_session . $PREFIX/wmde-rp-check-pam-user.sh HOMEDIR=$(getent passwd "$USER" | cut -d: -f6) IGNORES="-ignore 'Path .wmdesync'" OTHERARGS="-auto -log -prefer newer -fastcheck true -maxerrors 5000" export UNISON=$HOMEDIR/.wmdesync/unison export UNISONLOCALHOSTNAME=`hostname` WMDE_UNISON_PRF=/etc/wmde-rp-unison.prf if [ -e "$WMDE_UNISON_PRF" ]; then cp "$WMDE_UNISON_PRF" "$UNISON/default.prf"; fi eval unison $HOMEDIR $NFSHOMES/$USER $OTHERARGS -repeat watch+60 -watch -batch $IGNORES echo "$HOMEDIR" exit 0 exit 0 echo "Login as $PAM_USER with type $PAM_TYPE" >> /tmp/login.txt export NFSSERVER="nfsserver.lan.gs.wikimedia.de" export HOMEDIR=$(getent passwd "$PAM_USER" | cut -d: -f6) export OTHERARGS_CONF="-auto -log -prefer newer " export PIDFILE="$HOMEDIR/.wmdesync/unison.pid" GROUP="wmde" if id -nG "$PAM_USER" | grep -qw "$GROUP"; then echo "$PAM_USER is member of $GROUP." >> /tmp/login.txt else echo "$PAM_USER is not member of $GROUP." >> /tmp/login.txt exit 0 fi echo "Action begins" >> /tmp/login.txt echo "Homedir for $PAM_USER is $HOMEDIR." >> /tmp/login.txt generate_known_hosts() { echo "SUBFUNC $HOMEDIR, $NFSSERVER" >> /tmp/login.txt ipa host-show nfsserver.lan.gs.wikimedia.de --all | grep "SSH public key:" | sed 's/.*SSH public key: //;s/, /\n/g' | sed "s/^\([^[:space:]]\+\s\+.*\)$/$NFSSERVER \1/" > "$HOMEDIR/.wmdesync/known_hosts" } oioioioisync_config() { rm -rf $HOMEDIR/.unison unison $HOMEDIR/.config ssh://$NFSSERVER/$HOMEDIR/.config -sshargs "$SSHARGS" $OTHERARGS_CONF -batch # & echo $! > $PIDFILE mkdir -p $HOMEDIR/.local/share/backgrounds unison $HOMEDIR/.local/share/backgrounds ssh://$NFSSERVER/$HOMEDIR/.local/share/backgrounds -sshargs "$SSHARGS" $OTHERARGS_CONF -batch # & echo $! > $PIDFILE } sync_all() { #Prüfen, ob PID-Datei existiert if -f "$PIDFILE" ; then PID=$(cat "$PIDFILE") # Prüfen, ob Prozess läuft und Unison ist if ps -p "$PID" > /dev/null 2>&1; then # Ist es auch wirklich ein Unison-Prozess? if ps -p "$PID" -o comm= | grep -q "^unison$"; then echo "Unison läuft bereits mit PID $PID." exit 0 else echo "PID $PID gehört nicht zu Unison. Ignoriere PID-Datei." fi else echo "PID $PID läuft nicht mehr. Starte Unison neu." fi fi unison $HOMEDIR ssh://$NFSSERVER/$HOMEDIR -sshargs "$SSHARGS" $OTHERARGS -batch -ignore 'Path .unison' -ignore 'Path .cache' & echo $! > $PIDFILE } sudo -E -u $PAM_USER mkdir -p $HOMEDIR/.wmdesync sudo -E -u $PAM_USER bash -c "$(declare -f generate_known_hosts); generate_known_hosts" 2>>/tmp/login.txt sudo -E -u $PAM_USER bash -c "$(declare -f sync_config); sync_config" 2>>/tmp/login.txt sudo -E -u $PAM_USER bash -c "$(declare -f sync_all); sync_all" 2>>/tmp/login.txt #sudo -u "$PAM_USER" bash -c "NFSSERVER='$NFSSERVER' HOMEDIR='$HOMEDIR' $(declare -f generate_known_hosts); generate_known_hosts" 2>>/tmp/login.txt #sudo -u "$PAM_USER" bash -c "NFSSERVER='$NFSSERVER' HOMEDIR='$HOMEDIR' SSHARGS='$SSHARGS' OTHERARGS='$OTHERARGS_CONF'; $(declare -f sync_config); sync_config" 2>>/tmp/login.txt echo "RESULT $?" >> /tmp/login.txt echo "Done" >> /tmp/login.txt