|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #!/bin/bash
- if [ "$#" -ne 2 ]; then
- echo
- echo -e "######################################################################"
- echo -e "######\033[41;37m Wrong paraments input, please refer below usage info !!! \033[0m######"
- echo -e "######################################################################"
- echo
- echo -e "Usage: \033[44;37m./<cmd.sh> <Remote ssh ID> <Remote ssh IP>\033[0m"
- echo -e "Example\t: \033[45;37m$0 ed 127.0.0.1\033[0m"
- echo; exit 1
- fi
-
- BAK_Project=ED8
- WHO=`whoami`
- HOSTNAME=`hostnamectl | grep "Static hostname" | awk '{print $NF}'`
- TS=`date +"%Y%m%d-%H%M%S"`
-
- # Host Local Backup info setup
- WORK_Folder=/ED/$BAK_Project/Script_$BAK_Project
- Source_BAK_Folder=/ED/$BAK_Project/Backup_file
- BAK_1=$Source_BAK_Folder/backup-mysql-$BAK_Project.gz
- BAK_2=$Source_BAK_Folder/Script_$BAK_Project.tar
- BAK_3=$Source_BAK_Folder/Source_Files_$BAK_Project.tar
-
- # Remote ssh Backup info setup
- PW_File=/home/$WHO/PW/Remote_ssh.info
- ID=$1
- IP=$2
- Remote_BAK_Folder_BAK_Disk_X=/BAK_Disk_A/$HOSTNAME/$BAK_Project/Backup_file
- Remote_BAK_Folder_BAK_Disk_Y=/BAK_Disk_B/$HOSTNAME/$BAK_Project/Backup_file
- REMOTE_X_BAK_1=$Remote_BAK_Folder_BAK_Disk_X/backup-mysql-$BAK_Project-$TS.gz
- REMOTE_X_BAK_2=$Remote_BAK_Folder_BAK_Disk_X/Script_$BAK_Project-$TS.tar
- REMOTE_X_BAK_3=$Remote_BAK_Folder_BAK_Disk_X/Source_Files_$BAK_Project-$TS.tar
- REMOTE_Y_BAK_1=$Remote_BAK_Folder_BAK_Disk_Y/backup-mysql-$BAK_Project-$TS.gz
- REMOTE_Y_BAK_2=$Remote_BAK_Folder_BAK_Disk_Y/Script_$BAK_Project-$TS.tar
- REMOTE_Y_BAK_3=$Remote_BAK_Folder_BAK_Disk_Y/Source_Files_$BAK_Project-$TS.tar
-
-
- ##### Func
- CHK_WORK_Folder (){
- echo -e "\033[32mCheck Work Folder ($WORK_Folder) \033[0m"
- ls $WORK_Folder > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. Exit.\033[0m"
- echo
- exit
- fi
- }
-
- CHK_SRC_BAK_Folder (){
- echo -e "\033[32mCheck local Backup source folder ($Source_BAK_Folder) \033[0m"
- ls $Source_BAK_Folder > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. Exit.\033[0m"
- echo
- exit
- fi
- }
-
- CHK_PW_File (){
- echo -e "\033[32mCheck PW file ($PW_File) \033[0m"
- ls $PW_File > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- SSH_ID=`cat $PW_File | grep ID | awk '{print $NF}'`
- if [[ $SSH_ID != "" ]]; then
- echo -e " - \033[34mSSH ID: Good \033[0m"
- else
- echo -e " - \033[31mSSH ID: Bad. ID is empty\033[0m"
- fi
- SSH_PW=`cat $PW_File | grep PW | awk '{print $NF}'`
- if [[ $SSH_PW != "" ]]; then
- echo -e " - \033[34mSSH PW: Good \033[0m"
- else
- echo -e " - \033[31mSSH PW: Bad. ID is empty\033[0m"
- fi
- else
- echo -e " \033[31mFail. There is no PW file ($PW_File). Please make a new one. Exit. \033[0m"
- echo -e " Example of $PW_File: "
- echo -e " ID xxxx"
- echo -e " PW zzzzzzzz"
- echo
- exit
- fi
- }
-
- CHK_REMOTE_IP_AVA (){
- echo -e "\033[32mCheck IP ($IP) availiable - ping ($IP) \033[0m"
- ping -c1 $IP > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. There is no ping in IP ($IP). Exit \033[0m"
- echo
- exit
- fi
- }
-
- CHK_BAK1 (){
- echo -e "\033[32mCheck local Backup file status ($BAK_1) \033[0m"
- ls $BAK_1 > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. Exit.\033[0m"
- echo
- exit
- fi
- }
-
- CHK_BAK2 (){
- echo -e "\033[32mCheck local Backup file status ($BAK_2) \033[0m"
- ls $BAK_2 > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. Exit.\033[0m"
- echo
- exit
- fi
- }
-
- CHK_BAK3 (){
- echo -e "\033[32mCheck local Backup file status ($BAK_3) \033[0m"
- ls $BAK_2 > /dev/null 2>&1
- if [[ $? == 0 ]]; then
- echo -e " \033[34mPass. \033[0m"
- else
- echo -e " \033[31mFail. Exit.\033[0m"
- echo
- exit
- fi
- }
-
- MKDIR_REMOTE_BAK_Folder_BAK_Disk_X (){
- echo -e "\033[32mmkdir Remote Backup folder alwyass ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_X) \033[0m"
- expect -c "
- spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_X;\"
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
- }
-
- MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y (){
- echo -e "\033[32mmkdir Remote Backup folder alwyass ($ID@$IP:$Remote_BAK_Folder_BAK_Disk_Y) \033[0m"
- expect -c "
- spawn ssh $ID@$IP \"mkdir -p $Remote_BAK_Folder_BAK_Disk_Y;\"
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
- }
-
- SCP_TO_BAK_Disk_X (){
- echo -e "\033[32mSCP the backup files to Backup_Disk_X...\033[0m"
- expect -c "
- spawn scp $BAK_1 $ID@$IP:$REMOTE_X_BAK_1
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
-
- expect -c "
- spawn scp $BAK_2 $ID@$IP:$REMOTE_X_BAK_2
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
-
- expect -c "
- spawn scp $BAK_3 $ID@$IP:$REMOTE_X_BAK_3
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
- }
-
- SCP_TO_BAK_Disk_Y (){
- echo -e "\033[32mSCP the backup files to Backup_Disk_Y...\033[0m"
- expect -c "
- spawn scp $BAK_1 $ID@$IP:$REMOTE_Y_BAK_1
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
-
- expect -c "
- spawn scp $BAK_2 $ID@$IP:$REMOTE_Y_BAK_2
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
-
- expect -c "
- spawn scp $BAK_3 $ID@$IP:$REMOTE_Y_BAK_3
- expect {
- \"*assword\" {set timeout 300; send \"$SSH_PW\r\";}
- \"yes/no\" {send \"yes\r\"; }
- }
- expect eof"
- }
-
-
- CHK_WORK_Folder
- CHK_SRC_BAK_Folder
- CHK_PW_File
- CHK_REMOTE_IP_AVA
- CHK_BAK1
- CHK_BAK2
- CHK_BAK3
- #MKDIR_REMOTE_BAK_Folder_BAK_Disk_X
- #SCP_TO_BAK_Disk_X
- #MKDIR_REMOTE_BAK_Folder_BAK_Disk_Y
- #SCP_TO_BAK_Disk_Y
-
-
- echo
- echo -e "\033[33mDone \033[0m"
- echo
|