Merge branch 'master' of git.comprofix.com:mmckinnon/serverscripts
This commit is contained in:
commit
986cb7f1d4
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
office365.conf
|
office365.conf
|
||||||
|
godaddy_keys
|
||||||
|
@ -24,7 +24,7 @@ SMTP="mail.comprofix.com"
|
|||||||
SUBJECT="$(hostname -f) Database Backup Completed $BAKDATE"
|
SUBJECT="$(hostname -f) Database Backup Completed $BAKDATE"
|
||||||
BAKDATE=$(date +%Y%m%d)
|
BAKDATE=$(date +%Y%m%d)
|
||||||
DBUSER='dbbackup'
|
DBUSER='dbbackup'
|
||||||
DBPASS='EWFfP3GZsqr427Yj'
|
DBPASS='MdCg8uTSEWhmv7+D'
|
||||||
BACKUPDIR='/BACKUP/db/'
|
BACKUPDIR='/BACKUP/db/'
|
||||||
|
|
||||||
rotate_backups() {
|
rotate_backups() {
|
||||||
@ -44,8 +44,8 @@ for db in $databases; do
|
|||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
sendemail -o tls=no -s $SMTP -t $MAILTO -f "$THISSERVER <$MAILFROM>" -u "$SUBJECT" -m "$(cat /tmp/dbbackup.msg)" -q
|
#sendemail -o tls=no -s $SMTP -t $MAILTO -f "$THISSERVER <$MAILFROM>" -u "$SUBJECT" -m "$(cat /tmp/dbbackup.msg)" -q
|
||||||
|
|
||||||
#Use Below to use systems postfix or local MTA
|
#Use Below to use systems postfix or local MTA
|
||||||
#cat /tmp/dbbackup.msg | mail -s "$SUBJECT" "$MAIL"
|
cat /tmp/dbbackup.msg | mail -s "$SUBJECT" "$MAIL"
|
||||||
rm -fr /tmp/dbbackup.msg
|
rm -fr /tmp/dbbackup.msg
|
||||||
|
@ -1,8 +1,76 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# Script Name: gitlabbackup
|
||||||
|
# Author: Matt McKinnon
|
||||||
|
# Date: 04 May 2018
|
||||||
|
# Description:
|
||||||
|
# This script will backup your gitlab configuration files.
|
||||||
|
# Send an email report.
|
||||||
|
# Rotate backups for 7 days
|
||||||
|
#
|
||||||
# Add the following lines to /etc/gitlab/gitlab.rb once added
|
# Add the following lines to /etc/gitlab/gitlab.rb once added
|
||||||
# run gitlab-ctl reconfigure for changes to take effect
|
# run gitlab-ctl reconfigure for changes to take effect
|
||||||
#
|
#
|
||||||
# gitlab_rails['backup_path'] = '<BACKUP FOLDER>'
|
# gitlab_rails['backup_path'] = '<BACKUP FOLDER>'
|
||||||
# gitlab_rails['backup_keep_time'] = 604800 #7 days of backups to keep
|
# gitlab_rails['backup_keep_time'] = 604800 #7 days of backups to keep
|
||||||
|
|
||||||
gitlab-rake gitlab:backup:create
|
MAIL="support@comprofix.com"
|
||||||
|
MAILTO="support@comprofix.com"
|
||||||
|
MAILFROM="support@comprofix.com"
|
||||||
|
THISSERVER=$(hostname -f)
|
||||||
|
SMTP="mail.comprofix.com"
|
||||||
|
SUBJECT="$(hostname -f) Gitlab Backup Completed $BAKDATE"
|
||||||
|
BAKDATE=$(date +%Y%m%d)
|
||||||
|
BACKUPDIR='/BACKUP'
|
||||||
|
VHOSTS='/var/www/vhosts/'
|
||||||
|
LOGFOLDER=/var/log/
|
||||||
|
LOGFILE=$LOGFOLDER/backuplog-`date +%d-%m-%Y.log`
|
||||||
|
|
||||||
|
|
||||||
|
rotate_backups() {
|
||||||
|
find $BACKUPDIR -type f -mtime +7 -exec rm -frv {} \; >> $LOGFILE
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
startlogging() {
|
||||||
|
echo $DASHES2 >> $LOGFILE
|
||||||
|
echo "$0 started running at $(date)" >> $LOGFILE
|
||||||
|
echo $DASHES >> $LOGFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
stoplogging() {
|
||||||
|
echo $DASHES >> $LOGFILE
|
||||||
|
echo "$0 finished running at $(date)" >> $LOGFILE
|
||||||
|
echo $DASHES2 >> $LOGFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
DASHES="---------------------------------------------------------------------------------"
|
||||||
|
DASHES2="================================================================================="
|
||||||
|
|
||||||
|
if [ ! -d "$BACKUPDIR" ]; then
|
||||||
|
# Control will enter here if $DIRECTORY doesn't exist.
|
||||||
|
mkdir $BACKUPDIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
startlogging
|
||||||
|
|
||||||
|
# Rotate backup files
|
||||||
|
echo "$(date) [MESSAGE] Removing old backups" >> $LOGFILE
|
||||||
|
rotate_backups
|
||||||
|
|
||||||
|
echo "$(date) [MESSAGE] Backing up gitlab for $(hostname -f)" >> $LOGFILE
|
||||||
|
gitlab-rake gitlab:backup:create >> $LOGFILE
|
||||||
|
|
||||||
|
#Backup files to offsite location
|
||||||
|
|
||||||
|
echo "$(date) [MESSAGE] Copying backup files to offsite location" >> $LOGFILE
|
||||||
|
scp -rq -P 2222 $BACKUPDIR/* moe@home.comprofix.com:/data/backup/website
|
||||||
|
|
||||||
|
echo "$(date) [MESSAGE] Sending email of backup report" >> $LOGFILE
|
||||||
|
|
||||||
|
stoplogging
|
||||||
|
|
||||||
|
#sendemail -o tls=no -s $SMTP -t $MAILTO -f "$THISSERVER <$MAILFROM>" -u "$SUBJECT" -m "$(cat /tmp/dbbackup.msg)" -q
|
||||||
|
|
||||||
|
#Use below if using POSTFIX
|
||||||
|
cat $LOGFILE | mail -s "$SUBJECT" "$MAIL"
|
||||||
|
|
||||||
|
72
godaddy-ddns.sh
Executable file
72
godaddy-ddns.sh
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is used to check and update your GoDaddy DNS server to the IP address of your current internet connection.
|
||||||
|
# Special thanks to mfox for his ps script
|
||||||
|
# https://github.com/markafox/GoDaddy_Powershell_DDNS
|
||||||
|
#
|
||||||
|
# First go to GoDaddy developer site to create a developer account and get your key and secret
|
||||||
|
#
|
||||||
|
# https://developer.godaddy.com/getstarted
|
||||||
|
# Be aware that there are 2 types of key and secret - one for the test server and one for the production server
|
||||||
|
# Get a key and secret for the production server
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#Create a godaddy_keys file with the lines
|
||||||
|
#
|
||||||
|
# KEY <godaddy dev API KEY>
|
||||||
|
# SECRET <godaddy dev SECRET>
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#Update the first 4 variables with your information
|
||||||
|
|
||||||
|
|
||||||
|
MAILTO="support@comprofix.com"
|
||||||
|
MAILFROM="support@comprofix.com"
|
||||||
|
SMTP="mail.comprofix.com"
|
||||||
|
|
||||||
|
domain="comprofix.com" # your domain
|
||||||
|
name="home" # name of A record to update
|
||||||
|
key=$(cat /opt/scripts/godaddy_keys | grep KEY | awk '{ print $2 }') # key for godaddy developer API
|
||||||
|
secret=$(cat /opt/scripts//godaddy_keys | grep SECRET | awk '{ print $2 }') # secret for godaddy developer API
|
||||||
|
|
||||||
|
headers="Authorization: sso-key $key:$secret"
|
||||||
|
|
||||||
|
# echo $headers
|
||||||
|
|
||||||
|
result=$(curl -s -X GET -H "$headers" "https://api.godaddy.com/v1/domains/$domain/records/A/$name")
|
||||||
|
|
||||||
|
# echo $result
|
||||||
|
|
||||||
|
dnsIp=$(echo $result | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
|
||||||
|
|
||||||
|
# DEBUG: Remove hash from below line
|
||||||
|
# echo "dnsIp:" $dnsIp
|
||||||
|
|
||||||
|
# Get public ip address there are several websites that can do this.
|
||||||
|
ret=$(curl -s GET "http://ipinfo.io/json")
|
||||||
|
currentIp=$(echo $ret | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
|
||||||
|
|
||||||
|
# DEBUG: Remove hash from below line
|
||||||
|
# echo "currentIp:" $currentIp
|
||||||
|
|
||||||
|
if [ $dnsIp != $currentIp ];
|
||||||
|
then
|
||||||
|
# echo "Ips are not equal"
|
||||||
|
request='{"data":"'$currentIp'","ttl":600}'
|
||||||
|
# echo $request
|
||||||
|
nresult=$(curl -i -s -X PUT \
|
||||||
|
-H "$headers" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d $request "https://api.godaddy.com/v1/domains/$domain/records/A/$name")
|
||||||
|
# echo $nresult
|
||||||
|
|
||||||
|
sendemail -o tls=no -s $SMTP -t $MAILTO -f "$name.$domain <$MAILFROM>" -u "$name.$domain IP has been updated" -m "
|
||||||
|
|
||||||
|
$name.$domain IP has been updated
|
||||||
|
|
||||||
|
$name.$domain IP is now: $currentIp
|
||||||
|
|
||||||
|
|
||||||
|
" -q
|
||||||
|
|
||||||
|
fi
|
93
plesk-backup.sh
Executable file
93
plesk-backup.sh
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script Name:plesk-backup
|
||||||
|
# Author: Matt McKinnon
|
||||||
|
# Date: 04 May 2018
|
||||||
|
# Description:
|
||||||
|
# This script will backup your plesk hosting files.
|
||||||
|
# Send an email report of plesk hosting files that have been backed up.
|
||||||
|
# Rotate backups for 7 days
|
||||||
|
#
|
||||||
|
|
||||||
|
MAIL="support@comprofix.com"
|
||||||
|
MAILTO="support@comprofix.com"
|
||||||
|
MAILFROM="support@comprofix.com"
|
||||||
|
THISSERVER=$(hostname -f)
|
||||||
|
SMTP="mail.comprofix.com"
|
||||||
|
SUBJECT="$(hostname -f) Hosting Files Backup Completed $BAKDATE"
|
||||||
|
BAKDATE=$(date +%Y%m%d)
|
||||||
|
BACKUPDIR='/BACKUP'
|
||||||
|
VHOSTS='/var/www/vhosts/'
|
||||||
|
LOGFOLDER=/var/log/
|
||||||
|
LOGFILE=$LOGFOLDER/backuplog-`date +%d-%m-%Y.log`
|
||||||
|
|
||||||
|
|
||||||
|
rotate_backups() {
|
||||||
|
find $BACKUPDIR -type f -mtime +1 -exec rm -fr {} \;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
startlogging() {
|
||||||
|
echo $DASHES2 >> $LOGFILE
|
||||||
|
echo "$0 started running at $(date)" >> $LOGFILE
|
||||||
|
echo $DASHES >> $LOGFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
stoplogging() {
|
||||||
|
echo $DASHES >> $LOGFILE
|
||||||
|
echo "$0 finished running at $(date)" >> $LOGFILE >> $LOGFILE
|
||||||
|
echo $DASHES2 >> $LOGFILE
|
||||||
|
}
|
||||||
|
|
||||||
|
DASHES="---------------------------------------------------------------------------------"
|
||||||
|
DASHES2="================================================================================="
|
||||||
|
|
||||||
|
startlogging
|
||||||
|
rotate_backups
|
||||||
|
|
||||||
|
|
||||||
|
#Backup website files
|
||||||
|
|
||||||
|
# Get domain ID
|
||||||
|
IDS=$(MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -sN -uadmin -e 'select id from psa.domains, psa.hosting where id = dom_id order by id;')
|
||||||
|
|
||||||
|
#Use ID to get domain name and www_root folders and create archive using domain name.
|
||||||
|
for ID in $IDS; do
|
||||||
|
DOMAIN_NAME=$(MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -sN -uadmin -e 'select name from psa.domains,psa.hosting where id = '$ID' AND dom_id ='$ID' order by id;')
|
||||||
|
WWW_ROOT=$(MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -sN -uadmin -e 'select www_root from psa.domains,psa.hosting where id = '$ID' AND dom_id ='$ID' order by id;')
|
||||||
|
|
||||||
|
echo "$(date) [MESSAGE] Creating archive of $DOMAIN_NAME" >> $LOGFILE
|
||||||
|
if [ $DOMAIN_NAME = 'cloud.comprofix.com' ]; then
|
||||||
|
zip -rq $BACKUPDIR/$DOMAIN_NAME.$BAKDATE.zip $WWW_ROOT -x '*data*'
|
||||||
|
else
|
||||||
|
zip -rq $BACKUPDIR/$DOMAIN_NAME.$BAKDATE.zip $WWW_ROOT
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
#Backup databases
|
||||||
|
|
||||||
|
databases=$(MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -sN -uadmin -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
|
||||||
|
|
||||||
|
for db in $databases; do
|
||||||
|
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] && [[ "$db" != "apsc" ]] && [[ "$db" != "horde" ]] && [[ "$db" != phpmyadmin_* ]] && [[ "$db" != "psa" ]] && [[ "$db" != "roundcubemail" ]] ; then
|
||||||
|
echo "$(date) [MESSAGE] Dumping $db to sql file" >> $LOGFILE
|
||||||
|
mysqldump --force --opt --user=$DBUSER --password=$DBPASS --databases $db > $BACKUPDIR/$db.$BAKDATE.sql
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#Backup files to offsite location
|
||||||
|
|
||||||
|
echo "$(date) [MESSAGE] Copying backup files to offsite location" >> $LOGFILE
|
||||||
|
#scp -rq -P 2222 $BACKUPDIR/* moe@home.comprofix.com:/data/backup/website
|
||||||
|
rsync -avz -e "ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" /BACKUP/ moe@home.comprofix.com:/data/backup/websites/ >> $LOGFILE
|
||||||
|
echo "$(date) [MESSAGE] Sending email of backup report" >> $LOGFILE
|
||||||
|
|
||||||
|
stoplogging
|
||||||
|
|
||||||
|
#sendemail -o tls=no -s $SMTP -t $MAILTO -f "$THISSERVER <$MAILFROM>" -u "$SUBJECT" -m "$(cat /tmp/dbbackup.msg)" -q
|
||||||
|
|
||||||
|
#Use below if using POSTFIX
|
||||||
|
cat $LOGFILE | mail -s "$SUBJECT" "$MAIL"
|
||||||
|
|
||||||
|
|
||||||
|
|
34
ssl-install.sh
Executable file
34
ssl-install.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script Name: ssl-install
|
||||||
|
# Author: Matt McKinnon
|
||||||
|
# Date: 28th May 2018
|
||||||
|
# Description:
|
||||||
|
#
|
||||||
|
# Script used to copy Let's Encrypt Generated Certificates from generating server to ESXi VPS Server.
|
||||||
|
# This script requires acme.sh be used to setup your Let's Encrypt Certificates.
|
||||||
|
# - https://github.com/Neilpang/acme.sh
|
||||||
|
#
|
||||||
|
# SSH Key Login also needs to be enabled on ESXi
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
DOM_NAME="home.comprofix.com"
|
||||||
|
ESXI_SERVER="esxi.home.comprofix.com"
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -d ~/.acme.sh ]; then
|
||||||
|
echo "Folder does not exist"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
# echo "You are using acme.sh. Well done"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
scp -q ~/.acme.sh/$DOM_NAME/$DOM_NAME.cer root@$ESXI_SERVER:/etc/vmware/ssl/rui.crt
|
||||||
|
scp -q ~/.acme.sh/$DOM_NAME/$DOM_NAME.key root@$ESXI_SERVER:/etc/vmware/ssl/rui.key
|
||||||
|
ssh -qt root@$ESXI_SERVER "/sbin/services.sh restart"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user