easydl - download de arquivos em forma de URLs
Publicado por Pedro Fernandes (última atualização em 24/09/2019)
[ Hits: 3.822 ]
Homepage: https://github.com/PedroF37
Download 1564270761.easydl (versão 2)
Usa o wget para fazer os downloads. Pode baixar um único URL especificado na linha de comando ou uma lista inteira que tenha sido previamente criada em um arquivo. Nesse caso, a lista terá que conter uma URL por linha.
O script cria um diretório no HOME do usuário só para os downloads.
As opções do wget que o script usa são:
--input-file=
--continue
--limit=rate
O script conta com uma função que está toda comentada, pois é opcional, que testa o ping e se o campo "rtt" no valor "max" for maior que 10ms, o usuário tem a opção de sair do script. Este é o valor que considero aceitável para a minha conexão. Como é subjetivo e opcional, a função está toda comentada.
Versão 2 - Enviado por Pedro Fernandes em 27/07/2019
Changelog: Versão 1.2
changelog:
1- Corrigido bloco de código que verifica se arquivo existe, se está vazio ou se não existe.
Agora testa direito se especificou um arquivo, se o arquivo existe ou não, e se existe
se está vazio ou não.
2- Corrigida a função que testa a conexao. Faltou declarar a variável "$QUALIDADE", sendo
assim ia dar erro. Simplifiquei, ao invés de declarar a variável testo por extenso;
variável local passou a ser variavel qualidade e se o resultado for maior que 10000,
então pergunta se quer saír ou continuar.
2.1- Também na mesma função, troquei o primeiro teste de conectividade,
para testar pelo ip ao invés do nome, para não perder tempo a tentar resolver
e também porque testei no meu pc quando estava sem internet e o resultado
não foi o esperado, (ficou um tempão travado a tentar resolver o nome, que nunca
iria resolver pois estava sem conexão.)
3- na função limite, se a taxa digitada não for: "^[0-9]+$"; o script avisa que
ou digitou errado ou não digitou nenhuma taxa e então irá prosseguir sem limitar
a velocidade.
4- Mudei o diretório de download para não dar conflito com o nome do script.
Passou a ser easydl-dir.
5- Na função usg, corrigi o texto onde dizia que dava para baixar mais do que
um url de uma vez no modo interativo. Mudei para avisar que no modo interativo
só pode baixar um url de cada vez.
#!/bin/bash # ###################################################################### # # Título: easydl # # Autor: Pedro Fernandes # # Email: pedrobfernandes32@protonmail.com # # Descrição: Script que usa o wget para fazer os downloads. # O script pode baixar ou um único url especificado na linha de comando ou # pode baixar uma lista inteira que tenha sido previamente criada em um arquivo. # Nesse caso, a lista terá que conter uma url por linha. # O script cria um diretório no home do usuário só para os downloads. # As opções do wget que o script usa são: # --input-file=; --continue; e --limit=rate. # O script conta com uma função que está toda comentada, pois é opcional, # que testa o ping e se o campo "rtt" no valor "max" for maior que 10ms, o usuário # tem a opção de saír do script. Este é o valor que considero aceitável para a minha # conexão. Como é subjetivo e opcional, a função está toda comentada. # ###################################################################### # ###################################################################### # # Constantes # PROGRAMA="$(basename "$0")" DIRETORIO=/home/$USER/easydld TAXA=" " # ###################################################################### # ###################################################################### # #Funções # ###################################################################### # # Ajuda usg () { clear echo " PROGRAMA: uso: $PROGRAMA [ -f (arquivo) | -i (interativo) | -h (ajuda) ] Descrição: Script gerenciador de downloads que usa o programa wget, para baixar. O script permite baixar uma única url, ou várias especificadas no prompt. Este modo é acionado pelo parâmetro [ -i (interativo) ]. Alternativamente, o script permite que se indique um arquivo previamente criado contendo várias urls, sendo que tem que ser uma por linha. Este modo é acionado pelo parâmetro [ -f arquivo ], onde arquivo é o nome que você deu ao arquivo criado. O modo [ -h (ajuda) ], simplesmente mostra este mesmo texto. O script respeita toda a sintaxe do programa wget, então, todas as url passadas ou como parâmetro ou no arquivo seguem o comportamento do mesmo. Por exemplo, se quiser baixar uma iso de uma distribuição, então garanta que não especificou a url de forma a baixar a página html ao invés da iso. Independente se der para baixar seja o que for, o script (wget) irá baixar. As opções do wget que são usadas neste script, são, dependendo da sua escolha: \"--input-file=\"; \"--continue\" e \"--limit-rate\". Para mais informações e opções para modificar o script a seu gosto: man wget. " exit } # # Função interativo inter () { clear cd /home/$USER/easydld read -p "Digite a url do arquivo a baixar: > " url if [[ -z "$TAXA" ]]; then wget --continue $url else wget --continue --limit-rate=$TAXA $url fi echo -e "\nTerminado. O seu download encotra-se na pasta easydld no home do seu usuário." exit } # # Função arquivo loop_arq () { clear cp $arquivo /home/$USER/easydl &>/dev/null cd /home/$USER/easydld if [[ -z "$TAXA" ]]; then wget --continue --input-file=$arquivo else wget --continue --limit-rate=$TAXA --input-file=$arquivo fi echo -e "\nTerminado Os seus downloads encontram-se na pasta easydld no home do seu usuário." rm $arquivo exit } # # Funão taxa limite () { clear read -p "Deseja limitar a taxa de download? [1] sim; [2] não: > " if [[ "$REPLY" =~ ^[1-2]$ ]]; then if [[ "$REPLY" == 1 ]]; then read -p "Digite a taxa em kbytes: > " rate TAXA="$rate" else TAXA= fi else echo -e "\nDigitou errado. Saíndo do script." >&2 exit 1 fi return } # # Função para testar conectividade. # Na minha casa considero uma conexão boa se o rtt no valor max está até # no máximo em 10ms. # Deixo a função toda comentado pois é subjetiva a cada caso. # Querendo usar é so descomentar e modifcar para o seu caso. #conexao () { # clear # if ! ping -c1 www.google.com &>/dev/null ; then # echo -e "\nParece estar sem conexão. Saíndo." # sleep 2 # exit # fi # # testando qualidade # echo -e "\nAguarde enquanto testamos a qualidade da conexão. Pode demorar um pouco......." # atual="$(ping -c5 www.google.com | grep 'rtt' | cut -d "=" -f 2 | cut -d "/" -f 3 | tr -d [:punct:])" # if (( "$atual" > "$QUALIDADE" )); then # echo -e "\nParece que a sua conexão está um pouco lenta. #Dependendo do que quiser baixar, pode demorar mais do que o habitual. #Deseja continuar assim mesmo, ou deseja saír e tentar mais tarde?" # read -p "[1] para continuar; [2] para saír." # if [[ "$REPLY" =~ ^[1-2] ]]; then # if [[ "$REPLY" == 1 ]]; then # echo -e "\nContinuando......" # sleep 2 # return # else # echo -e "\nSaíndo do script......" # sleep 2 # exit # fi # else # echo -e "\nDigitou errado. Vamos saír do script......" >&2 # sleep 2 # exit 1 # fi # else # echo -e "\nConexão parece estar normal. Continuando......" # sleep 2 # return # fi #} # ###################################################################### # # Fim de funções # ###################################################################### # # Verificações # ###################################################################### # # Não quero root if [[ "$(id -u)" -eq 0 ]]; then echo -e "\nErro. Não pode ser root" >&2 exit 1 fi # # O seguro morreu de velho if [[ -z "$(which wget)" ]]; then echo -e "\nTem que ter o wget instalado. Saíndo." >&2 sleep 2 exit 1 fi # # Criando diretório se ainda não existe if [[ ! -d "$DIRETORIO" ]]; then mkdir /home/$USER/easydld fi # ###################################################################### # # Fim de verificações # ###################################################################### # # Começa aqui # ###################################################################### # # Tem que ter argumento # if [[ -n "$1" ]]; then case "$1" in -f) shift arquivo="$1" ;; -i) interativo=1 ;; -h) usg ;; *) echo "Erro. Opção inválida." >&2 usg exit 1 ;; esac else echo -e "Erro. Tem que ter um parâmetro." >&2 sleep 2 usg exit 1 fi # # Parâmetro interativo if [[ -n "$interativo" ]]; then #conexao limite inter exit fi # # Tratando do parâmetro [ -f arquivo ] if [[ -z "$arquivo" ]]; then echo -e "\nErro. Tem que especificar o nome do arquivo quando usa o parâmetro [ -f ]." >&2 sleep 2 usg exit 1 elif [[ ! -s "$arquivo" ]]; then echo -e "\nErro. Arquivo encontrado, mas está vazio." >&2 sleep 2 usg exit 1 elif [[ -n "$arquivo" ]]; then if [[ ! -e "$arquivo" ]]; then echo -e "\nErro. Arquivo especificado não existe." >&2 sleep 2 exit 1 else #conexao limite loop_arq exit fi fi # ###################################################################### # exit # ######################################################################
Fazer o download de um website completo
Padronização de usuários em vários micros
Script para conversao de video compativel com PS3
Script para montagem/desmontagem de unidades do tipo pendrive.
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)