added script
This commit is contained in:
		
							
								
								
									
										114
									
								
								check_AutoBackup.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								check_AutoBackup.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,114 @@
 | 
			
		||||
#! /bin/bash
 | 
			
		||||
 | 
			
		||||
### GENERAL SETTINGS ###
 | 
			
		||||
DEBUG="true"
 | 
			
		||||
timestampFolder="index"
 | 
			
		||||
receiverEmail="admin@coptersicht.de"
 | 
			
		||||
########################
 | 
			
		||||
 | 
			
		||||
######### REPO SETTINGS #########
 | 
			
		||||
 | 
			
		||||
#repos_name[0]=" first backup repo"
 | 
			
		||||
#repos_directory[0]="first_repo"
 | 
			
		||||
#repos_interval[0]=21600 #sec
 | 
			
		||||
#repos_interval_tolerance[0]=10 #%
 | 
			
		||||
 | 
			
		||||
#repos_name[1]="second backup repo"
 | 
			
		||||
#repos_directory[1]="second_repo"
 | 
			
		||||
#repos_interval[1]=21600 #sec
 | 
			
		||||
#repos_interval_tolerance[1]=10 #%
 | 
			
		||||
 | 
			
		||||
#repos_name[2]=" another backup repo"
 | 
			
		||||
#repos_directory[2]="another_repo"
 | 
			
		||||
#repos_interval[2]=21600 #sec
 | 
			
		||||
#repos_interval_tolerance[2]=10 #%
 | 
			
		||||
#################################
 | 
			
		||||
 | 
			
		||||
function fn_convertSecondsToHumanReadable() {
 | 
			
		||||
fn_result="$(echo $(($1/86400))d $(($(($1 - $1/86400*86400))/3600))h:$(($(($1 - $1/86400*86400))%3600/60))m:$(($(($1 - $1/86400*86400))%60))s)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo "Starting AutoBackup Watchdog"
 | 
			
		||||
echo "Local time: $(date)"
 | 
			
		||||
 | 
			
		||||
repo_count=$(("${#repos_name[@]}"))
 | 
			
		||||
echo "Repo Count: $repo_count"
 | 
			
		||||
repo_count=$(($repo_count-1))
 | 
			
		||||
 | 
			
		||||
for i in $(eval echo "{0..$repo_count}") #loop through all repos
 | 
			
		||||
do
 | 
			
		||||
    echo " "
 | 
			
		||||
    echo "Checking repo: ${repos_name[i]}"
 | 
			
		||||
    cd ${repos_directory[i]}   #jump into repo
 | 
			
		||||
    timestamp=$(date -r "$timestampFolder" +%s) #get timestap of last backup aka the "index" folder
 | 
			
		||||
    time=$(date +%s) #get local time
 | 
			
		||||
    diff=$(($time-$timestamp)) #compute diff time
 | 
			
		||||
    lastBackup=$(date -d @$timestamp) #convert unix time stamp in human readable
 | 
			
		||||
    tolerance=$(( ${repos_interval[i]}*${repos_interval_tolerance[i]}/100)) #compute tolerance based on percentage
 | 
			
		||||
    total_interval=$((${repos_interval[i]}+$tolerance)) #compute total interval based on (interval+tolerance)
 | 
			
		||||
    cd .. #leave repo
 | 
			
		||||
    echo "Last backup: $lastBackup"
 | 
			
		||||
 | 
			
		||||
    if [ "$diff" -gt "$total_interval" ]; then #test if last backup is overdue
 | 
			
		||||
        overdue=$(($diff-${repos_interval[i]})) #stores diff time since last backup in seconds
 | 
			
		||||
        fn_convertSecondsToHumanReadable $overdue # convert in human readable
 | 
			
		||||
        overdue=$fn_result #stores diff time since last backup in human readable
 | 
			
		||||
        fn_convertSecondsToHumanReadable ${repos_interval[i]}
 | 
			
		||||
        plannedIntervall=$fn_result
 | 
			
		||||
        echo -e "\e[31mOverdue: $overdue"
 | 
			
		||||
        echo -e "\e[39m "
 | 
			
		||||
        rm -f mail_content.txt
 | 
			
		||||
        cat >> mail_content.txt <<EOL
 | 
			
		||||
Subject: AutoBackup Failure "${repos_name[i]}"
 | 
			
		||||
From: autobackupwatchdog@coptersicht.de
 | 
			
		||||
Content-Type: text/html; charset="utf8
 | 
			
		||||
<head>
 | 
			
		||||
    <style>
 | 
			
		||||
        h1{
 | 
			
		||||
            text-align: center;
 | 
			
		||||
            font-size: 60; 
 | 
			
		||||
            color: red;
 | 
			
		||||
            margin: 30px;
 | 
			
		||||
            }
 | 
			
		||||
        h2{
 | 
			
		||||
            font-size: 30; 
 | 
			
		||||
            color: black;
 | 
			
		||||
            }
 | 
			
		||||
        div {
 | 
			
		||||
            margin: 30px;
 | 
			
		||||
            font-family: "Lucida Console", Courier, monospace;
 | 
			
		||||
            }
 | 
			
		||||
        .overdue{
 | 
			
		||||
            color: red;
 | 
			
		||||
            }
 | 
			
		||||
        footer{
 | 
			
		||||
            margin-top: 9em;
 | 
			
		||||
            }
 | 
			
		||||
    </style>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
    <h1>AutoBackup Failure</h1>  
 | 
			
		||||
    <h2>Overdue for the automatic backup for "${repos_name[i]}"</h2>  
 | 
			
		||||
    <div>
 | 
			
		||||
        <p>Local time: $(date)</p>
 | 
			
		||||
        <p>Failed backup repo: ${repos_name[i]}</p>
 | 
			
		||||
        <p>Planned backup interval: $plannedIntervall</p>
 | 
			
		||||
        <p>Last backup: $lastBackup</p>
 | 
			
		||||
        <p>Overdue: <a class="overdue">$overdue</a></p>
 | 
			
		||||
    </div>
 | 
			
		||||
</body>
 | 
			
		||||
<footer>
 | 
			
		||||
    <p>Version: 0.1</p>
 | 
			
		||||
    <p>Author: <a href="mailto:hendrik.schutter@coptersicht.de">hendrik.schutter@coptersicht.de</a></p>
 | 
			
		||||
</footer>
 | 
			
		||||
 | 
			
		||||
EOL
 | 
			
		||||
        if [ "$DEBUG" = "false" ];
 | 
			
		||||
        then 
 | 
			
		||||
            ssmtp -f"autobackupwatchdog@coptersicht.de" -F"AutoBackup Watchdog" $receiverEmail < mail_content.txt
 | 
			
		||||
            rm mail_content.txt
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
echo " "
 | 
			
		||||
echo "Finished"
 | 
			
		||||
		Reference in New Issue
	
	Block a user