teste
🧩 Syntax:
#!/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