56 lines
2.3 KiB
Bash
Executable File
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
|