cron.func 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. get_next_cron_string() {
  2. # Parsing config
  3. curr_str=$(grep "JOB=" $V_USERS/$user/cron.conf|cut -f 2 -d \'|\
  4. sort -n|tail -n1)
  5. # Print result
  6. echo "$((curr_str +1))"
  7. }
  8. is_cron_job_free() {
  9. # Checking record id
  10. check_job=$(grep "JOB='$job'" $V_USERS/$user/cron.conf)
  11. if [ ! -z "$check_job" ]; then
  12. echo "Error: job id exist"
  13. log_event 'debug' "$E_EXISTS $V_EVENT"
  14. exit $E_EXISTS
  15. fi
  16. }
  17. sort_cron_jobs() {
  18. # Defining conf
  19. conf="$V_USERS/$user/cron.conf"
  20. cat $conf |sort -n -k 2 -t \' >$conf.tmp
  21. mv -f $conf.tmp $conf
  22. }
  23. sync_cron_jobs() {
  24. conf="/var/spool/cron/$user"
  25. # Deleting old data
  26. rm -f $conf
  27. # Checking reporting system
  28. rep=$(grep 'REPORTS=' $V_USERS/$user/user.conf | cut -f 2 -d \')
  29. if [ "$rep" = 'yes' ]; then
  30. email=$(grep 'CONTACT=' $V_USERS/$user/user.conf | cut -f 2 -d \')
  31. echo "MAILTO=$email" >$conf
  32. fi
  33. # Reading user cron.conf
  34. while read line ; do
  35. # Defining new delimeter
  36. IFS=$'\n'
  37. # Parsing key=value
  38. for key in $(echo $line|sed -e "s/' /'\n/g"); do
  39. eval ${key%%=*}="${key#*=}"
  40. done
  41. if [ "$SUSPENDED" = 'no' ] ; then
  42. # Adding line to system cron
  43. echo "$MIN $HOUR $DAY $MONTH $WDAY $CMD" |\
  44. sed -e "s/%quote%/'/g" -e "s/%dots%/:/g" >> $conf
  45. fi
  46. done <$V_USERS/$user/cron.conf
  47. }
  48. is_job_valid() {
  49. result=$(grep "JOB='$job'" $V_USERS/$user/cron.conf)
  50. if [ -z "$result" ]; then
  51. echo "Error: job id not exists"
  52. log_event 'debug' "$E_NOTEXIST $V_EVENT"
  53. exit $E_NOTEXIST
  54. fi
  55. }
  56. del_cron_job() {
  57. str=$(grep -n "JOB='$job'" $V_USERS/$user/cron.conf|cut -f 1 -d :)
  58. sed -i "$str d" $V_USERS/$user/cron.conf
  59. }
  60. is_job_suspended() {
  61. # Parsing jobs
  62. str=$(grep "JOB='$job'" $V_USERS/$user/cron.conf|grep "SUSPENDED='yes'" )
  63. # Checkng key
  64. if [ ! -z "$str" ]; then
  65. echo "Error: job suspended"
  66. log_event 'debug' "$E_SUSPENDED $V_EVENT"
  67. exit $E_SUSPENDED
  68. fi
  69. }
  70. is_job_unsuspended() {
  71. # Parsing jobs
  72. str=$(grep "JOB='$job'" $V_USERS/$user/cron.conf|grep "SUSPENDED='no'" )
  73. # Checkng key
  74. if [ ! -z "$str" ]; then
  75. echo "Error: job unsuspended"
  76. log_event 'debug' "$E_UNSUSPENDED $V_EVENT"
  77. exit $E_UNSUSPENDED
  78. fi
  79. }
  80. update_cron_job_value() {
  81. key="$1"
  82. value="$2"
  83. # Defining conf
  84. conf="$V_USERS/$user/cron.conf"
  85. # Parsing conf
  86. job_str=$(grep -n "JOB='$job'" $conf)
  87. str_number=$(echo $job_str | cut -f 1 -d ':')
  88. str=$(echo $job_str | cut -f 2 -d ':')
  89. # Parsing key=value
  90. IFS=$'\n'
  91. for keys in $(echo $str|sed -e "s/' /'\n/g"); do
  92. eval ${keys%%=*}=${keys#*=}
  93. done
  94. # Defining clean key
  95. c_key=$(echo "${key//$/}")
  96. eval old="${key}"
  97. # Escaping slashes
  98. old=$(echo "$old" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  99. new=$(echo "$value" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  100. # Updating conf
  101. sed -i "$str_number s/$c_key='${old//\*/\\*}'/$c_key='${new//\*/\\*}'/g" \
  102. $conf
  103. }
  104. cron_clear_search() {
  105. # Defining delimeter
  106. IFS=$'\n'
  107. # Reading file line by line
  108. for line in $(grep $search_string $conf); do
  109. # Defining new delimeter
  110. IFS=$'\n'
  111. # Parsing key=value
  112. for key in $(echo $line|sed -e "s/' /'\n/g"); do
  113. eval ${key%%=*}=${key#*=}
  114. done
  115. # Print result line
  116. eval echo "$field"
  117. done
  118. }