--- /dev/null
+#!/bin/bash -e
+
+declare -x FRAME
+declare -x FRAME_INTERVAL
+
+set_spinner() {
+ case $1 in
+ spinner1)
+ FRAME=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
+ FRAME_INTERVAL=0.1
+ ;;
+ spinner2)
+ FRAME=("-" "\\" "|" "/")
+ FRAME_INTERVAL=0.25
+ ;;
+ spinner3)
+ FRAME=("◐" "◓" "◑" "◒")
+ FRAME_INTERVAL=0.5
+ ;;
+ spinner4)
+ FRAME=(":(" ":|" ":)" ":D")
+ FRAME_INTERVAL=0.5
+ ;;
+ spinner5)
+ FRAME=("◇" "◈" "◆")
+ FRAME_INTERVAL=0.5
+ ;;
+ spinner6)
+ FRAME=("⚬" "⚭" "⚮" "⚯")
+ FRAME_INTERVAL=0.25
+ ;;
+ spinner7)
+ FRAME=("░" "▒" "▓" "█" "▓" "▒")
+ FRAME_INTERVAL=0.25
+ ;;
+ spinner8)
+ FRAME=("☉" "◎" "◉" "●" "◉")
+ FRAME_INTERVAL=0.1
+ ;;
+ spinner9)
+ FRAME=("❤" "♥" "♡")
+ FRAME_INTERVAL=0.15
+ ;;
+ spinner10)
+ FRAME=("✧" "☆" "★" "✪" "◌" "✲")
+ FRAME_INTERVAL=0.1
+ ;;
+ spinner11)
+ FRAME=("●" "◕" "☯" "◔" "◕")
+ FRAME_INTERVAL=0.25
+ ;;
+ *)
+ echo "No spinner is defined for $1"
+ exit 1
+ esac
+}
+
+start() {
+ local step=0
+
+ tput civis --
+
+ while [ "$step" -lt "${#CMDS[@]}" ]; do
+ ${CMDS[$step]} & pid=$!
+
+ while ps -p $pid &>/dev/null; do
+ echo -ne "\\r[ ] ${STEPS[$step]} ..."
+
+ for k in "${!FRAME[@]}"; do
+ echo -ne "\\r[ ${FRAME[k]} ]"
+ sleep $FRAME_INTERVAL
+ done
+ done
+
+ echo -ne "\\r[ ✔ ] ${STEPS[$step]}\\n"
+ step=$((step + 1))
+ done
+
+ tput cnorm --
+}
+
+set_spinner "$1"
-#!/bin/bash -e
+#!/bin/bash
# shellcheck disable=SC1091
#set +e -u
#o pipefail
DEFAULT_CONNECT_TIMEOUT=5
DEFAULT_SSH_KEY=${HomeDir}"/.ssh/id_rsa"
# Set default diff args:
-DEFAULT_DIFF_ARGS=("-I \"RouterOS\"")
+DEFAULT_DIFF_ARGS="--ignore-matching-lines='by RouterOS'"
#
# Set debug and log options:
DEBUG_OUT=true
echo -e "\n${magenta}................[$(tput rev) $* ${reset}${magenta}]................${reset}\n"
}
-FRAME=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
-FRAME_INTERVAL=0.1
-spin() {
- local step=0
- tput civis --
- while [ "$step" -lt "${#CMDS[@]}" ]; do
- ${CMDS[$step]} & pid=$!
- while ps -p $pid &>/dev/null; do
- echo -ne "\\r[ ] ${STEPS[$step]} ..."
- for k in "${!FRAME[@]}"; do
- echo -ne "\\r[ ${FRAME[k]} ]"
- sleep $FRAME_INTERVAL
- done
- done
- echo -ne "\\r[ ✔ ] ${STEPS[$step]}\\n"
- step=$((step + 1))
- done
- tput cnorm --
-}
-
-show_spinner()
+spinstr()
{
local -r pid="${1}"
- local -r delay='0.1'
- local spinstr=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
+ local delay=0.1
+ local spinsym='\|/-'
local temp
tput civis --
while ps a | awk '{print $1}' | grep -q "${pid}"; do
- temp="${spinstr#?}"
- printf " [%c] " "${spinstr}"
- spinstr=${temp}${spinstr%"${temp}"}
+ temp="${spinsym#?}"
+ printf "[ %c ]" "${spinsym}"
+ spinsym=${temp}${spinsym%"${temp}"}
sleep "${delay}"
printf "\b\b\b\b\b\b"
done
- printf " \b\b\b\b"
- tput cnorm --
+ echo -ne "\\r[ ✔ ]\\n" #" \b\b\b\b"
+tput cnorm --
}
-sleep 10 &
-spin "$!"
-exit 0
save_log() {
local log="${DEFAULT_LOG}"
if [ -n "${LogFile}" ]; then
local diff_file="${3}"
local diff_args=${DEFAULT_DIFF_ARGS}
local log_msg
-
+ warning "diff ${diff_args} ${config_file} ${precedent_file} > ${diff_file}"
diff ${diff_args} ${config_file} ${precedent_file} >${diff_file}
+ exit 0
if [ "$?" -ne "0" ]; then
log_msg="- There is a difference! Create backup..."
if [ -t 1 ] && $DEBUG_OUT; then
local BKPSTR="/system backup save name=${bin_tmp} ${crypt_str}"
local T_BKPCLN="/file remove [find name=${bin_tmp}]"
-
- if ${SSH_STR} ${BKPSTR}; then
+ ${SSH_STR} "/system backup save name=${bin_tmp} ${crypt_str}" >/dev/null & spinstr "$!"
+ if [ $? -eq 0 ]; then
log_msg="Create binary backup ${bin_tmp} on ${RouterName} success."
log_success "${log_msg}"
log_msg="- Start download ${bin_tmp} file to ${BackupDir}..."
log_info "${log_msg}"
- return 0
- if ${SCP_STR}:/${bin_tmp} ${bin_name}; then
+
+ ${SCP_STR}:/${bin_tmp} ${bin_name} & spinstr "$!"
+ if [ $? -eq 0 ]; then
sleep 2
log_msg="- Binary Backup download complete!"
log_success "${log_msg}"
- return 0
else
log_msg="- Error! Download binary backup on ${RoutrName} failed!"
log_error "${log_msg}"
log_error "${log_msg}"
fi
- log_msg="- Remove ${bin_tmp} file on ${RouterName}."
if [ -t 1 ] && $DEBUG_OUT; then
section "CLEANUP"
fi
+ log_msg="- Remove ${bin_tmp} file on ${RouterName}."
log_info "${log_msg}"
-
- if ${SSH_STR} ${T_BKPCLN}; then
+
+ if ${SSH_STR} "/file remove [find name=${bin_tmp}]"; then
log_msg="- Remove ${bin_tmp} file on ${RouterName} complete succesfully!"
log_success "${log_msg}"
else