We use a system of scripts called
admchange
to coordinate changes. The idea is to provide a mechanism to keep various admins (in different locations, and with different types of reachability) from bumping into each other.
Documentation
Name
-
admchange
- control changes by system administrators
-
startchange
- begin a large change, with locking
-
endchange
- end a large change, releasing lock
-
logchange
- log a note about a smaller change
Synopsis
*change [-b] [-e] [-m message]
Purpose
Helps keep track who is making changes to the system at any given time, and preven collisions of same. Maintains a changelog to keep a record of these changes over time.
Usage
Operation being performed is determined by the name the script is called as. Intent is for links to be made to master
admchange
script. Do not call as
admchange
directly.
In all three modes, the user provides a message to describe the change. Defaults to prompting using
readline
for input, RCS-style. Will use your
$EDITOR
or
/bin/vi
instead if you call this script with
-e
option. Can also specify a message as an argument using
-m
option (useful for short one-liners, e.g.,
logchange -b -m 'restarted apache'
).
The message is recorded in the change log and broadcast using
wall
. The
-b
option suppresses the wall broadcast.
Call as
startchange
to begin a large change. A "large change" is one which will take some time to finish, during which time other admins should not make changes. This establishes a lock to prevent another
startchange
from being started before
endchange
is called. The message entered is also added to
/etc/motd
to alert any new logins.
Call as
endchange
to signal the end of a change begun with
startchange
, and release the lock. Restores
/etc/motd
as well.
Call as
logchange
to log a minor change which doesn't need to be guarded by locking. This does not touch
/etc/motd
at all. Can be used while
startchange
is in effect (useful for checkpoint logging).
Discussion
Use the
startchange
and
endchange
scripts in
/usr/local/adm
. I was going to include Mike Ledoux's instructional message in here, but I can't find it in the archives! --
BruceDawson - 23 Feb 2006
That's because I never wrote one. I described a method that I thought would work to control access, then quickly wrote the scripts to do it and sent them up to the server. Usage is simple, really, just run
startchange
as yourself before making any changes, then run
endchange
when you are done. The scripts will prompt you for a log message (reading from stdin, redirection works fine; or use the
-e
option to fire up a real editor) then do all the magic for you. --
MikeLedoux - 27 Feb 2006
The scripts have been combined into one multi-call script, and some functionlity added. The script and links now live
/usr/local/adm/bin/
with data files in
/usr/local/adm/changes/
. There is a
logchange
script one can run to record notes on a change that didn't need the start/end guarding. See the source for details. --
BenScott - 03 Apr 20
The script keeps getting tweaked to add (creeping) features. I attached the latest version of the
admchange
script to this page, in case others might find it useful. The source is fairly well-commented, with usage instructions at the top. Share and enjoy! --
BenScott - 21 May 2006