#!/bin/bash
host=$1
mtuser="user"
mtpass="password"
echo "Determine  host $host status..."
if ping -qc 2 $host >/dev/null
then
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Alive"
        dt=`date '+%Y-%m-%d %H:%M:%S'`
        echo "$dt: Check current version"
        timeout 20 sshpass -p '$mtpass' ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $mtuser@$host  ':put (([/system resource get value-name=version ])."|".([/system routerboard get value-name=current-firmware ])."|".([/system routerboard get value-name=upgrade-firmware ]))'
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Uploading RouterOS"
        ncftpput -P 21 -R -v -u $mtuser -p $mtpass $host / /tools/upgrade-mipsbe/routeros-mipsbe-newest.npk
        if [ "$?" -eq "0" ]; then
           dt=`date '+%Y-%m-%d %H:%M:%S'`
           echo "$dt: Success.RouterOS uploaded..."
           dt=`date '+%Y-%m-%d %H:%M:%S'`
           echo "$dt: Sending reboot command"
           timeout 20 sshpass -p '$mtpass' ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $mtuser@$host  '/system reboot;'
        else
           dt=`date '+%Y-%m-%d %H:%M:%S'`
           echo "$dt: Problem during upload..."
           exit 1
        fi
else
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	echo "$dt: Dead"
        exit 1
fi
dt=`date '+%Y-%m-%d %H:%M:%S'`
echo "$dt: Sent..."
sleep 5
up="no"
until [  "$up" == "yes" ]; do
  echo "Waiting for host to come back online..."
  if ping -qc 2 $host >/dev/null
  then
     up="yes"
  else
     up="no"
     sleep 1
  fi    
done
echo "Determine  host $host status..."
if ping -qc 2 $host >/dev/null
then
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Alive"
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Check current version"
        timeout 20 sshpass -p '$mtpass' ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $mtuser@$host  ':put (([/system resource get value-name=version ])."|".([/system routerboard get value-name=current-firmware ])."|".([/system routerboard get value-name=upgrade-firmware ]))'
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Upgrading Firmware and rebooting"
        timeout 20 sshpass -p '$mtpass' ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $mtuser@$host  '/system routerboard upgrade; /system reboot;' 
else
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	echo "$dt: Dead"
        exit 1
fi
dt=`date '+%Y-%m-%d %H:%M:%S'`
echo "$dt: Sent..."
sleep 5
up="no"
until [  "$up" == "yes" ]; do
  echo "Waiting for host to come back online..."
  if ping -qc 2 $host >/dev/null
  then
     up="yes"
  else
     up="no"
     sleep 1
  fi    
done

echo "Determine  host $host status..."
if ping -qc 2 $host >/dev/null
then
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Alive"
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt: Check current version"
        timeout 20 sshpass -p '$mtpass' ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $mtuser@$host  ':put (([/system resource get value-name=version ])."|".([/system routerboard get value-name=current-firmware ])."|".([/system routerboard get value-name=upgrade-firmware ]))'
else
        dt=`date '+%Y-%m-%d %H:%M:%S'`
	    echo "$dt Dead"
        exit 1
fi

exit 0
