#!/bin/bash robos=("1008" "1012" "1041" "1042" "1043" "1044" "1045" "1048" "1052" "1056" "1057" "1058" "1060" "1061" "1062" "1063" "1067" "1068" "1069" "1070" "1071" "1091" "1097" "1098") senhas=("U2FsdGVkX1+WhFyxfqx5au1S7OWA7oUNz9nMyhiFjpA=" "U2FsdGVkX1+PvtROFYan5JMuAlwUCG+r2r3NP9zUe84=" "U2FsdGVkX1/FwnuifOzKEO5wbLrVfBVERafacIjJBZc=" "U2FsdGVkX19CKVOdj7KQ/DY1+0w7T1zTyJHl8mSRyWA=" "U2FsdGVkX18yEKtKXsFWX0J+h5CdF+boXFOp1L25bhY=" "U2FsdGVkX1+E9k/fh4aK7DqVNxox00NrXbfIckWZqBk=" "U2FsdGVkX19qgpNfwETZrDKz/2gLk98U0hs6dMja+t8=" "U2FsdGVkX19kJQFEoKYrVyvRZ4T3u4M0SfVVy4G/JkA=" "U2FsdGVkX1+m6+nWAxP5MGKztMk1KwtzYMrPPNOWD9A=" "U2FsdGVkX1+B5uQ2MtduslphkWJpalZzAb9fueWzFCk=" "U2FsdGVkX1+RHL89JMyZrUIgUTkJ9G5m71/1RALY814=" "U2FsdGVkX19vRIwIW+oDJeHk3uUisjNkisaL0UjQKZo=" "U2FsdGVkX19GLM39Gp5xGYJpQOcVdOroNKHltSlDjfk=" "U2FsdGVkX1+rtrvkhpgRwz5GsuwM5rSaHtVW9iVNO8A=" "U2FsdGVkX1+UUVYszrP2QUzJrg3NPgRsMYRf857Msc8=" "U2FsdGVkX1/TjQQCStHDVERPnn8ZChpxPjJQ5FiZonI=" "U2FsdGVkX19twOTDsWKyRZNdomhB1TrmqwLO3HWstVg=" "U2FsdGVkX19LWjMxC1MNQjZMXTNwYNdnuuTEJYnl1qk=" "U2FsdGVkX1+rfXVOz7wVBtpHx5DTjnVh4S39vXzGvPk=" "U2FsdGVkX1+1fn6tnPoSsNnWui8Thpxba2wfF2i+ZZY=" "U2FsdGVkX1+2i3DyeRumk8kP/IrHcN0IGup3ubu1sK4=" "U2FsdGVkX19ycgua8+0jdI/uDwl2w3IM/zob6QHvJzM=" "U2FsdGVkX1+Gtu/WeRwprhoNuw+fWZ7xuCbRSt32tVs=" "U2FsdGVkX180FJbt78xCTpawdW7KemPFPGmKi9KgbGA=") ciano=$(tput setaf 6) red=$(tput setaf 1) cinza=$(tput setaf 7) green=$(tput setaf 2) reset=$(tput sgr0) path_imagens="" opcao=-1 secret="" exibir_menu() { echo "${green}Selecione um robô para baixar imagens: $reset" count=0 for ((i=0; i<${#robos[@]}; i++)); do count=$((count + 1)) printf "${cinza}%2d.${reset} %s\t" $((i+1)) "${robos[$i]}" if [ $((count % 4)) -eq 0 ]; then echo fi done printf "${cinza}%2d.${reset} Sair\n" } checar_data() { local data=$1 if [ ${#data} -ne 6 ]; then return 1 fi local dia=${data:0:2} local mes=${data:2:2} local ano=${data:4:2} if ! [[ $dia =~ ^[0-9]+$ ]] || ! [[ $mes =~ ^[0-9]+$ ]] || ! [[ $ano =~ ^[0-9]+$ ]]; then return 1 fi if [ $dia -lt 1 ] || [ $dia -gt 31 ] || [ $mes -lt 1 ] || [ $mes -gt 12 ] || [ $ano -lt 1 ]; then return 1 fi return 0 } baixar_imagens_ssh() { local robo_index=$((opcao-1)) local robo=${robos[$robo_index]} local senha=${senhas[$robo_index]} local total_esquerdo=0 local total_direito=0 local data_valida=false local right_port=51${robo:2:2} local left_port=52${robo:2:2} while [ "$data_valida" = false ]; do read -p "${green}Digite uma data (formato diamesano) ex: (310523): ${reset}" data if checar_data $data; then data_valida=true else echo -e "${red}[x] Data inválida. Tente novamente.${reset}" fi done echo -e "$ciano[#] Conectando ao robo: $robo$reset" sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -qp $left_port solarbot@20.206.85.15 exit connection_left=$(echo $?) sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -qp $right_port solarbot@20.206.85.15 exit connection_right=$(echo $?) if [ ! "$connection_left" -eq 0 ]; then senha="U2FsdGVkX1+KdHJwHUSBM37RY3/2qxbRc5kKt2FzZrA=" fi if [ ! "$connection_right" -eq 0 ]; then senha="U2FsdGVkX1+KdHJwHUSBM37RY3/2qxbRc5kKt2FzZrA=" fi total_esquerdo="$(sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $left_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "ls /home/solarbot/seeker_imgs/$data* 2>/dev/null | wc -l 2>/dev/null")" total_direito="$(sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $right_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "ls /home/solarbot/seeker_imgs/$data* 2>/dev/null | wc -l 2>/dev/null")" local data_download=$(date +"%d%m%Y%H%M") local download_path=$path_imagens/$robo/$data_download/ if [ -z "$total_esquerdo" ]; then echo -e "${red}[x] Não foi possivel conectar no boom esquerdo (Fora do ar/Senha incorreta).${reset}" else if [ ! "$total_esquerdo" -eq 0 ]; then echo -e "${cinza}[#] Boom esquerdo possui $total_esquerdo imagens.${reset}" sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $left_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "cd /home/solarbot/seeker_imgs/ && zip -rq /tmp/$robo-$data_download-boomleft.zip $data* 2>/dev/null" echo -e "${cinza}[#] Baixando imagens boom esquerdo...${reset}" mkdir -p $download_path sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" scp -P $left_port -o StrictHostKeyChecking=no solarbot@20.206.85.15:/tmp/$robo-$data_download-boomleft.zip $download_path/boom-left-$data.zip sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $left_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "rm /tmp/$robo-$data_download-boomleft.zip" fi fi if [ -z "$total_direito" ]; then echo -e "${red}[x] Não foi possivel conectar no boom direito (Fora do ar/Senha incorreta).${reset}" else if [ ! "$total_direito" -eq 0 ]; then echo -e "${cinza}[#] Boom direito possui $total_esquerdo imagens.${reset}" sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $right_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "cd /home/solarbot/seeker_imgs/ && zip -rq /tmp/$robo-$data_download-boomright.zip $data* 2>/dev/null" echo -e "${cinza}[#] Baixando imagens boom direito...${reset}" mkdir -p $download_path sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" scp -P $right_port -o StrictHostKeyChecking=no solarbot@20.206.85.15:/tmp/$robo-$data_download-boomright.zip $download_path/boom-right-$data.zip sshpass -p "$(echo $senha | openssl enc -d -aes-256-cbc -a -salt -pass pass:"$secret" 2>/dev/null)" ssh -p $right_port -o StrictHostKeyChecking=no solarbot@20.206.85.15 2> /dev/null "rm /tmp/$robo-$data_download-boomright.zip" fi fi local total_images=$((total_esquerdo + total_direito)) if [ "$total_images" -eq 0 ]; then echo -e "${ciano}[#] O robô $robo não possui nenhuma imagem para esta data...${reset}" fi echo -e "${ciano}[#] Foram baixadas total de $((total_esquerdo + total_direito)) imagens do robô $robo....${reset}" } mostrar_logo(){ echo -n ${cinza} cat << 'EOF' ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⢀⣀⠀⠀⢀⣤⣶⣶⣶⣶⣦⣄⡀⠀⢀⣰⡶⠛⠿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠼⣻⠟⠙⣹⣦⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣼⡯⣉⠑⠢⡈⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠋⢁⠔⠋⣨⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⠓⡄⠈⠆⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⡔⠁⢠⣾⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⡉⠐⠲⠀⠘⢼⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⢠⡾⢣⠎⠀⡠⠟⠉⣠⣵⡟⡇⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢢⠀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⢠⠋⠀⠀⠀⠈⠀⣠⣾⣿⠏⠀⠀⠷⣦⣤⢜⡟⡏⢿⣿⣴⡯⢻⣿⣿⢀⣣⠀⠀⠀⠈⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⢠⣾⣿⣿⡏⠀⠰⠁⣶⣿⣶⡙⡏⢻⡰⡿⠿⠏⠂⣿⡿⠀⠙⡄⠀⠀⠀⠈⠳⡀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⡠⠋⠀⠀⠀⠀⠀⡞⢿⣿⣿⠁⠀⠀⠀⠀⢉⡡⢬⠀⠀⢱⣄⠀⠀⠀⣿⠇⠀⠀⠱⣄⠀⠀⠀⠀⠈⢦⠀⠀⠀⠀⠀⠀ ⢀⣀⡤⠊⠀⠀⠀⠀⠀⣠⠞⠀⠘⡍⣩⡇⠀⠀⠀⠀⠀⢠⣞⣀⢀⣘⣦⠀⠀⢀⣿⠀⠀⠀⠀⠀⠑⡄⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀ ⠎⢻⠆⠀⠀⠀⠀⡰⠋⠀⠀⠀⠀⢱⡈⢀⠀⠀⠀⠀⠀⣠⠄⣈⣉⠀⠐⡄⠀⢸⠟⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀⠀⣀⣀⢡⡀⠀⠀ ⠀⢸⡀⠀⠀⠀⡴⠁⠀⠀⠀⠀⠀⠈⠿⣿⠀⠀⠀⠀⠀⠁⢾⡓⠒⣺⠂⠀⢀⠞⢦⠀⠀⠀⠀⠀⠀⠀⠸⡈⠉⠁⠀⠀⠀ ⠰ ⠀⠀⠉⠁⠒⡞⠀⠀⠀⠀⢀⣀⣀⡠⢶⠋⢦⡀⠀⠀⠀⠀⠀⡀⠭⣀⠀⢀⢾⠀⠀⠑⣄⠔⠋⠒⠤⠤⠤⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⡟⠒⠊⠉⠙⠣⠀⠀⠀⢸⠀⠀⠉⠢⣤⢀⣀⠀⠀⠀⢀⡰⠃⣸⡀⠀⢰⠃⠀⠀⠀⡄⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡀⠀⠀⠘⡀⠀⠈⠉⣉⣁⡠⢼⠃⠑⠢⢇⡀⠀⠀⠀⢰⠀⠀⠀⠷⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠠⠁ ___⠀⠀⠀⠀⠀⠈⠑⠠⠤⣏⠉⠉⠉⠁⠀ ⡘⠀⠀⢀⠇⠀⠀ ⠀⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ / __|_ __ _ _ __ _ _⠃__⠘___ _⠘_⠀⠀⠀⠀ \__ | '_ | '_/ _` | || / -_| '_| |___| .__|_| \__,_|\_, \___|_| ___ |_| _ |__/ _ | \ _____ __ ___ _ | |___ __ _ __| |___ _ _ | |) / _ \ V V | ' \| / _ / _` / _` / -_| '_| |___/\___/\_/\_/|_||_|_\___\__,_\__,_\___|_| EOF echo -n ${reset} } input_secret(){ clear mostrar_logo prompt="${green}Digite a Secret Key (Solicite ao R&d): ${reset}" while IFS= read -p "$prompt" -r -s -n 1 char; do if [[ $char == $'\0' ]]; then break fi if [[ $char == $'\177' ]]; then if [[ -n $secret ]]; then secret=${secret%?} prompt=$'\b \b' else prompt="" fi else secret+=$char prompt="${green}*${reset}" fi done } check_path(){ clear mostrar_logo read -p "${green}Digite o path para salvar as imagens: ${reset}" path_imagens if [ ! -d "$path_imagens" ]; then echo $path_imagens mkdir -p "$path_imagens" fi } input_secret check_path while [ $opcao -ne 0 ]; do clear mostrar_logo exibir_menu read -p "${green}Digite a opção desejada: $reset" opcao case $opcao in 0) echo "${green}[#] Saindo...${reset}" ;; [1-9]|[1-9][0-9]|[1-${#robos[@]}]) baixar_imagens_ssh ;; "") echo "${red}[x] Nenhuma opção digitada. Tente novamente.${reset}" opcao=-1 ;; *) echo "${red}[x] Opção inválida. Tente novamente.${reset}" ;; esac read -p "Pressione ENTER para continuar..." clear done