bin/run-mirrors: If we have a keytab file, log in with it.
[mirror-admin] / bin / run-mirrors
CommitLineData
db2c5b8b
MW
1#! /bin/sh
2
3set -e
4
5## Make sure we're running as the right user.
fb775fef 6case $(id -un) in
db2c5b8b
MW
7 mirror) ;;
8 *) exec userv -fstdin=/dev/null mirror run ;;
9esac
10
11## Set up a plausible environment.
12HOME=/mnt/ftp/mirror-admin; export HOME; cd
13PATH=$HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin
14export PATH
15umask 002
16
17## Make sure we're running with a lock file.
18case "${MIRROR_LOCKED-nil}" in
19 nil) exec env MIRROR_LOCKED=t locking -f var/mirror.lock "$0" "$@" ;;
20esac
21
93e6eb8e
MW
22## Hack for mad Kerberized NFS.
23if [ -r etc/krb5.keytab ]; then
24 kinit -k -t etc/krb5.keytab mirror
25fi
26
db2c5b8b
MW
27## Before we start, rotate the logs. (Doing things this way means that we
28## can be sure we don't lose new logs, even if the log rotation goes
29## completely mental.
30logrotate -s var/logrotate.state etc/logrotate.conf
31
32## Let SIGINT take out the children only.
33trap "" INT
34
35## Now do the various mirroring things.
36for file in $(run-parts --list etc/mirrors.d); do
37 [ -x "$file" ] || continue
38 base=${file##*/}; base=${base#[0-9]*-}
39 (
40 echo
41 echo "***--------------------------------------------------"
42 echo "*** Running $base at $(date +%Y-%m-%dT%H:%M:%S)"
43 echo
44 set +e; (trap - INT; exec "$file"); rc=$?; set -e
45 echo
46 echo "*** Finished $(date +%Y-%m-%dT%H:%M:%S); rc = $rc"
47 ) >>log/$base.log 2>&1
48done