Bons exemplos de automação com Shell Script?

Depende do que cada um considera “útil” – e do que cada um considera um “usuário comum”. :wink:

Como eu uso várias distros Linux em dualboot / multiboot – para observar e aprender, pero sin perder la diversión, jamás! – acabei criando alguns scripts para sair do “achômetro”, e obter informações objetivas (e com as datas exatas):

Será isso “útil”? – Há controvérsia!

Será isso “comum”? – Não. Eu diria que é bizarro, incomum. – Mas não impede que eu continue sendo um “usuário comum”, pois não sou “TI”, nem “usuário avançado”. Sou apenas um “usuário médio”, leigo em tecnologia.

Tanto é verdade, que meus scripts são toscos, primitivos. – Procuro “resultados”, sem gastar 5 anos fazendo pós-graduação. – Meus scripts não têm nenhuma “elegância”.

Comecei a mexer com isso, quando o Conky alterou bruscamente seu cálculo de “uso de Memória RAM” – e em seguida, outras ferramentas (screenFetch, Neofetch, inxi, htop, free / top), também começaram a mudar, cada uma num tempo diferente – e tornou-se impossível comparar os números que eu tinha guardado, de 2017, 2019 etc., com os números de Agosto 2020, e de 2021 em diante.

Isso, dentro de uma mesma distro! – Pior ainda, entre distros que tinham versões diferentes do Conky – cada uma, com um “cálculo” diferente do “uso de Memória RAM”.

Como comparar?

Criei um script para fazer esse “cálculo novo” (indicado por Linux Torvalds) – e salvar num arquivo TXT – para ser lido e exibido pelo Conky.

MEM_TOTAL=$(awk '/MemTotal/ { printf $2 }' /proc/meminfo); \
MEM_AVAIL=$(awk '/MemAvailable/ { printf $2 }' /proc/meminfo); \
MEM_USED_KILO="$(($MEM_TOTAL-$MEM_AVAIL))"; \
echo "$(($MEM_USED_KILO/1024))" MiB > MemInfo.txt

(Dá pra ver que me preocupei mais com a exatidão, do que com a elegância do script – e deixei de lado qualquer tentativa de converter MiB em GiB (ou vice-versa). – Cada um que faça suas contas de cabeça, ha ha).

E aproveitei para “monitorar” os cálculos diferentes (“antigo”, e “muito antigo”), que ainda eram usados por outras ferramentas… em versões diferentes, conforme cada distro, em diferentes momentos ao longo do tempo:

No KDE Plasma, também havia um abismo enorme, entre os números indicados pelo antigo KSysguard – e o novo “plasma-systemmonitor”:

Fiz alguns quadros, acompanhando a evolução de cada ferramenta (diferentes versões) – e a “involução” do htop, que avançou, depois recuou – em vários momentos, ao longo desses anos:

É claro que seria muito chato, ficar olhando capturas de tela, e digitando números (e cometendo erros de digitação). Além disso, a captura de tela não é “exata”. Às vezes, demoro 1 ou 2 segundos até apertar a tecla PrtScn. – Então, preparei outro script, que registra todos esses números, exatamente aos 5 minutos uptime. – Reinicio o PC, escolho uma distro, e vou tomar um cafezinho, ou lavar a louça, ou conversar com os cachórros – e o script registra os números daquela distro em um arquivo TXT, com a hora exata do boot:

Em seguida, outro script, que acrescenta as versões – de cada distro, Kernel, init, número de pacotes instalados, Plasma, Gimp, Chrome / Chromium, LibreOffice, Conky, free / top, htop, inxi, Fastfetch (ou screenFetch, Neofetch) etc. – e move o arquivo para outra pasta:

O resultado tem aparência “meio” confusa – inclusive, em algumas distros ainda não consegui isolar os números do htop (por falta de aha e html2text) – e o jeito é registrar uma sopa de letrinhas, para depois eliminar o excesso:

Fico, então, com vários arquivos, de um determinado momento (conforme o número de distro que tinha naquele momento) – e seria muito cansativo, abrir cada um, procurar determinado número, copiar, colar em outro arquivo. – Então, criei outro script, chamado “Summary.sh”, que extrai os dados para um arquivo “Summary.txt”:

Esse último script reúne cada informação, de todas as distros – e registra, embaixo, quantas distros forneceram aquela informação específica. – Isso é importante, pois ainda não consegui obter alguns números de todas as distros.

Neste caso – 8 distros regulares + 8 registros de uma nova distro – é importante saber quando o total foi 16 (ótimo!)… e quando não foi:

Isso me permite usar o recurso “bloco” do Kate / KWrite para emparelhar os nomes das distros ($ ls -1) e a hora exata de cada boot – e identificar cada momento, com as datas / horas (Kate / KWrite F7), nas minhas anotações – para saber o quê eu tinha feito, até aquele momento:

Também fica fácil copiar do TXT um bloco – e colar no LibreOffice Calc:

E já posso ilustrar – "como fiz para reduzir o uso de Memória RAM do Fedora 42 recém-instalado – até chegar perto do meu outro Fedora, que instalei em 2020, e vim fazendo upgrade até hoje:

Bom, você pediu “exemplos de scripts” – mas até aqui, me limitei a explicar “o quê” fiz – e o “porquê”.

Seria chato para você – e cansativo para mim – eu enfileirar um monte de scripts toscos, primitivos, que nem sei se vão lhe interessar.

Tenho feito anotações sobre tudo isso – e se tiver interesse, está lá:

5 curtidas