[#30] ftp容器增加动态检测并更新dns.conf到share目录
This commit is contained in:
40
src/metric/ftp/build/dns-publish.sh
Normal file
40
src/metric/ftp/build/dns-publish.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
set -uo pipefail
|
||||
|
||||
# Publish latest /private/argus/etc/dns.conf to ${FTP_BASE_PATH}/share/dns.conf
|
||||
|
||||
SRC="/private/argus/etc/dns.conf"
|
||||
FTP_BASE_PATH="${FTP_BASE_PATH:-/private/argus/ftp}"
|
||||
DST_DIR="${FTP_BASE_PATH}/share"
|
||||
DST="${DST_DIR}/dns.conf"
|
||||
UID_VAL="${ARGUS_BUILD_UID:-2133}"
|
||||
GID_VAL="${ARGUS_BUILD_GID:-2015}"
|
||||
INTERVAL="${DNS_PUBLISH_INTERVAL:-10}"
|
||||
|
||||
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') [DNS-Publish] $*"; }
|
||||
|
||||
mkdir -p "$DST_DIR" 2>/dev/null || true
|
||||
|
||||
log "service start: SRC=$SRC DST=$DST interval=${INTERVAL}s"
|
||||
|
||||
while true; do
|
||||
if [[ -f "$SRC" ]]; then
|
||||
# Only sync when content differs
|
||||
if ! cmp -s "$SRC" "$DST" 2>/dev/null; then
|
||||
tmp="${DST}.tmp"
|
||||
if cp "$SRC" "$tmp" 2>/dev/null; then
|
||||
mv -f "$tmp" "$DST"
|
||||
chown "$UID_VAL":"$GID_VAL" "$DST" 2>/dev/null || true
|
||||
chmod 0644 "$DST" 2>/dev/null || true
|
||||
ts_src=$(date -r "$SRC" '+%Y-%m-%dT%H:%M:%S%z' 2>/dev/null || echo "?")
|
||||
log "synced dns.conf (src mtime=$ts_src) -> $DST"
|
||||
else
|
||||
log "ERROR: copy failed $SRC -> $tmp"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log "waiting for source $SRC"
|
||||
fi
|
||||
sleep "$INTERVAL"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user