File Distribution Using rsnyc
July 18, 2004
The following script is used to distribute account files to different computers using rsync over ssh. Of course, it is important to note that the computer that runs this script as a cron job is the only computer that account files should be edited on. This includes hiding or aliasing the "passwd" command from users on the other machines. Also, if you want the ssh login to work automagically, you'll have to setup ssh keys.
However, maybe somebody with a little more drive can write up a script to run on all machines and merge changed files.
#!/bin/bash # # Smart File Distribution Script # # Distribute list of files to via rsync to a list of hosts if they have been modified locally # # each file to distribute D_FILES="/etc/passwd /etc/shadow /etc/group /etc/gshadow"; # each server to distribute to D_HOSTS="dp1 dp2 dp8"; # loop through each file for D_FILE in $D_FILES; do # if the file exists if [ -e $DFILE ]; then # if update file is older than real file if [ $D_FILE -nt $D_FILE.lastupdate ] then # update update file touch $D_FILE.lastupdate # distribute to each host for D_HOST in $D_HOSTS; do if [ $D_HOST != `hostname` ] then #sync the file rsync -p -e ssh $D_FILE $D_HOST:$D_FILE echo "Distributing $D_FILE to $D_HOST" fi done fi else echo "File $D_FILE doesn't even exist!" fi done