From 62640111c23a5dafa02806f80a6be1157f9c949e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 12 Mar 2026 08:40:02 +0300 Subject: [PATCH] Autocommit in repo: , generated by owner: mikro_bak, in 08:40:02 12.03.2026. --- bin/ros-diff.sh | 150 +++++++++++++++++++----------------------------- 1 file changed, 59 insertions(+), 91 deletions(-) diff --git a/bin/ros-diff.sh b/bin/ros-diff.sh index 4dc694d..8e54e20 100755 --- a/bin/ros-diff.sh +++ b/bin/ros-diff.sh @@ -120,6 +120,7 @@ FRAME_INTERVAL=0.1 start() { local step=0 + tput civis -- invisible while [ "$step" -lt "${#CMDS[@]}" ]; do ${CMDS[$step]} & pid=$! while ps -p $pid &>/dev/null; do @@ -132,8 +133,9 @@ start() { echo -ne "\\r[ ✔ ] ${STEPS[$step]}\\n" step=$((step + 1)) done + tput cnorm -- normal } -#echo '⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' + spinner() { local pid=$! @@ -273,17 +275,6 @@ SCP_STR="${scp_str[*]}" #SFTP_OPTS="-i ${DEFAULT_SSH_KEY} -o PasswordAuthentication=no -oPort=${SSHport}" } -#>/dev/null 2>&1 -############################### -# Backup listing -############################### -# Get Names Addresses and Ports in $HostsFile -#declare -rx STEPS=( -# 'download' -# 'check' -# 'backup' -#) -#IFS=$'\n' run_ssh_cmd() { local run="${1}" warning "${run}" @@ -367,62 +358,71 @@ check_directory() { fi } -#${SSH_STR} /system script environment get [find name=BackupPassword] value; -#exit 0 + # Examples: + # bin_pass="$(${SSH_STR} ':put [/system script environment get [find name=BackupPassword] value]')" + # bin_pass="$(${SSH_STR} ':put $BackupPassword')" # if BackupPassword is a global + backup_binary() { local bin_name="${1}" - local crypt="${2:-$DEFAULT_BIN_CRYPT}" - local bin_pass="${3:-$DEFAULT_BINPWD}" + local bin_pass="${2:-$DEFAULT_BINPWD}" + local bin_crypt="${DEFAULT_BIN_CRYPT}" + local bin_tmp="Binary.backup" local log_msg local crypt_str - local router_crypt="$(${SSH_STR} ':put $BackupEncrypt')" - local router_bin_pass="$(${SSH_STR} ':put $BackupPassword')" - if [ -n ${router_crypt} ]; then - warning "TRUE" - else - warning "FALSE" - fi - #${SSH_STR} :put [/system script environment get [find name=BackupPassword] value]; - # Examples: - # bin_pass="$(${SSH_STR} ':put [/system script environment get [find name=BackupPassword] value]')" - # bin_pass="$(${SSH_STR} ':put $BackupPassword')" # if BackupPassword is a global - if ${SSH_STR} /system/script environment find where name=BackupEncrypt && ${SSH_STR} /system/script environment find where name=BackupPassword; then - - #bin_pass=${SSH_STR} /system/script/environment/get ([ /system/script/environment find name='BackupPassword' ]->value); - bin_pass= - crypt_str="dont-encrypt=no password=${bin_pass}" - warning "${crypt_str}" + if [ -n "$(${SSH_STR} ':put $BackupEncrypt')" ] && [ -n "$(${SSH_STR} ':put $BackupPassword')" ] ; then + crypt_str="dont-encrypt=no password=$(${SSH_STR} ':put $BackupPassword')" else - if [ -n ${crypt} ] && [ -n {passwd} ]; then - crypt_str="dont-encrypt=no password=${passwd}" + if [ -n ${bin_crypt} ]; then + crypt_str="dont-encrypt=no password=${bin_pass}" else crypt_str="dont-encrypt=yes" fi + fi + + local BKPSTR="/system backup save name=${bin_tmp} ${crypt_str}" + local T_BKPCLN="/file remove [find name=${bin_tmp}]" + + if ${SSH_STR} ${BKPSTR}; 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 + 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}" + fi + else + log_msg="- Error create binary backup ${bin_tmp} on ${RouterName}!" + log_error "${log_msg}" fi - # if [ -n $]; then -# local BKPSTR="system backup save name=${bin_name} dont-encrypt=no password=$BKP_BINPWD" -# T_BKPCLN="file remove [find name=$TGT_BKPNAME_BIN]" + log_msg="- Remove ${bin_tmp} file on ${RouterName}." + if [ -t 1 ] && $DEBUG_OUT; then + section "CLEANUP" + fi + log_info "${log_msg}" + + if ${SSH_STR} ${T_BKPCLN}; then + log_msg="- Remove ${bin_tmp} file on ${RouterName} complete succesfully!" + log_success "${log_msg}" + else + log_msg="- Error Remove ${bin_tmp} file on ${RouterName}!" + log_error "${log_msg}" + fi } readarray -t lines < $HostsFile -#declare -r STEPS=($lines) -#declare -r MAX_STEPS=${#lines[@]} -#declare -r BAR_SIZE="##########" -#declare -r MAX_BAR_SIZE=${#BAR_SIZE} for HR in "${lines[@]}"; do -# perc=$(((HR + 1) * 100 / MAX_STEPS)) -# percBar=$((perc * MAX_BAR_SIZE / 100)) -# declare -rx CMDS=( -# "${CMD_SSH} ${SSH_OPTS} ${SSHuser}@${SSHhost} export >$current_config" -# 'sleep 10' -# 'sleep 1' -#) while IFS=$' ' read -a HR ; do -#|| [ -n "$HR" ]; do [[ -z ${HR[0]} ]] && continue DStamp=$(date '+%Y%m%d') @@ -432,12 +432,12 @@ RouterName=${HR[0]} SSHhost=${HR[1]} SSHport=${HR[2]} SSHuser=${HR[3]} -SSHpassword=${HR[4]} +backup_pass=${HR[4]} get_connections_str -backup_binary "BinaryTest.backup" +#backup_binary "BinaryTest.backup" -exit 0 +#exit 0 #warning "SSH_STR = ${SSH_STR}" #warning "SCP_STR = ${SCP_STR}" #exit 0 @@ -474,7 +474,7 @@ log_info "${log_msg}" precedent_config=${BaseDir}"Precedent-Config.rsc" current_config=${TempDir}"Config.rsc" diff_config=${TempDir}"Diff-Config.rsc" -current_backup="Binary.backup" +bin_tmp="Binary.backup" log_msg="Set variables for ${RouterName} success!" log_success "${log_msg}" @@ -507,44 +507,11 @@ if compare_config ${current_config} ${precedent_config} ${diff_config} ${RouterN log_msg="- Copy configuration to ${BackupDir}/${save_config} and ${precedent_config} success." log_success "${log_msg}" - log_msg="Create ${current_backup} file on ${RouterName}..." - log_info "${log_msg}" -# if [ $? -eq 0 ]; then - if ${SSH_STR} system backup save name=${current_backup}; then - log_msg="Create binary backup ${current_backup} on ${RouterName} success." - log_success "${log_msg}" - - log_msg="- Start download ${current_backup} file to ${BackupDir}..." - log_info "${log_msg}" - -# if ${SFTP_STR}:$current_backup; then - # ${CMD_SFTP} ${SFTP_OPTS} ${SSHuser}@${SSHhost}:$current_backup - if ${SCP_STR}:/${current_backup} ${save_backup}; then - sleep 2 - log_msg="- Binary Backup download complete!" - log_success "${log_msg}" - else - log_msg="- Error! Save binary backup on ${RoutrName} failed!" - log_error "${log_msg}" - fi - else - log_msg="Error create binary backup ${current_backup} on ${RouterName}!" - log_error "${log_msg}" - fi - - log_msg="- Remove ${current_backup} file on ${RouterName}." - if [ -t 1 ] && $DEBUG_OUT; then - section "CLEANUP" - fi + log_msg="Create ${bin_tmp} file on ${RouterName}..." log_info "${log_msg}" - if ${SSH_STR} /file remove ${current_backup}; then - log_msg="- Remove ${current_backup} file on ${RouterName} complete succesfully!" - log_success "${log_msg}" - else - log_msg="- Error Remove ${current_backup} file on ${RouterName}!" - log_error "${log_msg}" - fi + backup_binary ${bin_tmp} ${backup_pass} +# if [ $? -eq 0 ]; then cd "${BaseDir}" @@ -604,9 +571,10 @@ LogFile="${DEFAULT_LOG}" # echo -ne "\\r[${BAR_SIZE:0:percBar}] $perc %" #echo "[] $perc %" done -log_msg="All Done! Exit 0." + if [ -t 1 ] && $DEBUG_OUT; then section " DONE " fi +log_msg="All Done! Exit 0." log_success "${log_msg}" exit 0 -- 2.52.0