19d817ba6SJayanth Othayoth#!/usr/bin/env bash 29d817ba6SJayanth Othayoth 39d817ba6SJayanth Othayoth# @brief Execute the command and save the output into the dreport 49d817ba6SJayanth Othayoth# packaging, if it is in the user allowed dump size limit. 59d817ba6SJayanth Othayoth# @param $1 Command to be executed. 69d817ba6SJayanth Othayoth# @param $2 Save file name. 79d817ba6SJayanth Othayoth# @param $3 Plugin description used for logging. 89d817ba6SJayanth Othayothfunction add_cmd_output() 99d817ba6SJayanth Othayoth{ 109d817ba6SJayanth Othayoth command="$1" 119d817ba6SJayanth Othayoth file_name="$2" 129d817ba6SJayanth Othayoth desc="$3" 139d817ba6SJayanth Othayoth 149d817ba6SJayanth Othayoth eval $command >> "$name_dir/$file_name" 159d817ba6SJayanth Othayoth if [ $? -ne 0 ]; then 169d817ba6SJayanth Othayoth log_error "Failed to collect $desc" 179d817ba6SJayanth Othayoth return 1 189d817ba6SJayanth Othayoth fi 199d817ba6SJayanth Othayoth 209d817ba6SJayanth Othayoth if check_size "$name_dir/$file_name"; then 219d817ba6SJayanth Othayoth log_info "Collected $desc" 229d817ba6SJayanth Othayoth else 239d817ba6SJayanth Othayoth log_warning "Skipping $desc" 249d817ba6SJayanth Othayoth fi 259d817ba6SJayanth Othayoth} 269d817ba6SJayanth Othayoth 279d817ba6SJayanth Othayoth# @brief Copy the file or directory into the dreport packaging, 289d817ba6SJayanth Othayoth# if it is in the user allowed dump size limit. 299d817ba6SJayanth Othayoth# @param $1 Copy file or directory name. 309d817ba6SJayanth Othayoth# @param $2 Plugin description used for logging. 319d817ba6SJayanth Othayothfunction add_copy_file() 329d817ba6SJayanth Othayoth{ 339d817ba6SJayanth Othayoth file_name="$1" 349d817ba6SJayanth Othayoth desc="$2" 359d817ba6SJayanth Othayoth 369d817ba6SJayanth Othayoth cp -r $file_name $name_dir 379d817ba6SJayanth Othayoth if [ $? -ne 0 ]; then 389d817ba6SJayanth Othayoth log_error "Failed to copy $desc $file_name" 399d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 409d817ba6SJayanth Othayoth fi 419d817ba6SJayanth Othayoth if check_size "$name_dir/$(basename "$file_name")"; then 429d817ba6SJayanth Othayoth log_info "Copied $desc $file_name" 439d817ba6SJayanth Othayoth return $SUCCESS 449d817ba6SJayanth Othayoth else 459d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 469d817ba6SJayanth Othayoth log_warning "Skipping copy $desc $file_name" 479d817ba6SJayanth Othayoth fi 489d817ba6SJayanth Othayoth} 49*5ba7176cSMarri Devender Rao# @brief Copy the symbolic link file to the dreport packaging, 50*5ba7176cSMarri Devender Rao# if it is in the user allowed dump size limit. 51*5ba7176cSMarri Devender Rao# @param $1 symbolic link file name 52*5ba7176cSMarri Devender Rao# @param $2 Plugin description used for logging. 53*5ba7176cSMarri Devender Raofunction add_copy_sym_link_file() 54*5ba7176cSMarri Devender Rao{ 55*5ba7176cSMarri Devender Rao file_name="$1" 56*5ba7176cSMarri Devender Rao desc="$2" 57*5ba7176cSMarri Devender Rao 58*5ba7176cSMarri Devender Rao cp $file_name $name_dir 59*5ba7176cSMarri Devender Rao if [ $? -ne 0 ]; then 60*5ba7176cSMarri Devender Rao log_error "Failed to copy $desc $file_name" 61*5ba7176cSMarri Devender Rao return $RESOURCE_UNAVAILABLE 62*5ba7176cSMarri Devender Rao fi 63*5ba7176cSMarri Devender Rao if check_size "$name_dir/$(basename "$file_name")"; then 64*5ba7176cSMarri Devender Rao log_info "Copied $desc $file_name" 65*5ba7176cSMarri Devender Rao return $SUCCESS 66*5ba7176cSMarri Devender Rao else 67*5ba7176cSMarri Devender Rao log_warning "Skipping copy $desc $file_name" 68*5ba7176cSMarri Devender Rao return $RESOURCE_UNAVAILABLE 69*5ba7176cSMarri Devender Rao fi 70*5ba7176cSMarri Devender Rao} 719d817ba6SJayanth Othayoth 729d817ba6SJayanth Othayoth# @brief Calculate file or directory compressed size based on input 739d817ba6SJayanth Othayoth# and check whether the size in the allowed size limit. 749d817ba6SJayanth Othayoth# Remove the file or directory from the name_dir 759d817ba6SJayanth Othayoth# if the check fails. 769d817ba6SJayanth Othayoth# @param $1 Source file or directory 779d817ba6SJayanth Othayoth# @return 0 on success, error code if size exceeds the limit. 789d817ba6SJayanth Othayoth# Limitation: compress and tar will have few bytes size difference 799d817ba6SJayanth Othayothfunction check_size() 809d817ba6SJayanth Othayoth{ 819d817ba6SJayanth Othayoth source=$1 829d817ba6SJayanth Othayoth 839d817ba6SJayanth Othayoth #No size check required in case dump_size is set to unlimited 849d817ba6SJayanth Othayoth if [ $dump_size = $UNLIMITED ]; then 859d817ba6SJayanth Othayoth return 0 869d817ba6SJayanth Othayoth fi 879d817ba6SJayanth Othayoth 889d817ba6SJayanth Othayoth #get the file or directory size 899d817ba6SJayanth Othayoth if [[ -d $source ]] && [[ -n $source ]]; then 909d817ba6SJayanth Othayoth tar -cf "$source.tar" -C \ 919d817ba6SJayanth Othayoth $(dirname "$source") $(basename "$source") 929d817ba6SJayanth Othayoth size=$(stat -c%s "$source.tar") 939d817ba6SJayanth Othayoth rm "$source.tar" 949d817ba6SJayanth Othayoth else 959d817ba6SJayanth Othayoth size=$(stat -c%s "$source") 969d817ba6SJayanth Othayoth fi 979d817ba6SJayanth Othayoth 989d817ba6SJayanth Othayoth if [ $((size + cur_dump_size)) -gt $dump_size ]; then 999d817ba6SJayanth Othayoth #Exceed the allowed limit, 1009d817ba6SJayanth Othayoth #tar and compress the files and check the size 1019d817ba6SJayanth Othayoth tar -Jcf "$name_dir.tar.xz" -C \ 1029d817ba6SJayanth Othayoth $(dirname "$name_dir") $(basename "$name_dir") 1039d817ba6SJayanth Othayoth size=$(stat -c%s "$name_dir.tar.xz") 1049d817ba6SJayanth Othayoth if [ $size -gt $dump_size ]; then 1059d817ba6SJayanth Othayoth #Remove the the specific data from the name_dir and continue 1069d817ba6SJayanth Othayoth rm "$source" "$name_dir.tar.xz" 1079d817ba6SJayanth Othayoth return $RESOURCE_UNAVAILABLE 1089d817ba6SJayanth Othayoth else 1099d817ba6SJayanth Othayoth rm "$name_dir.tar.xz" 1109d817ba6SJayanth Othayoth fi 1119d817ba6SJayanth Othayoth fi 1129d817ba6SJayanth Othayoth 1139d817ba6SJayanth Othayoth cur_dump_size=$((size + cur_dump_size)) 1149d817ba6SJayanth Othayoth return $SUCCESS 1159d817ba6SJayanth Othayoth} 1169d817ba6SJayanth Othayoth 1179d817ba6SJayanth Othayoth# @brief log the error message 1189d817ba6SJayanth Othayoth# @param error message 1199d817ba6SJayanth Othayothfunction log_error() 1209d817ba6SJayanth Othayoth{ 1219d817ba6SJayanth Othayoth echo $($TIME_STAMP) "ERROR: $@" >> $dreport_log 1229d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 1239d817ba6SJayanth Othayoth echo $($TIME_STAMP) "ERROR: $@" >&2 1249d817ba6SJayanth Othayoth fi 1259d817ba6SJayanth Othayoth} 1269d817ba6SJayanth Othayoth 1279d817ba6SJayanth Othayoth# @brief log warning message 1289d817ba6SJayanth Othayoth# @param warning message 1299d817ba6SJayanth Othayothfunction log_warning() 1309d817ba6SJayanth Othayoth{ 1319d817ba6SJayanth Othayoth if ((verbose == TRUE)); then 1329d817ba6SJayanth Othayoth echo $($TIME_STAMP) "WARNING: $@" >> $dreport_log 1339d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 1349d817ba6SJayanth Othayoth echo $($TIME_STAMP) "WARNING: $@" >&2 1359d817ba6SJayanth Othayoth fi 1369d817ba6SJayanth Othayoth fi 1379d817ba6SJayanth Othayoth} 1389d817ba6SJayanth Othayoth 1399d817ba6SJayanth Othayoth# @brief log info message 1409d817ba6SJayanth Othayoth# @param info message 1419d817ba6SJayanth Othayothfunction log_info() 1429d817ba6SJayanth Othayoth{ 1439d817ba6SJayanth Othayoth if ((verbose == TRUE)); then 1449d817ba6SJayanth Othayoth echo $($TIME_STAMP) "INFO: $@" >> $dreport_log 1459d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 1469d817ba6SJayanth Othayoth echo $($TIME_STAMP) "INFO: $@" >&1 1479d817ba6SJayanth Othayoth fi 1489d817ba6SJayanth Othayoth fi 1499d817ba6SJayanth Othayoth} 1509d817ba6SJayanth Othayoth 1519d817ba6SJayanth Othayoth# @brief log summary message 1529d817ba6SJayanth Othayoth# @param message 1539d817ba6SJayanth Othayothfunction log_summary() 1549d817ba6SJayanth Othayoth{ 1559d817ba6SJayanth Othayoth echo $($TIME_STAMP) "$@" >> $summary_log 1569d817ba6SJayanth Othayoth if ((quiet != TRUE)); then 1579d817ba6SJayanth Othayoth echo $($TIME_STAMP) "$@" >&1 1589d817ba6SJayanth Othayoth fi 1599d817ba6SJayanth Othayoth} 160