dunee 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. #!/usr/bin/bash
  2. #
  3. #-------HEADER---------------------------------------------------------------------|
  4. #AUTOR
  5. # Jefferson Rocha <lrcjefferson@gmail.com>
  6. #
  7. #
  8. #DATA DE CRIAÇÃO
  9. # 31/01/2018
  10. #
  11. #
  12. #LICENÇA
  13. # MIT
  14. # https://raw.githubusercontent.com/dunee/backup/master/LICENSE
  15. #
  16. #
  17. #DESCRIÇÃO
  18. # dunee é um simples programa em Shell com interface dialog para backup em sistema
  19. # GNU/Linux.
  20. # São necessárias algumas dependências para ser executado com exito, sendo elas:
  21. # (rsync, dialog, tar, xf, bash)
  22. #
  23. #
  24. #ARQUIVOS DE AJUDA.
  25. # -Todos arquivos estão localizados em /etc/dunee
  26. # menu-principal.txt
  27. # -Executavel se encontra em /usr/sbin
  28. #
  29. #
  30. #***NOTAS DE DESENVOLVIMENTO***
  31. # -Usar somente um comando por linha
  32. # -Usar somente 1 parâmetro no dialog por linha, não se importando com o tamanho
  33. # de linhas.
  34. # -Usar chamadas (funções, váriaveis, arrays) em inglês.
  35. # -Comentários devem ser em português do brasil.
  36. # -Se a linha é "complexa" deixe um comentário.
  37. # -Para condicionais '[ ]' ou 'test' simples, estamos em bash, use a nova sintaxe
  38. # '[[ ]]'
  39. #
  40. #
  41. #CHANGELOG
  42. # V0.1 (Jefferson Rocha)
  43. # Iniciado projeto em 31/01/2018
  44. #
  45. # V0.2 (Jefferson Rocha)
  46. # -Agora tem suporte a md5 no backup básico
  47. #
  48. # -Adicionado condicional no bloco (dir_if_backup e dir_of_backup) testa se os
  49. # diretorios tem permissão de Escrita.
  50. #
  51. # -Reformulado todo código, status de sáida estavam com problemas.
  52. #
  53. # -Adicionado opção para envio remoto com scp /Falta o recebimento.
  54. #
  55. # -Agora o programa tem logs em '/tmp', agora mostra os erros.
  56. #
  57. # -O bloco (básico) foi dividido em 3 funções para não repitir código no decorrer
  58. # do programa, os blocos são:
  59. # 'if_dir, of_dir e create_backup_basic' a chamada basic_mod ainda continua, para
  60. # fazer as chamadas das outras funções.
  61. #
  62. # -Adicionado no menu principal uma opção para verificar conectividade com
  63. # a internet.
  64. #
  65. #
  66. #TODO
  67. #-Falta adicionar o programa em inglês, a chave já tem rs.
  68. #-Falta adicionar a parte de Receber na opção Remoto
  69. #-------END-HEADER-----------------------------------------------------------------|
  70. #########################################################|
  71. #################### VÁRIAVEIS ##########################|
  72. #########################################################|
  73. name="dunee"
  74. version="0.2"
  75. back="$name Versão $version" # Titulo de fundo, para ser usado em --backtitle
  76. directory_root="/etc/dunee"
  77. log="/tmp/log.bkp"
  78. log_tags="/tmp/log_tags.bkp"
  79. #----CHAVES--------(bibibibi)
  80. lang="0" # 0 pt_BR / 1 en_US
  81. #----COMANDOS---------------
  82. date_bkp=$(date +%d-%m-%Y) # Para criar a extensão nome-DATA.bkp
  83. # Botões do dialog referente ao status de sáida.
  84. cancel_button="1"
  85. help_button="2"
  86. esc_button="255"
  87. #########################################################|
  88. #########################################################|
  89. ################# TESTES de inicialização ###############|
  90. #########################################################|
  91. # Não é portugues do brasil? então ative a chave en_US
  92. [[ "$LANG" = "en_US.UTF-8" ]] && lang="1"
  93. # Dialog existe?
  94. if [[ ! -e $(type -P dialog) ]]; then
  95. if [[ "$lang" -eq "1" ]]; then
  96. echo "DIALOG Not found..."
  97. else
  98. echo "Dialog não foi encontrado, instale e retorne."
  99. fi
  100. fi
  101. # scp existe?
  102. if [[ ! -e $(type -P scp) ]]; then
  103. if [[ "$lang" -eq "1" ]]; then
  104. echo "scp Not found..."
  105. ecrilse
  106. echo "Não encontrei o scp..."
  107. fi
  108. fi
  109. #########################################################|
  110. #########################################################|
  111. #################### FUNÇÕES ############################|
  112. #########################################################|
  113. # Tela de ajuda principial do programa.
  114. menu_welcome(){
  115. echo -e "\tpara ajuda digita !ajuda"
  116. }
  117. # Status global dos botões (cancel, help, esc)
  118. status(){
  119. case $? in
  120. "$cancel_button")
  121. dialog --title "$name" \
  122. --backtitle "$back" \
  123. --yes-label "Sim" \
  124. --no-label "Não" \
  125. --yesno "Deseja Sair?" 0 0
  126. [[ "$?" -eq "0" ]] && exit 0 ;;
  127. "$esc_button") echo "ESC, pressionado. :(" && exit 1 ;;
  128. esac
  129. }
  130. # TAR Opções
  131. execute_tar(){ tar -cvJpf "$@"; }
  132. # SCP Opções
  133. execute_scp(){
  134. scp -C ${choose_the_tag} -P "$port" "$dir_if_backup" "${user}@${ip}:${dir_send}"
  135. }
  136. if_dir(){
  137. while :; do
  138. name_backup=$(
  139. dialog --stdout \
  140. --title "IMPORTANTE!" \
  141. --backtitle "$back" \
  142. --cancel-label "Voltar" \
  143. --inputbox \
  144. "Digite o Nome final para o Backup.\nExemplo Slackjeff-dir" \
  145. 10 50 )
  146. [[ "$?" -eq "1" ]] && main # Apertou <VOLTAR> volta para o menu principal
  147. # Verificando se váriavel nome do backup não está nula, se estiver loop nele.
  148. if [[ -z "$name_backup" ]]; then
  149. dialog --title "OPS!" \
  150. --backtitle "$back" \
  151. --sleep 2 \
  152. --infobox \
  153. "\nVocê deixou nulo o nome do seu Backup.\n" \
  154. 6 60
  155. else
  156. dialog --title "NOME DO BACKUP FINAL" \
  157. --backtitle "$back" \
  158. --sleep 2 \
  159. --infobox "\n${name_backup}-${date_bkp}.bkp" \
  160. 6 40
  161. break
  162. fi
  163. done
  164. # Vamos selecionar o diretorio/arquivo de ORIGEM
  165. while :; do
  166. dir_if_backup=$(
  167. dialog --stdout \
  168. --title "SELECIONE O DIRETÓRIO/ARQUIVO DE 'ORIGEM'" \
  169. --backtitle "$back" \
  170. --cancel-label "Voltar" \
  171. --dselect "/" \
  172. 8 80 )
  173. if [[ "$?" -ne "0" ]]; then
  174. # Apertou não? então voltamos ao menu principal!
  175. dialog --title "RETORNANDO" \
  176. --backtitle "$back" \
  177. --sleep 2 \
  178. --infobox "\nOK, retornando ao menu principal..." \
  179. 5 40
  180. main # Retornando ao menu principal
  181. fi
  182. if ! dialog --title "CONFIRMA?" \
  183. --backtitle "$back" \
  184. --yes-label "Sim" \
  185. --no-label "Não" \
  186. --yesno "Confirma o diretório de 'ORIGEM': $dir_if_backup" \
  187. 6 80
  188. then
  189. dialog --title "VOLTANDO" \
  190. --backtitle "$back" \
  191. --msgbox "Vamos retornar então." \
  192. 5 40
  193. else
  194. # Usuário tem permissão de Leitura ou escrita no diretorio?
  195. # Se tiver para o loop e continua, se não volta.
  196. if [[ ! -w "$dir_if_backup" ]] || [[ ! -r "$dir_if_backup" ]]; then
  197. text="\nSem permissões neste diretório...\n
  198. Escolha outro diretório, ou dê as devidas permissões para este diretório."
  199. dialog --title "SEM PERMISSÃO!" \
  200. --backtitle "$back" \
  201. --msgbox "$text" \
  202. 8 80
  203. else
  204. break # Digitou sim o loop para e continua :)
  205. fi
  206. fi
  207. done
  208. }
  209. of_dir(){
  210. while :; do
  211. # Agora vamos selecionar o diretorio/arquivo de DESTINO.
  212. dir_of_backup=$(
  213. dialog --stdout \
  214. --title "SELECIONE O DIRETÓRIO/ARQUIVO DE 'DESTINO'" \
  215. --backtitle "$back" \
  216. --cancel-label "Voltar" \
  217. --dselect "/" \
  218. 8 80 )
  219. # Conferindo se usuário confirma.
  220. if [[ "$?" -ne "0" ]]; then
  221. dialog --title "RETORNANDO" \
  222. --backtitle "$back" \
  223. --sleep 2 \
  224. --infobox "\nOK, retornando ao menu principal..." \
  225. 5 40
  226. main # Retornando ao menu principal
  227. fi
  228. if ! dialog --title "CONFIRMA?" \
  229. --backtitle "$back" \
  230. --yes-label "Sim" \
  231. --no-label "Não" \
  232. --yesno "Confirma o diretório de 'DESTINO': $dir_of_backup" \
  233. 6 80
  234. then
  235. # Apertou não? então voltamos ao menu principal!
  236. dialog --title "VOLTANDO" \
  237. --backtitle "$back" \
  238. --msgbox "Vamos retornar então." \
  239. 5 40
  240. else
  241. # Usuário tem permissão de escrita no diretorio?
  242. # Se tiver para o loop e continua, se não volta.
  243. if [[ ! -w "$dir_of_backup" ]]; then
  244. text="\nSem permissão de ESCRITA neste diretório...\n
  245. Escolha outro diretório, ou dê permissão de ESCRITA 'w' para este diretório."
  246. dialog --title "SEM PERMISSÃO!" \
  247. --backtitle "$back" \
  248. --msgbox "$text" \
  249. 8 80
  250. else
  251. break # Digitou sim o loop para e continua :)
  252. fi
  253. fi
  254. done
  255. # Se não tem '/' barra no final adiciona, se ter não faz nada.
  256. dir_of_backup_bar="${dir_of_backup%/}/"
  257. }
  258. create_backup_basic(){
  259. # Gerando Backup, chamando a função (execute_tar)
  260. execute_tar "${dir_of_backup_bar}${name_backup}-${date_bkp}.bkp" "$dir_if_backup" 2> /dev/null | \
  261. dialog --title "CRIANDO BACKUP..." \
  262. --backtitle "$back" \
  263. --progressbox "Aguarde! criando backup em: $dir_of_backup_bar" \
  264. 22 100
  265. # TODO Se apertar ESC retorna 1, precisa arrumar para retornar
  266. # status 255 para ter uma tela de falha com status 1.
  267. # Por enqaunto está generico com o case.
  268. case $? in
  269. 1|130|255) status ;; # Monitoração, caso o usuário decida cancelar
  270. 0) # Usuário quer gerar MD5?
  271. if dialog --title "GERAR O MD5?" \
  272. --backtitle "$back" \
  273. --yes-label "Sim" \
  274. --no-label "Não" \
  275. --yesno "\nVocê deseja gerar o arquivo md5?" \
  276. 8 40
  277. then
  278. # Gerando MD5
  279. dialog --title "GERANDO MD5!" \
  280. --backtitle "$back" \
  281. --sleep 2 \
  282. --infobox "\nAguarde, vamos gerar o md5 e finalizamos." \
  283. 8 40
  284. if md5sum "${dir_of_backup_bar}${name_backup}-${date_bkp}.bkp" > "${dir_of_backup_bar}${name_backup}-${date_bkp}.md5"
  285. then
  286. # Se deu tudo certo, mostramos a mensagem de ok e continuamos.
  287. dialog --title "CONCLÚIDO" \
  288. --backtitle "$back" \
  289. --msgbox \
  290. "\nConclúimos, o md5 foi gerado em: '${dir_of_backup_bar}'" \
  291. 8 40
  292. else
  293. dialog --title "OPS" \
  294. --backtitle "$back" \
  295. --msgbox "Aconteceu algum erro ;(" \
  296. 8 40
  297. main # Chamando função main.
  298. fi
  299. else
  300. dialog --title "CONTINUANDO" \
  301. --backtitle "$back" \
  302. --sleep 2 \
  303. --infobox "\nOk, vamos continuar sem md5." \
  304. 6 40
  305. fi
  306. # Mensagem de finalização!
  307. text="Finalizamos...\n
  308. O arquivo '${name_backup}-${date_bkp}.bkp' está disponivel em '$dir_of_backup_bar'\n
  309. Deseja fazer mais backup?"
  310. if dialog --title "FINALIZADO!" \
  311. --yes-label "Sim" \
  312. --no-label "Não" \
  313. --yesno "$text" \
  314. 8 100
  315. then
  316. # Se for sim, voltamos a função principal e começa tudo de novo! :)
  317. main # Chamando o menu principal.
  318. else
  319. echo -e "\033[31;1m ${name}<3 \033[m"
  320. exit 0
  321. fi
  322. esac # Case do MD5
  323. }
  324. #########################################################|
  325. ################### MODO BÁSICO #########################|
  326. #########################################################|
  327. basic_mod(){
  328. #DIRETORIO DE ORIGEM
  329. if_dir # Chamada função de destino
  330. # Diretório de DESTINO
  331. of_dir # Chamada função de DESTINO
  332. # Criando Backup
  333. create_backup_basic # Chamada função para CRIAR backup, BÁSICO
  334. } # fecha função
  335. #########################################################|
  336. ################## MODO REMOTO ##########################|
  337. #########################################################|
  338. remote(){
  339. while :; do
  340. send_or_receive=$(
  341. local text="Escolha a opção que se adapta a você!\n
  342. -Para enviar um arquivo para um servidor remoto escolha a opção 'enviar'\n
  343. -Para receber um arquivo de um servidor remoto escolha 'receber'\n"
  344. dialog --stdout \
  345. --title "ENVIAR OU RECEBER?" \
  346. --backtitle "$back" \
  347. --ok-label "Confirma" \
  348. --cancel-label "Voltar" \
  349. --radiolist "$text" \
  350. 10 100 0 \
  351. "Enviar" "Envie seus backups para um servidor remoto" on \
  352. "Receber" "Receba seus backups de um servidor remoto" off \
  353. )
  354. [[ "$?" -eq "1" ]] && main # Aperto voltar, volta para o menu principal.
  355. # Conferindo se var não está nula, se não estiver para o loop.
  356. if [[ -z "$send_or_receive" ]]; then
  357. dialog --title "OPS!" \
  358. --backtitle "$back" \
  359. --msgbox "Selecione alguma opção!" \
  360. 0 0
  361. else
  362. break
  363. fi
  364. done
  365. case "$send_or_receive" in
  366. "Enviar") # Se for para enviar cai aqui! :)
  367. repete_form(){
  368. while :; do
  369. text="TEXTO AQUI"
  370. # Armazenando dados do formulário em seu devido lugar.
  371. { read user; read ip; read port; read dir_send; } \
  372. < <(dialog --stdout \
  373. --title "RESPONDA TODO FORMULÁRIO!" \
  374. --ok-label "Enviar" \
  375. --cancel-label "Voltar" \
  376. --backtitle "$back" \
  377. --form "$text" \
  378. 12 70 0 \
  379. "USUÁRIO:" 1 1 "" 1 13 35 0 \
  380. "IP HOST:" 2 1 "" 2 13 35 0 \
  381. "PORTA:" 3 1 "22" 3 13 10 0 \
  382. "DIRETORIO:" 4 1 "" 4 13 50 0 )
  383. # Conferindo status
  384. [[ "$?" -eq "1" ]] && main # retornando ao menu
  385. # Conferindo váriaveis se não estão nulas.
  386. if [[ -z "$user" ]] || [[ -z "$ip" ]] || [[ -z "$port" ]] || [[ -z "$dir_send" ]]; then
  387. text="\nParece que você deixou alguma informação nula!\n
  388. É de extrema importância vocẽ preencher todos os campos.\n
  389. Deseja retornar? e preencher os campos novamente?"
  390. if dialog --title "OPS!" \
  391. --backtitle "$back" \
  392. --yes-label "Sim" \
  393. --no-label "Não" \
  394. --yesno "$text" \
  395. 10 60
  396. then
  397. dialog --title "RETORNANDO" \
  398. --backtitle "$back" \
  399. --sleep 2 \
  400. --infobox "\nVamos retornar." \
  401. 5 24
  402. else
  403. main
  404. fi
  405. else
  406. break
  407. fi
  408. done # Fecha while form
  409. # Verificando se usuário confirma os dados!
  410. text="\nConfirma os dados fornecido no formulário?\n\n
  411. Usuário: $user \n
  412. Ip Host: $ip \n
  413. Porta: $port \n
  414. Diretório host: $dir_send \n"
  415. if ! dialog --title "CONFIRMA OS DADOS?" \
  416. --backtitle "$back" \
  417. --yes-label "Sim" \
  418. --no-label "Não" \
  419. --yesno "$text" \
  420. 0 0
  421. then
  422. repete_form # Aperto nao? então chamamos o formulário de novo.
  423. fi
  424. }
  425. repete_form # Chamada função para formulário
  426. choose_the_tag=$(
  427. dialog --stdout \
  428. --title "ESCOLHA AS OPÇÕES!" \
  429. --backtitle "$back" \
  430. --checklist "" \
  431. 0 0 0 \
  432. "-l" "Limitar o tamanho da banda" off \
  433. "-r" "Copie recursivamente diretórios inteiros." off \
  434. "-p" "Preserva as horas de modificação, os tempos de acesso e os modos do arquivo original." off \
  435. )
  436. while :; do
  437. if echo "$choose_the_tag" | grep -q -o "\-l"; then
  438. local text="Informe em quanto deseja limitar o tamanho da banda em Kbits
  439. Somente Números! 100000 kbits = 1 mb"
  440. kbits=$(
  441. dialog --stdout \
  442. --title "INFORME" \
  443. --backtitle "$back" \
  444. --inputbox "$text" \
  445. 0 0
  446. )
  447. # Alterando a Váriavel para receber valor do kbits.
  448. echo "$choose_the_tag" > "$log_tags"
  449. choose_the_tag=$(sed "s/-l/-l $kbits/" "$log_tags")
  450. fi
  451. # Verificando se váriavel 'kbits' é númerica.
  452. numeric(){ echo "$@" | grep -q -v "[^0-9]"; }
  453. if ! numeric "$kbits"; then
  454. dialog --title "OPS." \
  455. --backtitle "$back" \
  456. --msgbox "Favor informe uma entrada NÚMERICA!" \
  457. 5 50
  458. else
  459. break
  460. fi
  461. done
  462. # Bloco para escolher diretório de origem
  463. while :; do
  464. dir_if_backup=$(
  465. dialog --stdout \
  466. --title "SELECIONE O DIRETÓRIO/ARQUIVO DE 'ORIGEM'" \
  467. --backtitle "$back" \
  468. --cancel-label "Voltar" \
  469. --dselect "/" \
  470. 8 80 )
  471. if [[ "$?" -ne "0" ]]; then
  472. dialog --title "RETORNANDO" \
  473. --backtitle "$back" \
  474. --sleep 2 \
  475. --infobox "\nOK, retornando ao menu principal..." \
  476. 5 40
  477. main # Retornando ao menu principal
  478. fi
  479. if ! dialog --title "CONFIRMA?" \
  480. --backtitle "$back" \
  481. --yes-label "Sim" \
  482. --no-label "Não" \
  483. --yesno "Confirma o diretório de 'ORIGEM': $dir_if_backup" \
  484. 6 80
  485. then
  486. dialog --title "VOLTANDO" \
  487. --backtitle "$back" \
  488. --msgbox "Vamos retornar então." \
  489. 5 40
  490. continue
  491. fi
  492. # Usuário tem permissão de Leitura e escrita no diretorio?
  493. # Se tiver para o loop e continua, se não volta.
  494. if [[ ! -w "$dir_if_backup" ]] && [[ ! -r "$dir_if_backup" ]]; then
  495. dialog --title "SEM PERMISSÃO!" \
  496. --backtitle "$back" \
  497. --msgbox \
  498. "\nSem permissões neste diretório...\n
  499. Escolha outro diretório, ou dê as devidas permissões para este diretório." \
  500. 8 80
  501. else
  502. break # Digitou sim o loop para e continua :)
  503. fi
  504. done # Fecha loop principal
  505. # Enviando arquivos para o Destino.
  506. dialog --title "Digite O SEU PASSWORD!" \
  507. --sleep 1 \
  508. --infobox "Informe seu password para dar continuidade!" \
  509. 0 0
  510. if execute_scp 2>"$log"; then
  511. dialog --title "CONCLUIDO" \
  512. --back "$back" \
  513. --msgbox "Concluido"
  514. 0 0
  515. else
  516. sed -i 's/scp/dunee/g' "$log"
  517. dialog --title "OPS." \
  518. --backtitle "$back" \
  519. --exit-label "Voltar" \
  520. --textbox "$log" \
  521. 0 0
  522. [[ -e "$log" ]] && rm "$log" # Existe? então remove arquivo de log em /tmp/
  523. fi
  524. ;; # Fecha opção case enviar
  525. # Se for RECEBER cai aqui!|
  526. "Receber")
  527. remote_main
  528. if execute_scp 2>"$log"; then
  529. dialog --title "CONCLUIDO" \
  530. --back "$back" \
  531. --msgbox "Concluido"
  532. 0 0
  533. else
  534. sed -i 's/scp/dunee/g' "$log"
  535. dialog --title "OPS." \
  536. --backtitle "$back" \
  537. --exit-label "Voltar" \
  538. --textbox "$log" \
  539. 0 0
  540. [[ -e "$log" ]] && rm "$log" # Existe? então remove arquivo de log em /tmp/
  541. fi
  542. ;; # Fecha opção case enviar
  543. esac # Fecha case 'send_or_receive' PRINCIPAL
  544. }
  545. #########################################################|
  546. ################### INICIO ##############################|
  547. #########################################################|
  548. # Tela de boas vindas.
  549. dialog --title "$name" \
  550. --backtitle "$back" \
  551. --ok-label "Avançar" \
  552. --msgbox \
  553. "\nSeja bem vindo ao $name.\n
  554. Nunca foi tão fácil fazer seus backups!\n
  555. Caso você precise de ajuda entre na opção <AJUDA> para saber mais sobre
  556. o $name" \
  557. 10 80
  558. # Menu principal,amarrado.
  559. main(){
  560. while :; do
  561. menu=$(dialog --stdout \
  562. --title "$name" \
  563. --backtitle "$back" \
  564. --help-button \
  565. --help-label "Ajuda" \
  566. --cancel-label "Cancelar" \
  567. --menu \
  568. "USE O <DIRECIONAL> PARA SE LOCOMOVER, <ESPAÇO> PARA SELECIONAR." \
  569. 0 0 0 \
  570. "Básico" "Modo básico para um simples backup, (COMPACTADO)" \
  571. "Remoto" "Envie/receba seus backup remotamente (SIMPLES)" \
  572. "Conexão" "Testa se a conectividade com a internet." \
  573. "Avançado" "Para um backup completo" )
  574. #Verificando status de saida dos botões.
  575. case $? in
  576. "$help_button")
  577. dialog --title "MÓDULOS PRINCIPAIS" \
  578. --backtitle "$back" \
  579. --exit-label "Voltar" \
  580. --textbox "$directory_root/menu-principal.txt" \
  581. 20 100 ;;
  582. *)
  583. status ;; # status chamada função status, botões globais (1, 255)
  584. esac
  585. ##################################################################################
  586. # Verificando qual opção do menu o usuário selecionou (Básico, Remoto, Avançado) #
  587. ##################################################################################
  588. case $menu in
  589. Básico) basic_mod ;;
  590. Remoto) remote ;;
  591. Conexão)
  592. #Conferindo se tem internet
  593. local text="\nConferindo se há conexão com a internet."
  594. dialog --title "TESTE..." \
  595. --backtitle "$back" \
  596. --infobox "$text" \
  597. 5 60
  598. if ! wget -q --spider www.google.com; then
  599. local text="\nParece que você não há conexão com a internet.
  600. Restabeleça uma conexão e retorne.\n\n
  601. Caso você não tem o X disponivel, rode o comando logado como root:\n
  602. # ifconfig -a\n
  603. Veja a listagem e encontre a flag da sua rede...\n\n
  604. Para conexões a cabo normalmente a tag inicia com 'eth'.\n
  605. Para Wifi a tag inicia com 'wlan'.\n
  606. Para dispositivo Android roteado 'usb'\n\n
  607. Para estabelecer uma conexão você pode utilizar os comandos:
  608. 'dhcpcd opção flag_aqui' ou 'dhclient flag_aqui'"
  609. dialog --title "OPS!" \
  610. --backtitle "$back" \
  611. --msgbox "$text" \
  612. 18 100
  613. main # Retornando ao menu principal
  614. else
  615. dialog --title "OK!" \
  616. --backtitle "$back" \
  617. --ok-label "Prossiga" \
  618. --msgbox "\nConexão Estabelecida." \
  619. 7 35
  620. fi
  621. ;;
  622. Avançado)
  623. text="\nAguarde!\n
  624. Está opção ainda não está disponivel no ${name}..."
  625. dialog --title "Em criação." \
  626. --backtitle "$back" \
  627. --msgbox "$text" \
  628. 8 60
  629. ;;
  630. esac ###### case menu
  631. done ###### fecha loop while pricipal
  632. } ###### Fecha função main
  633. main # Chamada função main.