1*9d817ba6SJayanth Othayoth#!/usr/bin/env bash 2*9d817ba6SJayanth Othayoth 3*9d817ba6SJayanth Othayoth# @brief Execute the command and save the output into the dreport 4*9d817ba6SJayanth Othayoth# packaging, if it is in the user allowed dump size limit. 5*9d817ba6SJayanth Othayoth# @param $1 Command to be executed. 6*9d817ba6SJayanth Othayoth# @param $2 Save file name. 7*9d817ba6SJayanth Othayoth# @param $3 Plugin description used for logging. 8*9d817ba6SJayanth Othayothfunction add_cmd_output() 9*9d817ba6SJayanth Othayoth{ 10*9d817ba6SJayanth Othayoth command="$1" 11*9d817ba6SJayanth Othayoth file_name="$2" 12*9d817ba6SJayanth Othayoth desc="$3" 13*9d817ba6SJayanth Othayoth 14*9d817ba6SJayanth Othayoth eval $command >> "$name_dir/$file_name" 15*9d817ba6SJayanth Othayoth if [ $? -ne 0 ]; then 16*9d817ba6SJayanth Othayoth log_error "Failed to collect $desc" 17*9d817ba6SJayanth Othayoth return 1 18*9d817ba6SJayanth Othayoth fi 19*9d817ba6SJayanth Othayoth 20*9d817ba6SJayanth Othayoth if check_size "$name_dir/$file_name"; then 21*9d817ba6SJayanth Othayoth log_info "Collected $desc" 22*9d817ba6SJayanth Othayoth else 23*9d817ba6SJayanth Othayoth log_warning "Skipping $desc" 24*9d817ba6SJayanth Othayoth fi 25*9d817ba6SJayanth Othayoth} 26*9d817ba6SJayanth Othayoth 27*9d817ba6SJayanth Othayoth# @brief Copy the file or directory into the dreport packaging, 28*9d817ba6SJayanth Othayoth# if it is in the user allowed dump size limit. 29*9d817ba6SJayanth Othayoth# @param $1 Copy file or directory name. 30*9d817ba6SJayanth Othayoth# @param $2 Plugin description used for logging. 31*9d817ba6SJayanth Othayothfunction add_copy_file() 32*9d817ba6SJayanth Othayoth{ 33*9d817ba6SJayanth Othayoth file_name="$1" 34*9d817ba6SJayanth Othayoth desc="$2" 35*9d817ba6SJayanth Othayoth 36*9d817ba6SJayanth Othayoth cp -r $file_name $name_dir 37*9d817ba6SJayanth Othayoth if [ $? -ne 0 ]; then 38*9d817ba6SJayanth Othayoth log_error "Failed to copy $desc $file_name" 39*9d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 40*9d817ba6SJayanth Othayoth fi 41*9d817ba6SJayanth Othayoth if check_size "$name_dir/$(basename "$file_name")"; then 42*9d817ba6SJayanth Othayoth log_info "Copied $desc $file_name" 43*9d817ba6SJayanth Othayoth return $SUCCESS 44*9d817ba6SJayanth Othayoth else 45*9d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 46*9d817ba6SJayanth Othayoth log_warning "Skipping copy $desc $file_name" 47*9d817ba6SJayanth Othayoth fi 48*9d817ba6SJayanth Othayoth} 49*9d817ba6SJayanth Othayoth 50*9d817ba6SJayanth Othayoth# @brief Calculate file or directory compressed size based on input 51*9d817ba6SJayanth Othayoth# and check whether the size in the allowed size limit. 52*9d817ba6SJayanth Othayoth# Remove the file or directory from the name_dir 53*9d817ba6SJayanth Othayoth# if the check fails. 54*9d817ba6SJayanth Othayoth# @param $1 Source file or directory 55*9d817ba6SJayanth Othayoth# @return 0 on success, error code if size exceeds the limit. 56*9d817ba6SJayanth Othayoth# Limitation: compress and tar will have few bytes size difference 57*9d817ba6SJayanth Othayothfunction check_size() 58*9d817ba6SJayanth Othayoth{ 59*9d817ba6SJayanth Othayoth source=$1 60*9d817ba6SJayanth Othayoth 61*9d817ba6SJayanth Othayoth #No size check required incase dump_size is set to unlimited 62*9d817ba6SJayanth Othayoth if [ $dump_size = $UNLIMITED ]; then 63*9d817ba6SJayanth Othayoth return 0 64*9d817ba6SJayanth Othayoth fi 65*9d817ba6SJayanth Othayoth 66*9d817ba6SJayanth Othayoth #get the file or directory size 67*9d817ba6SJayanth Othayoth if [[ -d $source ]] && [[ -n $source ]]; then 68*9d817ba6SJayanth Othayoth tar -cf "$source.tar" -C \ 69*9d817ba6SJayanth Othayoth $(dirname "$source") $(basename "$source") 70*9d817ba6SJayanth Othayoth size=$(stat -c%s "$source.tar") 71*9d817ba6SJayanth Othayoth rm "$source.tar" 72*9d817ba6SJayanth Othayoth else 73*9d817ba6SJayanth Othayoth size=$(stat -c%s "$source") 74*9d817ba6SJayanth Othayoth fi 75*9d817ba6SJayanth Othayoth 76*9d817ba6SJayanth Othayoth if [ $((size + cur_dump_size)) -gt $dump_size ]; then 77*9d817ba6SJayanth Othayoth #Exceed the allowed limit, 78*9d817ba6SJayanth Othayoth #tar and compress the files and check the size 79*9d817ba6SJayanth Othayoth tar -Jcf "$name_dir.tar.xz" -C \ 80*9d817ba6SJayanth Othayoth $(dirname "$name_dir") $(basename "$name_dir") 81*9d817ba6SJayanth Othayoth size=$(stat -c%s "$name_dir.tar.xz") 82*9d817ba6SJayanth Othayoth if [ $size -gt $dump_size ]; then 83*9d817ba6SJayanth Othayoth #Remove the the specific data from the name_dir and continue 84*9d817ba6SJayanth Othayoth rm "$source" "$name_dir.tar.xz" 85*9d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 86*9d817ba6SJayanth Othayoth else 87*9d817ba6SJayanth Othayoth rm "$name_dir.tar.xz" 88*9d817ba6SJayanth Othayoth fi 89*9d817ba6SJayanth Othayoth fi 90*9d817ba6SJayanth Othayoth 91*9d817ba6SJayanth Othayoth cur_dump_size=$((size + cur_dump_size)) 92*9d817ba6SJayanth Othayoth return $SUCCESS 93*9d817ba6SJayanth Othayoth} 94*9d817ba6SJayanth Othayoth 95*9d817ba6SJayanth Othayoth# @brief log the error message 96*9d817ba6SJayanth Othayoth# @param error message 97*9d817ba6SJayanth Othayothfunction log_error() 98*9d817ba6SJayanth Othayoth{ 99*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "ERROR: $@" >> $dreport_log 100*9d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 101*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "ERROR: $@" >&2 102*9d817ba6SJayanth Othayoth fi 103*9d817ba6SJayanth Othayoth} 104*9d817ba6SJayanth Othayoth 105*9d817ba6SJayanth Othayoth# @brief log warning message 106*9d817ba6SJayanth Othayoth# @param warning message 107*9d817ba6SJayanth Othayothfunction log_warning() 108*9d817ba6SJayanth Othayoth{ 109*9d817ba6SJayanth Othayoth if ((verbose == TRUE)); then 110*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "WARNING: $@" >> $dreport_log 111*9d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 112*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "WARNING: $@" >&2 113*9d817ba6SJayanth Othayoth fi 114*9d817ba6SJayanth Othayoth fi 115*9d817ba6SJayanth Othayoth} 116*9d817ba6SJayanth Othayoth 117*9d817ba6SJayanth Othayoth# @brief log info message 118*9d817ba6SJayanth Othayoth# @param info message 119*9d817ba6SJayanth Othayothfunction log_info() 120*9d817ba6SJayanth Othayoth{ 121*9d817ba6SJayanth Othayoth if ((verbose == TRUE)); then 122*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "INFO: $@" >> $dreport_log 123*9d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 124*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "INFO: $@" >&1 125*9d817ba6SJayanth Othayoth fi 126*9d817ba6SJayanth Othayoth fi 127*9d817ba6SJayanth Othayoth} 128*9d817ba6SJayanth Othayoth 129*9d817ba6SJayanth Othayoth# @brief log summary message 130*9d817ba6SJayanth Othayoth# @param message 131*9d817ba6SJayanth Othayothfunction log_summary() 132*9d817ba6SJayanth Othayoth{ 133*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "$@" >> $summary_log 134*9d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 135*9d817ba6SJayanth Othayoth echo $($TIME_STAMP) "$@" >&1 136*9d817ba6SJayanth Othayoth fi 137*9d817ba6SJayanth Othayoth} 138