version 1.6, 2013/07/18 14:45:59 |
version 1.10, 2013/07/19 11:14:58 |
|
|
#!/usr/local/bin/bash |
#!/usr/local/bin/bash |
|
|
# Use config file instead of editing script itself |
# Use config file instead of editing script itself |
source netupdate.conf |
source /var/lib/mss/netupdate.conf |
|
|
|
# Add version file if it's missing (useful on clean systems) |
|
if [ ! -e /var/lib/mss/version ]; then |
|
echo "0.0" > /var/lib/mss/version |
|
fi |
|
|
# Set some variables |
# Set some variables |
LOCK=/var/run/mssupdate.lock |
LOCK=/var/run/mssupdate.lock |
LOCALVERSION=`cat /var/lib/mss/version` |
LOCALVERSION=`cat /var/lib/mss/version` |
|
|
VERSION=`ssh $USER@$SERVER grep $MYNAME $HOSTLIST |awk '{print $2}'` |
VERSION=`ssh $USER@$SERVER grep $MYNAME $HOSTLIST |awk '{print $2}'` |
UPDATEDIR=`ssh $USER@$SERVER grep $MYNAME $HOSTLIST |awk '{print $3}'` |
UPDATEDIR=`ssh $USER@$SERVER grep $MYNAME $HOSTLIST |awk '{print $3}'` |
|
|
# Add version file if it's missing (useful on clean systems) |
|
if [ ! -e /var/lib/mss/version ]; then |
|
echo "0.0" > /var/lib/mss/version |
|
fi |
|
|
|
# Check whether we have latest version |
# Check whether we have latest version |
if [ "$(echo "$LOCALVERSION < $VERSION" |bc -l )" -eq 1 ] && [ ! -e $LOCK ]; then |
if [ -n "$VERSION" ] && [ -n "$UPDATEDIR" ] && [ "$(echo "$LOCALVERSION < $VERSION" |bc -l )" -eq 1 ] && [ ! -e $LOCK ]; then |
echo "Starting update..." |
echo "Starting update..." |
touch $LOCK |
touch $LOCK |
rsync -Havx --ignore-existing --exclude-from=/var/lib/mss/rsync-exclude $USER@$SERVER:$UPDATEDIR/music /var/lib/mss/ |
rsync -Havx --ignore-existing --exclude-from=/var/lib/mss/rsync-exclude $USER@$SERVER:$UPDATEDIR/music /var/lib/mss/ |
rsync -Hacvx --exclude-from=/var/lib/mss/rsync-exclude $USER@$SERVER:$UPDATEDIR/$VERSION/1 /var/lib/mss |
rsync -Hacvx --exclude-from=/var/lib/mss/rsync-exclude $USER@$SERVER:$UPDATEDIR/$VERSION/ /var/lib/mss |
if [ $? -eq 0 ]; then |
if [ $? -eq 0 ]; then |
echo "Updated from $LOCALVERSION to $VERSION" |
echo "Updated from $LOCALVERSION to $VERSION" |
echo $VERSION > /var/lib/mss/version |
echo $VERSION > /var/lib/mss/version |
ssh $USER@$SERVER echo "`date` SUCCESS: $MYNAME was updated from $UPDATEDIR $LOCALVERSION '->' $VERSION" >> $UPDATEDIR/update.log |
ssh $USER@$SERVER "echo "`date` SUCCESS: $MYNAME was updated from $UPDATEDIR $LOCALVERSION '->' $VERSION" >> $UPDATEDIR/update.log" |
rm -f $LOCK |
rm -f $LOCK |
else |
else |
echo "Update failed" |
echo "Update failed" |
ssh $USER@$SERVER echo "`date` ERROR: $MYNAME update from $UPDATEDIR $LOCALVERSION '->' $VERSION failed" >> $UPDATEDIR/update.log |
ssh $USER@$SERVER "echo "`date` ERROR: $MYNAME update from $UPDATEDIR $LOCALVERSION '->' $VERSION failed" >> $UPDATEDIR/update.log" |
fi |
fi |
elif [ "$(echo "$LOCALVERSION < $VERSION" |bc -l )" -eq 1 ] && [ -e $LOCK ]; then |
elif [ -n "$VERSION" ] && [ -n "$UPDATEDIR" ] && [ "$(echo "$LOCALVERSION < $VERSION" |bc -l )" -eq 1 ] && [ -e $LOCK ]; then |
echo "Update is running..." |
echo "Update is running..." |
ssh $USER@$SERVER echo "`date` WARNING: $MYNAME is still running update from $LOCALVERSION to $VERSION" >> $UPDATEDIR/update.log |
ssh $USER@$SERVER "echo "`date` WARNING: $MYNAME is still running update from $LOCALVERSION to $VERSION" >> $UPDATEDIR/update.log" |
|
elif [ -z "$VERSION" ] && [ -z "$UPDATEDIR" ]; then |
|
echo "Can't find myself in $HOSTLIST" |
else |
else |
echo "Version $LOCALVERSION is already installed" |
echo "Version $LOCALVERSION is already installed" |
fi |
fi |