Newer
Older
sysupd / sysupd
  1. #!/bin/sh
  2. # Update Various System Files, Ports, etc.
  3. # Copyright (c) 2006-2016, TundraWare Inc, Des Plaines, IL USA
  4. # All Rights Reserved
  5. # $Id$
  6.  
  7.  
  8. #####
  9. # Where To Put The Various Log Files Generated Here
  10. #####
  11.  
  12. LOGDIR=/var/log
  13.  
  14. #####
  15. # Some Program Locations Vary By OS
  16. ###
  17.  
  18. ECHO=$(which echo)
  19.  
  20.  
  21. #####
  22. # List Of Sets To Process By Default
  23. #####
  24.  
  25. #ALL='debian freebsd_doc freebsd_ports freebsd_src freebsd_sys macports redhat texlive'
  26.  
  27. # !!!
  28. # !!! Edit this or the program will do nothing without CLI args
  29. # !!!
  30.  
  31. DEFAULTSETS=${SYSUPD:-""} # Allow setting this from the environment
  32.  
  33. # ---------------- Support Functions ---------------- #
  34.  
  35. #####
  36. # Enter Timestamp Into Current Log
  37. # Args:
  38. # $1 Name of logfile
  39. #####
  40.  
  41. timestamp()
  42. {
  43. ${ECHO} "" >> $1
  44. ${ECHO} "#####" >> $1
  45. ${ECHO} -n "# " >> $1
  46. date >>$1
  47. ${ECHO} "#####" >> $1
  48. ${ECHO} "" >> $1
  49. }
  50.  
  51. # End Of 'timestamp()'
  52.  
  53.  
  54. #####
  55. # Execute The Desired Update
  56. # Args:
  57. # $1 Update Name
  58. # $2 Log Directory
  59. # $3 Command String To Execute
  60. #####
  61.  
  62. runupd()
  63. {
  64. log=$2/sysupd-$1.log
  65. timestamp $log
  66. touch $2/.sysupd-$1-begin && eval $3 >>$log 2>&1 && touch $2/.sysupd-$1-end &
  67. }
  68.  
  69. # End of 'runupd()'
  70.  
  71.  
  72. # -------------------- Program Entry Point ---------------#
  73.  
  74.  
  75.  
  76. #####
  77. # Command line args override default set
  78. #####
  79.  
  80.  
  81. if [ "$*"_ = _ ]
  82. then
  83. SETS=$DEFAULTSETS
  84. else
  85. SETS=$*
  86. fi
  87.  
  88.  
  89. #####
  90. # Process The Requested Updates
  91. #####
  92.  
  93. for SET in $SETS
  94. do
  95.  
  96. case $SET
  97. in
  98.  
  99. ###
  100. # Debian Linux Updates
  101. ###
  102.  
  103. debian)
  104. runupd $SET $LOGDIR "/usr/bin/apt-get -y update && /usr/bin/apt-get -y dist-upgrade && /usr/bin/apt-get -y upgrade"
  105. ;;
  106.  
  107. ###
  108. # FreeBSD Documentation Updates
  109. ###
  110.  
  111. freebsd_doc)
  112. runupd $SET $LOGDIR "/usr/local/bin/svn update /usr/doc"
  113. ;;
  114.  
  115.  
  116. ###
  117. # Freebsd Ports Updates
  118. ###
  119.  
  120. freebsd_ports)
  121. runupd $SET $LOGDIR "/usr/sbin/portsnap cron update"
  122. ;;
  123.  
  124.  
  125. ###
  126. # FreeBSD Source Code Updates
  127. ###
  128.  
  129. freebsd_src)
  130. runupd $SET $LOGDIR "/usr/local/bin/svn update /usr/src"
  131. ;;
  132.  
  133.  
  134. ###
  135. # FreeBSD Rebuild OS & Kernels
  136. ###
  137.  
  138. freebsd_sys)
  139. rm -f $LOGDIR/sysupd-${SET}.log # Only keep latest run log
  140. cd /usr/src
  141. runupd $SET $LOGDIR "make -j4 clean buildworld buildkernel"
  142. ;;
  143.  
  144.  
  145. ###
  146. # MacPorts
  147. ###
  148.  
  149. macports)
  150. runupd $SET $LOGDIR "/opt/local/bin/port selfupdate && /opt/local/bin/port upgrade outdated"
  151. ;;
  152.  
  153.  
  154. ###
  155. # RedHat YUM Updates
  156. ###
  157.  
  158. redhat)
  159. runupd $SET $LOGDIR "/usr/bin/yum -y clean all && /usr/bin/yum -y upgrade"
  160. ;;
  161.  
  162.  
  163. ###
  164. # TeX Live Updates
  165. ###
  166.  
  167. texlive)
  168. runupd $SET $LOGDIR "/usr/local/bin/tlmgr update --self && /usr/local/bin/tlmgr update --all"
  169. ;;
  170.  
  171.  
  172. #####
  173. # Catch Errors
  174. #####
  175.  
  176. *)
  177. ${ECHO} "Invalid sysupd Option Specified!"
  178. ;;
  179.  
  180. esac
  181.  
  182. done