#!/usr/bin/env bash # Export Baïkal (calendrier + contacts) pour UN utilisateur. # Usage : ./baikal-export-user.sh # Sortie : ./baikal-export//cal-default.ics et contacts-default.vcf set -u BASE="https://dav.beafrancois.fr/dav/html" # <-- adapter au serveur Baïkal OUT="./baikal-export" read -r -p "Nom d'utilisateur Baïkal : " USER read -r -s -p "Mot de passe pour $USER : " PASS; echo DIR="$OUT/$USER"; mkdir -p "$DIR" AUTH=(--digest -u "$USER:$PASS") ## --- CALENDRIER (default) --- F="$DIR/cal-default.ics" curl -s "${AUTH[@]}" "$BASE/cal.php/calendars/$USER/default/?export" -o "$F" if head -1 "$F" | grep -q BEGIN:VCALENDAR; then N=$(grep -c BEGIN:VEVENT "$F") echo "[OK] Calendrier : $N événements -> $F" else echo "[!] Calendrier : export invalide (mauvais mot de passe ?) -> $F" fi ## --- CONTACTS (default) --- F="$DIR/contacts-default.vcf" : > "$F" EXPECTED=0 while read -r P; do [ -z "$P" ] && continue EXPECTED=$((EXPECTED+1)) curl -s "${AUTH[@]}" "https://dav.beafrancois.fr$P" >> "$F" echo "" >> "$F" done < <(curl -s "${AUTH[@]}" -X PROPFIND -H "Depth: 1" \ "$BASE/card.php/addressbooks/$USER/default" \ | tr -d '\r' \ | grep -o "/dav/html/card.php/addressbooks/$USER/default/[^<]*vcf") GOT=$(grep -c BEGIN:VCARD "$F") if [ "$GOT" -eq "$EXPECTED" ] && [ "$GOT" -gt 0 ]; then echo "[OK] Contacts : $GOT/$EXPECTED -> $F" else echo "[!] Contacts : $GOT récupérés sur $EXPECTED listés -> $F" fi