Aprendendo a melhorar os seus scripts

Qual é o processo de pensamentos que leva uma pessoa a criar um script para fazer tarefas longas e cansativas em tarefas simples e rápidas? Nesse artigo eu quero levar você para dentro do cérebro de um criador de scripts para que você possa pensar como um programador e criar os seus próprios scripts de uma forma eficaz e elevar o nível para avançado. Caso você seja um novato e tem medo do terminal, esse artigo pode mudar o seu ponto de vista e te dar coragem para criar seus próprios scripts.

[ Hits: 6.576 ]

Por: M4iir1c10 em 15/05/2020 | Blog: https://github.com/mauricioph


Primeiras linhas



Muito bom, você já tem os comandos mais importantes para executar a tarefa de baixar a versão mais atual do Emby e instalar na máquina... para muitos somente isso já é o suficiente, então usando estes comandos em um arquivo que será interpretado por um outro programa e esse arquivo, pequeno Jedi, é o tão falado script.

Ele pode ser escrito em várias linguagens de programação, Python, Perl, PHP, Bash, C, C++ etc. Oque define a linguagem do script, além da extensão do nome, é a primeira linha onde colocamos o interpretador. Como nosso artigo é sobre bash, essa é a primeira linha:

#!/bin/bash

Se você escrever a linha do interpretador e os comandos logo abaixo, é só dar permissão de execução, pronto! Você fez um bash script que instala a versão mais recente do servidor Emby.

#!/bin/bash

wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.4.2.0/emby-server-deb_4.4.2.0_amd64.deb
systemctl stop emby-server
dpkg -i emby-server-deb_4.4.2.0_amd64.deb
systemctl start emby-server

Só que esse script somente com os comandos é muito idiota... ( calma é o script, não quem escreveu ) e porque eu digo isso? Porque ele não vai "pensar", ele só vai reagir. Você chama o script e ele executa as tarefas.

- Script, baixar a versão do Emby - você diz com o comando

- Sim sr. - responde o script

Baixa o arquivo da versão 4.4.2.0 para o servidor, instala o pacote e reinicia o servidor.

- Excelente, funcionou! - você diz.

Coloca ele para rodar todos os dias e ele vai executar a mesma tarefa todos os dias, até o Emby lançar uma versão mais nova e o seu script se recusar a instalar... ele só instala a versão 4.4.2.0, e detalhe, ele instala toda a vez que é chamado. O pior, se você faz o update manual, a próxima vez que o script rodar ele faz downgrade para a versão 4.4.2.0.

Lembra o que eu falei sobre variáveis? Então vamos entender o que vai mudar com uma nova versão, como eu vou saber qual será o número da versão seguinte?

Vamos seguir os passos para fazer o download, entramos na página:
selecionamos o Debian e antes de clicar com o botão esquerdo do mouse vamos clicar com o direito e copiar o caminho onde este link está nos levando.

Cole na barra de endereços, mas não entre nele ainda... vamos analisar.

https://github.com/MediaBrowser/Emby.Releases/releases/download/4.4.2.0/emby-server-deb_4.4.2.0_amd64.deb

Apagando tudo depois de onde a primeira vez que a versão aparece, temos:

https://github.com/MediaBrowser/Emby.Releases/releases/download/

Agora sim, aperte o enter e se depare com uma página 404 ( página não encontrada )... calma pequeno Jedi, continue a busca, apague mais uma palavra, download:

https://github.com/MediaBrowser/Emby.Releases/releases

- Eita! Agora apareceu uma página com todas as versões do Emby, incluindo uma beta de testes, versão 4.5.0.10...

Esse número, já posso colocar no meu script?

- Calma pequeno Jedi, ainda não... vamos olhar o código-fonte desta página, você tanto pode abrir esse link em um editor de texto como no próprio navegador clicando com o direito do mouse.

- "Eita, eu não entendo HTML, é muita informação para a minha cabeça..."

- Calma pequeno Jedi... vamos focar naquilo que estamos procurando, não se preocupe com códigos que você não entende ainda. Vamos focar na próxima versão do servidor, porém só sabemos a versão atual.

Enquanto eu escrevo este artigo é a 4.4.2.0. Então se você abriu o código-fonte em um navegador ou um editor de textos, esse programa vai ter um método de busca, vamos usar esse método para buscar a versão atual, 4.4.2.0.
Linux: Aprendendo a Melhorar os seus scripts
Vendo o link anterior onde tem versão atual, temos o seguinte:

