export PATH=$PATH:/sbin:/usr/sbin
logfile=/var/local/log/update-system.log
+tmpfile=/tmp/update-system.list
-echo "$(date): $HOSTNAME: update-system: Start" > $logfile
+apt-get update -y > /dev/null 2>&1
-apt-get update -y >> $logfile 2>&1
-
-uptodate=$(apt list --upgradeable 2> /dev/null | grep -v "^Listing" | wc -l)
+apt list --upgradeable > $tmpfile 2> /dev/null
+uptodate=$(grep -v "^Listing" $tmpfile | wc -l)
if [ $uptodate -ne 0 ]; then
- apt-get upgrade -y >> $logfile 2>&1
- apt-get autoremove -y >> $logfile 2>&1
+ cat $tmpfile >> $logfile && rm $tmpfile
+
+ apt-get upgrade -y >> $tmpfile
+
+ held_back=$(grep "kept back" $tmpfile | wc -l)
+
+ if [ $held_back -ne 0 ]; then
+ echo "$(date): $HOSTNAME not updated - packages held back" >> $logfile
- echo "Updated $HOSTNAME" >> $logfile
+ cat $tmpfile >> $logfile && rm $tmpfile
+ else
+ rm $tmpfile
+ echo "$(date): Updated $HOSTNAME" >> $logfile
+ fi
+
+ apt-get autoremove -y >> /dev/null 2>&1
else
- echo "No updates for $HOSTNAME" >> $logfile
-fi
+ rm $tmpfile
-echo "$(date): $HOSTNAME: update-system: End" >> $logfile
+ echo "$(date): No updates for $HOSTNAME" >> $logfile
+fi