/
usr
/
local
/
stat_watch
/
includes
/
File Upload :
llllll
Current File: //usr/local/stat_watch/includes/variables.shf
#! /bin/bash f_CONF="$d_PROGRAM"/stat_watch.conf f_CONF2="$d_WORKING"/conf function fn_conf_defaults { ### Default configuration values v_PERL="$( which perl 2> /dev/null || echo "/usr/bin/perl" )" v_CPAN="$( which cpan 2> /dev/null || echo "/usr/bin/cpan" )" v_PRUNE_MAX=10 v_PRUNE_CHANCE=1 v_NICE=15 v_MAX_RUN=3600 v_LOG_MAX=10485760 v_EMAIL_RETAIN=20 v_BACKUP_MIN_DAYS=7 v_BACKUP_MAX_COPIES=4 v_BACKUP_DIRECTORY= v_DEFAULT_JOB_DIRECTORY= v_PARTIAL_SECONDS=1 v_MAX_DEPTH=20 } function fn_read_conf { ### Read from the conf file and get the values ### $1 can be the location of an alternate conf to read from ### Capture all of the default variables fn_conf_defaults ### Verify that the configuration we've been given exists local lf_CONF="$f_CONF" if [[ -n "$1" ]]; then lf_CONF="$1" fi if [[ ! -f "$lf_CONF" ]]; then return fi ### Create variables to contain the defaults local DEFv_PERL="$v_PERL" local DEFv_CPAN="$v_CPAN" local DEFv_PRUNE_MAX="$v_PRUNE_MAX" local DEFv_PRUNE_CHANCE="$v_PRUNE_CHANCE" local DEFv_NICE="$v_NICE" local DEFv_MAX_RUN="$v_MAX_RUN" local DEFv_LOG_MAX="$v_LOG_MAX" local DEFv_EMAIL_RETAIN="$v_EMAIL_RETAIN" local DEFv_BACKUP_MIN_DAYS="$v_BACKUP_MIN_DAYS" local DEFv_BACKUP_MAX_COPIES="$v_BACKUP_MAX_COPIES" local DEFv_BACKUP_DIRECTORY="$v_BACKUP_DIRECTORY" local DEFv_DEFAULT_JOB_DIRECTORY="$v_DEFAULT_JOB_DIRECTORY" local DEFv_PARTIAL_SECONDS="$v_PARTIAL_SECONDS" local DEFv_MAX_DEPTH="$v_MAX_DEPTH" ### Read from the configuration file source <( cat "$lf_CONF" | grep -Ev "^\s*#|^\s*$" | sed -E "s/^\s*/v_/;s/\s*=\s*/=\"/;s/\s*$/\"/" | grep -E "^v_(PERL|CPAN|PRUNE_(CHANCE|MAX)|NICE|LOG_MAX|EMAIL_RETAIN|BACKUP_(MIN_DAYS|MAX_COPIES|DIRECTORY)|PARTIAL_SECONDS|MAX_(DEPTH|RUN)|WORKING)=\".*\"$" ) 2> /dev/null ### Check the variables to make sure that they're logical if [[ -z "$v_PERL" || "${v_PERL:0:1}" == "/" || ! -x "$v_PERL" ]]; then v_PERL="$DEFv_PERL" fi if [[ -z "$v_CPAN" || "${v_CPAN:0:1}" == "/" || ! -x "$v_CPAN" ]]; then v_CPAN="$DEFv_CPAN" fi if [[ -z "$v_PRUNE_MAX" || $( echo -n "$v_PRUNE_MAX" | grep -E "^[0-9]+$" ) -lt 1 || "$v_PRUNE_MAX" -lt 1 ]]; then v_PRUNE_MAX="$DEFv_PRUNE_MAX" fi if [[ -z "$v_PRUNE_CHANCE" || $( echo -n "$v_PRUNE_CHANCE" | grep -E "^[0-9]+$" ) -lt 1 || "$v_PRUNE_CHANCE" -gt "$v_PRUNE_MAX" ]]; then v_PRUNE_CHANCE="$DEFv_PRUNE_CHANCE" fi if [[ -z "$v_NICE" || $( echo -n "$v_NICE" | grep -E "^-?[0-9]+$" ) -lt 1 || "$v_NICE" -lt -20 || "$v_NICE" -gt 19 ]]; then v_NICE="$DEFv_NICE" fi if [[ -z "$v_MAX_RUN" || $( echo -n "$v_MAX_RUN" | grep -E "^[0-9]+$" ) -lt 1 || "$v_MAX_RUN" -lt 1800 || "$v_MAX_RUN" -gt 86400 ]]; then v_MAX_RUN="$DEFv_MAX_RUN" fi if [[ -z "$v_LOG_MAX" || $( echo -n "$v_LOG_MAX" | grep -E "^[0-9]+$" ) -lt 1 || "$v_LOG_MAX" -lt 102400 ]]; then v_LOG_MAX="$DEFv_LOG_MAX" fi if [[ -z "$v_EMAIL_RETAIN" || $( echo -n "$v_EMAIL_RETAIN" | grep -E "^[0-9]+$" ) -lt 1 || "$v_EMAIL_RETAIN" -lt 0 ]]; then v_EMAIL_RETAIN="$DEFv_EMAIL_RETAIN" fi ### Variables related to the perl script if [[ -z "$v_BACKUP_MIN_DAYS" || $( echo -n "$v_BACKUP_MIN_DAYS" | grep -E "^[0-9]+$" ) -lt 1 || "$v_BACKUP_MIN_DAYS" -lt 0 ]]; then v_BACKUP_MIN_DAYS="$DEFv_BACKUP_MIN_DAYS" fi if [[ -z "$v_BACKUP_MAX_COPIES" || $( echo -n "$v_BACKUP_MAX_COPIES" | grep -E "^[0-9]+$" ) -lt 1 || "$v_BACKUP_MAX_COPIES" -lt 0 ]]; then v_BACKUP_MAX_COPIES="$DEFv_BACKUP_MAX_COPIES" fi if [[ -z "$v_BACKUP_DIRECTORY" || ! -d "$v_BACKUP_DIRECTORY" ]]; then v_BACKUP_DIRECTORY="$DEFv_BACKUP_DIRECTORY" fi if [[ -z "$v_DEFAULT_JOB_DIRECTORY" || ! -d "v_DEFAULT_JOB_DIRECTORY" ]]; then v_DEFAULT_JOB_DIRECTORY="$DEFv_DEFAULT_JOB_DIRECTORY" fi if [[ -z "$v_PARTIAL_SECONDS" ]]; then v_PARTIAL_SECONDS="$DEFv_PARTIAL_SECONDS" fi if [[ -z "$v_MAX_DEPTH" || $( echo -n "$v_MAX_DEPTH" | grep -E "^[0-9]+$" ) -lt 1 || "$v_MAX_DEPTH" -lt 0 ]]; then v_MAX_DEPTH="$DEFv_MAX_DEPTH" fi if [[ -n "$v_WORKING" && "${v_WORKING:0:1}" == "/" && -d "$v_WORKING" ]]; then d_WORKING="$v_WORKING" else unset v_WORKING fi if [[ -z "$1" && -n "$v_BACKUP_DIRECTORY" && -d "$v_BACKUP_DIRECTORY" ]]; then ### If there is a default backup directory, write the default prune rules to its '__prune_rules' file echo -n "$v_BACKUP_MAX_COPIES:$v_BACKUP_MIN_DAYS" > "$v_BACKUP_DIRECTORY"/__prune_rules fi } function fn_perl_args { ### Take the variables that relate to the perl script and make them into a string of arguments for calling the perl script a_PERL_ARGS=( "--backup-md" "$v_BACKUP_MIN_DAYS" "--backup-mc" "$v_BACKUP_MAX_COPIES" "--max-depth" "$v_MAX_DEPTH" ) if [[ "$v_PARTIAL_SECONDS" == "0" ]]; then a_PERL_ARGS[${#a_PERL_ARGS[@]}]="--no-partial-seconds" fi if [[ -n "$v_WORKING" ]]; then a_PERL_ARGS[${#a_PERL_ARGS[@]}]="--working" a_PERL_ARGS[${#a_PERL_ARGS[@]}]="$d_WORKING" fi if [[ -n "$v_BACKUP_DIRECTORY" ]]; then a_PERL_ARGS[${#a_PERL_ARGS[@]}]="--backupd" a_PERL_ARGS[${#a_PERL_ARGS[@]}]="$v_BACKUP_DIRECTORY" fi } function fn_read_conf2 { ### Read from the secondary conf fn_conf_defaults source "$f_CONF2" } function fn_check_conf { ### Compare the conf to the secondary conf. Get the variables if [[ -f "$f_CONF" ]]; then if [[ -f "$f_CONF2" ]]; then if [[ $( stat -c %Z "$f_CONF" ) -gt $( stat -c %Z "$f_CONF2" ) ]]; then ### If the main configuration is newer, read from it and write to the mini conf fn_read_conf fn_write_conf2 else ### Otherwise, just read from the mini-conf fn_read_conf2 fi else ### If the secondary configuration doesn't exist, create it fn_read_conf fn_write_conf2 fi elif [[ -f "$f_CONF2" ]]; then ### If only the mini conf exists, read from it and create a main conf fn_read_conf2 fn_make_conf else ### If neither exists write the defaults to both fn_conf_defaults fn_write_conf2 fn_make_conf fi } function fn_write_conf2 { ### Write to the secondary conf mkdir -p "$d_WORKING" echo "v_PERL=\"$v_PERL\"" > "$f_CONF2" echo "v_CPAN=\"$v_CPAN\"" >> "$f_CONF2" echo "v_PRUNE_CHANCE=\"$v_PRUNE_CHANCE\"" >> "$f_CONF2" echo "v_PRUNE_MAX=\"$v_PRUNE_MAX\"" >> "$f_CONF2" echo "v_NICE=\"$v_NICE\"" >> "$f_CONF2" echo "v_MAX_RUN=\"$v_MAX_RUN\"" >> "$f_CONF2" echo "v_LOG_MAX=\"$v_LOG_MAX\"" >> "$f_CONF2" echo "v_EMAIL_RETAIN=\"$v_EMAIL_RETAIN\"" >> "$f_CONF2" echo "v_BACKUP_MIN_DAYS=\"$v_BACKUP_MIN_DAYS\"" >> "$f_CONF2" echo "v_BACKUP_MAX_COPIES=\"$v_BACKUP_MAX_COPIES\"" >> "$f_CONF2" echo "v_BACKUP_DIRECTORY=\"$v_BACKUP_DIRECTORY\"" >> "$f_CONF2" echo "v_DEFAULT_JOB_DIRECTORY=\"$v_DEFAULT_JOB_DIRECTORY\"" >> "$f_CONF2" echo "v_PARTIAL_SECONDS=\"$v_PARTIAL_SECONDS\"" >> "$f_CONF2" echo "v_MAX_DEPTH=\"$v_MAX_DEPTH\"" >> "$f_CONF2" chmod 644 "$f_CONF2" } function fn_make_conf { ### Use the conf template to create a configuration file cp -af "$d_PROGRAM"/texts/template_conf.txt "$f_CONF" sed -i "s@####PERL_BINARY####@$v_PERL@" "$f_CONF" sed -i "s@####CPAN_BINARY####@$v_CPAN@" "$f_CONF" sed -i "s@####PRUNE_CHANCE####@$v_PRUNE_CHANCE@" "$f_CONF" sed -i "s@####PRUNE_MAX####@$v_PRUNE_MAX@" "$f_CONF" sed -i "s@####NICE####@$v_NICE@" "$f_CONF" sed -i "s@####MAX_RUN####@$v_MAX_RUN@" "$f_CONF" sed -i "s@####LOG_MAX####@$v_LOG_MAX@" "$f_CONF" sed -i "s@####EMAIL_RETAIN####@$v_EMAIL_RETAIN@" "$f_CONF" sed -i "s@####BACKUP_MIN_DAYS####@$v_BACKUP_MIN_DAYS@" "$f_CONF" sed -i "s@####BACKUP_MAX_COPIES####@$v_BACKUP_MAX_COPIES@" "$f_CONF" sed -i "s@####BACKUP_DIRECTORY####@$v_BACKUP_DIRECTORY@" "$f_CONF" sed -i "s@####DEFAULT_JOB_DIRECTORY####@$v_DEFAULT_JOB_DIRECTORY@" "$f_CONF" sed -i "s@####PARTIAL_SECONDS####@$v_PARTIAL_SECONDS@" "$f_CONF" sed -i "s@####MAX_DEPTH####@$v_MAX_DEPTH@" "$f_CONF" chmod 644 "$f_CONF" }
Copyright ©2k19 -
Hexid
|
Tex7ure