FreeNAS Code
This project has moved to github - see https://github.com/freenas
Brought to you by:
cochard,
mattolander
#!/bin/sh # # $NetBSD: cron,v 1.5 2000/09/19 13:04:38 lukem Exp $ # $FreeBSD: src/etc/rc.d/cron,v 1.7 2005/01/16 03:12:03 obrien Exp $ # # Modified by Volker Theile (votdev@gmx.de) # # PROVIDE: cron # REQUIRE: LOGIN cleanvar # BEFORE: securelevel # KEYWORD: shutdown . /etc/rc.subr . /etc/configxml.subr name="cron" rcvar="`set_rcvar`" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" start_precmd="create_conf" cron_config=${cron_config:-"/etc/crontab"} create_conf() { # Create /etc/crontab. echo "SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/var/log # #minute hour mday month wday who command #" > ${cron_config} # RSYNC client _index=`configxml_get_count "//rsync/rsyncclient"` if [ 0 -lt ${_index} ]; then echo "# Perform RSYNC client." >> ${cron_config} fi _i=0 while [ ${_index} -gt 0 ] do /usr/local/bin/xml sel -t -m "//rsync/rsyncclient[position()=${_index}]" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -o " " \ -o "root /var/run/rsync_client${_i}.sh" \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} _i=$(( ${_i} + 1 )) _index=$(( ${_index} - 1 )) done # RSYNC local _index=`configxml_get_count "//rsync/rsynclocal"` if [ 0 -lt ${_index} ]; then echo "# Perform RSYNC local." >> ${cron_config} fi _i=0 while [ ${_index} -gt 0 ] do /usr/local/bin/xml sel -t -m "//rsync/rsynclocal[position()=${_index}]" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -o " " \ -o "root /var/run/rsync_local${_i}.sh" \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} _i=$(( ${_i} + 1 )) _index=$(( ${_index} - 1 )) done # Scheduled shutdown if [ 0 -lt `configxml_get_count "//shutdown/enable"` ]; then echo "# Perform scheduled shutdown." >> ${cron_config} /usr/local/bin/xml sel -t -m "//shutdown" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -o " " \ -o "root /sbin/shutdown -p now" \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} fi # Scheduled reboot if [ 0 -lt `configxml_get_count "//reboot/enable"` ]; then echo "# Perform scheduled reboot." >> ${cron_config} /usr/local/bin/xml sel -t -m "//reboot" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -o " " \ -o "root /sbin/shutdown -r now" \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} fi # Email status notification if [ 0 -lt `configxml_get_count "//statusreport/enable"` ]; then echo "# Perform email status report." >> ${cron_config} /usr/local/bin/xml sel -t -m "//statusreport" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -o " " \ -o "root /etc/mail/sendreport" \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} fi # Additional cron jobs if [ 0 -lt `configxml_get_count "//cron/job[enable]"` ]; then echo "# Additional cron jobs." >> ${cron_config} /usr/local/bin/xml sel -t -m "//cron/job[enable]" \ -i "all_mins[. = "0"]" -m minute -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_mins[. != "0"]" -o "*" -b \ -o " " \ -i "all_hours[. = "0"]" -m hour -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_hours[. != "0"]" -o "*" -b \ -o " " \ -i "all_days[. = "0"]" -m day -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_days[. != "0"]" -o "*" -b \ -o " " \ -i "all_months[. = "0"]" -m month -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_months[. != "0"]" -o "*" -b \ -o " " \ -i "all_weekdays[. = "0"]" -m weekday -i "position() > 1" -o "," -b -v "." -b -b \ -i "all_weekdays[. != "0"]" -o "*" -b \ -v "concat(' ',who,' ',command)" -n \ ${configxml_file} | /usr/local/bin/xml unesc >> ${cron_config} fi } load_rc_config $name if checkyesno cron_dst then cron_flags="$cron_flags -s" fi run_rc_command "$1"