Desligar o PC após concluir download (Chrome e Chromium)

Publicado por Hélcio Daniel Galvão em 30/11/2015

[ Hits: 8.155 ]

 


Desligar o PC após concluir download (Chrome e Chromium)



Dica para quem faz downloads regularmente usando o navegador Chromium ou Chrome.

Tendo procurado muito uma forma simples de fazer o PC desligar sozinho depois de concluir os downloads, nada encontrei, apenas dicas para usar gerenciadores de download que já possuem essa opção, mas como não era isso que procurava, resolvi criar um script para fazer isso.

Uso o Chromium, e este navegador, quando está baixando um arquivo, cria na pasta um arquivo temporário com extensão *.crdownload, então a ideia é ficar verificando a pasta onde o download está sendo salvo, se não existe nenhum arquivo com essa extensão, significa que não há downloads em andamento, então um comando para desligar o PC será executado.

Para criar o script, abra o terminal, navegue (use o comando cd) até o diretório aonde pretende salvar os downloads e digite:

nano exemplo.sh

E adicione:

#!/bin/bash

VAR=`find . -name "*.crdownload"`

while test "$VAR" != ""
do
 sleep 10
 VAR=`find . -name "*.crdownload"`
done

echo "Todos os downloads foram concluídos!"

shutdown -h now

Salve o arquivo com Ctrl+O, escolha um nome de sua preferência, tecle Enter e saia do editor com Ctrl+X.

Dê permissão para executar:

chmod +x exemplo.sh

ATENÇÃO: NÃO execute se não estiver fazendo um download, pois o PC desligará imediatamente sem emitir aviso!

./exemplo.sh

Se quiser testar, comente a última linha, assim:

#shutdown -h now

Dessa forma o PC não desligará.

O funcionamento do script é o seguinte:

O comando find procura por arquivos com extensão crdownload e salva o resultado na variável $VAR.

Se existir downloads em andamento, isto é, se for encontrado um ou mais arquivos com a extensão especificada, o conteúdo de $VAR é não vazio. Esta é justamente a condição do laço while, que volta a verificar a cada 10 segundos.

Quando não houver mais downloads em andamento, não existirá mais nenhum arquivo com a extensão especificada, o retorno do comando find é nulo e a variável $VAR tem conteúdo vazio, não satisfazendo a condição do laço, que termina e a próxima instrução é executada: shutdown -h desliga o PC em um tempo determinado, contado em segundos, e o parâmetro now equivale ao valor 0 segundos, desligando o PC imediatamente.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Resolvendo problema com scripts que estão rodando no crontab

Aulas Shell Script do zero - Parte 4

Aulas Shell Script do zero - Parte 5

cut - Comando com exemplos

Aulas Shell Script do zero - Parte 6

  

Comentários
[1] Comentário enviado por removido em 01/12/2015 - 12:49h

Legal cara!
Mas só pra colocar uns probleminhas ai vou fazer umas perguntas rsrsr
E se o download falhar? O Chromium cria um outro arquivo para a falha modificando ou deixando este? Ou apaga o arquivo de download em andamento? Porque se o download falhar e ele apagar o .crdownload o computador também vai desligar como se tivesse concluído quando na verdade falhou.
É isso, não é uma crítica, é uma ideia.
Mas uma vez parabéns cara! obrigado.

[2] Comentário enviado por hgalvao em 01/12/2015 - 21:32h


Bom, se o download falhar o PC desligará, pois o .crdownload é apagado. Isso eu não sei resolver rs... A respeito da falha, acho que esse método que eu usei é ineficiente, talvez se o navegador passasse o status para o SO, e o script pudesse pegar esse status seria muito mais prático, mas nem sei se isso ocorre, e, mesmo que ocorresse, seria de um nível de complexidade alto demais pra um iniciante (3 meses de Ubuntu). Mas, fora o defeito no caso de falha, descobri que o mesmo conceito pode ser aplicado por quem usa o firefox, é só mudar o .crdownload por .part, ou find . -name "*.crdownload" -o -name "*.part", para quem usa os dois navegadores. Também o test "$VAR" != "" poderia ser test -n "$VAR", fica mais 'limpo' e faz a mesma coisa. Desculpa pelo tamanho da resposta, sem solução rs, mas é que, para quem passou uns dez anos fuçando a pasta win32 e nunca conseguiu nada, é empolgante descobrir o GNU/Linux. Obrigado pelo problema... digo, pelo comentario.

[3] Comentário enviado por tiago4171 em 03/12/2015 - 14:31h


[2] Comentário enviado por hgalvao em 01/12/2015 - 21:32h


Bom, se o download falhar o PC desligará, pois o .crdownload é apagado. Isso eu não sei resolver rs... A respeito da falha, acho que esse método que eu usei é ineficiente, talvez se o navegador passasse o status para o SO, e o script pudesse pegar esse status seria muito mais prático, mas nem sei se isso ocorre, e, mesmo que ocorresse, seria de um nível de complexidade alto demais pra um iniciante (3 meses de Ubuntu). Mas, fora o defeito no caso de falha, descobri que o mesmo conceito pode ser aplicado por quem usa o firefox, é só mudar o .crdownload por .part, ou find . -name "*.crdownload" -o -name "*.part", para quem usa os dois navegadores. Também o test "$VAR" != "" poderia ser test -n "$VAR", fica mais 'limpo' e faz a mesma coisa. Desculpa pelo tamanho da resposta, sem solução rs, mas é que, para quem passou uns dez anos fuçando a pasta win32 e nunca conseguiu nada, é empolgante descobrir o GNU/Linux. Obrigado pelo problema... digo, pelo comentario.


Matou minha dúvida a pau.
Muito bom, gostei pacas!!!

Vou editar o script para fazer isso com os Downoads do Firefox, não sou muito fã do Chrome/Chromium, daí já viu né '-'



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts