123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/sh
- # This file is included in the GNU tar distribution as an example. It is
- # not used by default unless the proper line is uncommented in backup-specs.
- # System administrators will probably want to customize this and
- # backup-specs for their site.
- #
- # This script should be run by tar with --info-script (-F) to inform
- # interested parties that a tape for the next volume of the backup needs to
- # be put in the tape drive.
- #
- # Include location of `sendmail' and GNU finger.
- PATH="/usr/lib:/usr/local/gnubin:${PATH}"
- export PATH
- # Get definition of TAPE_FILE, VOLNO_FILE, and so on.
- . /home/gd2/dump/backup-specs
- mt -f "${TAPE_FILE}" rewind
- mt -f "${TAPE_FILE}" offl
- volno="`cat \"${VOLNO_FILE}\" 2> /dev/null`"
- if [ $? -ne 0 ]; then
- volno=0
- fi
- # Get a list of people to whom to mail a request for changing the tape.
- # This egregious nightmare parses the output from GNU finger which shows
- # which users are logged into consoles (and thus in the office and capable
- # of changing tapes).
- #
- # Certain users (like `root') aren't real users, and shouldn't be notified.
- # Neither should `zippy', `elvis', etc. (on the GNU machines) since they're
- # just test accounts.
- recipients="`
- finger .clients 2> /dev/null \
- | sed -ne '
- 1{
- /clientstatus: file has not changed in/{
- n;n;n;n;d
- }
- n;n;d
- }
- s/^..................................................//
- $!{/^$/d
- /^root?*$/d
- /^zippy$/d
- /^fnord$/d
- /^elvis$/d
- /^snurd$/d
- H
- }
- ${g
- : 1
- s/\(\n\)\([A-Za-z0-9_][A-Za-z0-9_]*\)\(\n.*\)\2\(.*\)/\1\2\3\4/g
- s/\n$//g
- t 1
- s/^\n//
- s/\n$//g
- s/\n/, /g
- : 2
- s/, ,/,/g
- t 2
- p
- }'`"
- # Customized behavior for FSF machines, to bring attention to the fact that
- # the tape needs to be changed (who looks at the terminal?)
- sendmail -oi -t << __EOF__
- From: `basename $0` (backup tape-changing reminder)
- To: ${recipients}
- Cc: ${ADMINISTRATOR}
- Subject: Backup needs new tape for volume ${volno}
- Reply-To: ${ADMINISTRATOR}
- This is an automated report from the backup script running on
- `hostname`.
- Volume ${volno} of the backup needs to be put in the tape drive. Usually
- whoever prepared the backup leaves labeled tapes on top of the drive
- itself. If there aren't any more, information about where to find tapes
- and how to label them are posted on the wall by apple-gunkies (unhelpfully
- obscured by a bookshelf). An online copy (which is probably more
- up-to-date) can also be found in ~friedman/etc/fsf/backup.how.
- __EOF__
- echo "Please put volume ${volno} in tape drive and press RETURN"
- read input
- echo "Writing volume ${volno}..."
- sendmail -oi -t << __EOF__
- From: `basename $0` (backup tape-changing reminder)
- To: ${recipients}
- Cc: ${ADMINISTRATOR}
- Subject: Volume ${volno} for backup has been added
- Reply-To: ${ADMINISTRATOR}
- This is an automated report from the backup script running on
- `hostname`.
- The backup has been continued, so for now no further attention is required.
- __EOF__
- exit 0
- # eof
|