Files

56 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
: "${AD_DOMAIN:?missing AD_DOMAIN}"
: "${AD_USER_PASSWORD:?missing AD_USER_PASSWORD}"
: "${FILESERVER_HOST:?missing FILESERVER_HOST}"
interval=${DEV_ACTIVITY_INTERVAL_SECONDS:-4}
log() {
printf '[preview-client] %s\n' "$*"
}
smb() {
local user=$1
local share=$2
local commands=$3
smbclient "//${FILESERVER_HOST}/${share}" \
-m SMB3 -U "${AD_DOMAIN}\\${user}%${AD_USER_PASSWORD}" \
-c "$commands"
}
ready=0
for _ in $(seq 1 120); do
if smb alice Data 'ls' >/dev/null 2>&1; then
ready=1
break
fi
sleep 1
done
if [[ $ready != 1 ]]; then
printf '[preview-client] ERROR: SMB server did not become ready\n' >&2
exit 1
fi
printf 'Generated by the preview SMB client.\n' > /tmp/live-note.txt
smb alice Data 'cd Finance; mkdir Reports; cd Reports; put /tmp/live-note.txt live-note.txt; ls' >/dev/null
smb alice Data 'cd Finance; cd Reports; put /tmp/live-note.txt audit-source.txt; get audit-source.txt /tmp/audit-readback-1.txt; get audit-source.txt /tmp/audit-readback-2.txt; get audit-source.txt /tmp/audit-readback-3.txt; rename audit-source.txt audit-moved.txt; del audit-moved.txt' >/dev/null
smb carol Data 'cd Engineering; mkdir Designs; cd Designs; put /tmp/live-note.txt architecture.txt; ls' >/dev/null
smb alice Private 'cd alice; put /tmp/live-note.txt notes.txt; ls' >/dev/null
smb report_svc Data 'cd Finance; cd Reports; put /tmp/live-note.txt ignored-service-event.txt; get ignored-service-event.txt /tmp/ignored-service-readback.txt; del ignored-service-event.txt' >/dev/null
touch /run/preview-client-ready
log 'Initial SMB file operations complete; generating live activity'
counter=0
while true; do
counter=$((counter + 1))
printf 'Preview activity event %d at %s\n' "$counter" "$(date -u +%FT%TZ)" > /tmp/live-note.txt
smb alice Data 'cd Finance; cd Reports; put /tmp/live-note.txt live-note.txt; get live-note.txt /tmp/readback.txt; ls' >/dev/null 2>&1 || true
smb bob Data 'cd Finance; ls' >/dev/null 2>&1 || true
smb carol Data 'cd Engineering; cd Designs; get architecture.txt /tmp/architecture.txt; ls' >/dev/null 2>&1 || true
smb eve Data 'cd Projects; ls' >/dev/null 2>&1 || true
smb alice Private 'cd alice; ls; get notes.txt /tmp/private-note.txt' >/dev/null 2>&1 || true
sleep "$interval"
done