https://github.com/MediaBrowser/Emby.Releases/releases/latest
(latest significa mais recente)

Agora vamos abrir este link no navegador... e surpresa, somos redirecionados para o link:

https://github.com/MediaBrowser/Emby.Releases/releases/tag/4.4.2.0

que mostra o número da versão mais atual. Agora vamos usar o bash para verificar como este link vai aparecer no nosso script.

curl https://github.com/MediaBrowser/Emby.Releases/releases/latest

Usando o comando acima recebemos um texto em HTML indicando que estamos sendo redirecionados e o link ao qual estamos sendo redirecionado. Veja que no link tem logo após tag a versão mais atual...

Essa informação que queremos, vamos adicionar ao curl o cut, que vai cortar o excesso, deixando só o que interessa. O cut recebe como parâmetro o "-d" (delimitador), ou seja, onde haverá os cortes e "-f" (field), ou campo de interesse, no caso do link podemos usar o "/" como delimitador e o campo "8" é onde está a versão:

1. https:/ 2. / 3. github.com/ 4. MediaBrowser/ 5. Emby.Releases/ 6. releases/ 7. tag/ 8. 4.4.2.0

curl https://github.com/MediaBrowser/Emby.Releases/releases/latest | cut -d "/" -f 8

Com isso temos 4.4.2.0">redirected<, agora vamos adicionar mais um cut para separar as aspas, lembrando que para isso devemos adicionar um "" antes da aspas para não confundir o cut.

curl https://github.com/MediaBrowser/Emby.Releases/releases/latest | cut -d "/" -f 8 | cut -d """ -f 1

Eu sei que vai ter pessoas minimalistas gritando que tem um modo mais eficiente, mas calma... eu vou retornar com uma revelação muito legal na próxima página.

Página anterior     Próxima página

Páginas do artigo
   1. Tudo começa com o problema
   2. Quebrando o processo em pequenas tarefas
   3. Primeiras linhas
   4. Procurar, procurar e procurar comandos
   5. Melhorando o script
Outros artigos deste autor

Bug afeta todas as distros

MEncoder - Criando Programa Gráfico Para Conversão

Instalando e configurando um dock igual ao Mac Leopard no KDE

SSH Blindado - Protegendo o seu sistema de ataques SSH

Malware, Vírus e Hacking. Estamos seguros usando Linux?

Leitura recomendada

Extracttext - como extrair texto de uma área selecionada da tela

Criando Autoridades Certificadores e Certificados de Testes no Linux

Relatório do sistema (Shel Script + PHP)

getopts: criando scripts Bash com parâmetros e argumentos personalizáveis

Receba seu IP externo via e-mail ou ensine o bash a ler e enviar e-mails

  
Comentários
[1] Comentário enviado por Mc.Eagle em 15/05/2020 - 10:57h

Uma excelente aula de script, eu já me aventurei a fazer alguns que uso diariamente, porém não tenho a "base", até comprei alguns livros sobre o assunto mas confesso que as "distrações" do dia a dia tem me distanciado do objetivo. Mas realmente está sendo uma aula esse artigo. Força e honra!

[2] Comentário enviado por maurixnovatrento em 15/05/2020 - 16:26h


Tá bom demais. Muito bom mesmo. Método muito bem estratégico.

___________________________________
Conhecimento não se Leva para o Túmulo.

[3] Comentário enviado por eduardo em 18/05/2020 - 13:46h

Artigo sensacional! Parabéns!
Ensinar o "caminho das pedras" não é negativo, mas necessário. É melhor aprender como se chegou à conclusão do que ter a resposta pronta :)

[4] Comentário enviado por maurixnovatrento em 28/05/2020 - 14:07h


[3] Comentário enviado por eduardo em 18/05/2020 - 13:46h

Artigo sensacional! Parabéns!
Ensinar o "caminho das pedras" não é negativo, mas necessário. É melhor aprender como se chegou à conclusão do que ter a resposta pronta :)


Isso é verdade! Já até estou usando esse estilo de programação. Faz diferença mesmo.



[5] Comentário enviado por amaurybsouza em 31/05/2020 - 14:41h

Ficou massa demais, método de explicação eficiente e bem didático! Top.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts