helio.loureiro.eng.br
  • Home
  • Unix
  • Linux
  • Blog
  • Python
  • Programação
  • Tudo
  • Suécia
  1. You are here:  
  2. Home
  3. Programação
  4. Shell Scripts

Os artigos mais lidos de 2025

  • Configurando traefik com ssh
  • Configurando o grafana alloy pra monitorar VMs
  • Acessos de robôs nos logs web
  • Configurando o teclado Keychron C3 no Linux
  • Parâmetros de compilação pra Go!

Associando containers com IPs

Details
Written by: Helio Loureiro
Category: Shell Scripts
Published: July 24, 2026
Hits: 120
  • docker
  • json
  • jq

Essa semana tivemos um problema de alguém rodando um container que estava marretando uma das placas NVIDIA RTX 6000 que temos na firma.

Pelo ollama podiamos ver qual era o IP usando o modelo, mas não sabiamos qual era o container com esse IP.

Então acabei fazendo um comando no shell que mostrou isso usando o próprio comando docker e jq.


for container in $(docker ps --format json | jq -r .Names)
  do echo -n "$container: "
  docker inspect $container | jq -r '.[0].NetworkSettings.Networks | .. | objects | select(has("IPAddress")) | .IPAddress'
done

Assim o restulado foi mais ou menos esse aqui:


helio@nvidia-server:~$ for container in $(docker ps --format json | jq -r .Names)
> do echo -n "$container: "
> docker inspect $container | jq -r '.[0].NetworkSettings.Networks | .. | objects | select(has("IPAddress")) | .IPAddress'
> done
rabbitmq-1: 172.24.0.4
ollama: 172.21.0.2
vllm-proxy-1: 172.23.0.2
vllm-qwen36-27b-1: 172.23.0.3
vllm-qwen36-35b-1: 172.23.0.4
postgres: 172.17.0.3
mcp-1: 172.24.0.3
redis-1: 172.24.0.5
postgres-1: 172.24.0.7
mlflow-server: 172.17.0.9
ollama-router-backend: 172.17.0.8
helio_development: 172.17.0.4
anna_development: 172.17.0.5
watchtower: 172.17.0.2
nvidia_metrics: 172.17.0.10
portainer_agent: 172.17.0.6

O culpado não está nessa lista.  Mas era um agente que estava devorando a GPU.

Atualizado script pra geração de vídeo com a GoPro

Details
Written by: Helio Loureiro
Category: Shell Scripts
Published: May 03, 2026
Hits: 496
  • ffmpeg
  • gopro
  • ffmpeg-cuda

Como eu já tinha descrito em Renderizando as fotos da GoPro em vídeo mpeg4 com ffmpeg e NVIDIA, eu gero imagens das pedaladas a cada 0.5 segundo atualmente, e uso ffmpeg pra juntar tudo e fazer o vídeo.

Recentemente fiz algumas melhoria pra além de gerar o vídeo e transformar em 1080p, também estabilizar.

E melhorei as mensagens.

O script está atualizado no CodeBerg:

https://codeberg.org/helioloureiro/homemadescripts/src/branch/master/render-video-from-gopro-photos.sh

E agora precisa de uma lib, a heliolib.sh (bem imaginativo o nome), que também está lá:

https://codeberg.org/helioloureiro/homemadescripts/src/branch/master/heliolib.sh

O resultado desse template de teste, com só 500 imagens (uma pedalada longa é geralmente algo em torno de 35.000-50.000 imagens), está aqui no YouTube:

Não é a versão inicial porque o tamanho segue o mesmo das imagens de 4000x3000 pixels.  Nem todo player consegue lidar com vídeo nesse formato.  E o YouTube acaba jogando pra 1080p.

Já o segundo vídeo, que é acelerado em 10x é esse aqui:

E finalmente o mesmo vídeo, mas estabilizado:

O estabilizado não fica lá muito melhor que o anterior, mas é bem mais rápido fazer com o ffmpeg-cuda e jogar pra GPU que deixar pra fazer depois no kdenlive.

 

 

Script pra verificar e atualizar os certificados dos domínios com letsencrypt

Details
Written by: Helio Loureiro
Category: Shell Scripts
Published: April 19, 2025
Hits: 1734

Continuando os trabalhos do artigo Ferramenta pra verificar quantidades de dias válidos de um certificado do letsencrypt, fiz uma pequena entrada na crontab pra chamar um script que fiz em fish.

  
# tail -1 /etc/crontab 
0  1  */5 * * root /root/bin/check-domain-expiration-dates.fish >> /tmp/certificate_renew.log 2>&1
  

E o respectivo script:

  
#! /usr/bin/env fish
set EXPIRATION_DAYS 10

for info in (letsencrypt-cert-days)
  set domain (echo $info | cut -d"=" -f1)
  set days (echo $info | cut -d"=" -f2)
  if [ $days -lt $EXPIRATION_DAYS ]
    echo "Renewing domain: $domain"
    certbot renew -d $domain
  end
end    
  

Então eu rodo no crontab a cada 5 dias pra detectar se algum certificado está expirando. E então chamo o `certbot` pra renovar se for o caso.

Funciona? Não sei. Meus certificados estão válidos ainda por quase 50 dias. Daqui um mês eu atualizo se funcionou.

  
# letsencrypt-cert-days --domain=helio.loureiro.eng.br
helio.loureiro.eng.br=48    
  

.oO(nota mental: trocar crontab por systemd-timer)

Imprimindo uma caixa em volta do texto em shell

Details
Written by: Helio Loureiro
Category: Shell Scripts
Published: February 26, 2025
Hits: 1391
  • bash
  • UI

Nada muito glamoroso. Só um script usando utf-8 pra fazer uma caixinha bonitinha em volta do texto.

  #!/usr/bin/env bash

sizeof() {
    local msg="$1"
    local size=$(echo $msg | wc -L)
    # one space at beginning and other at the end
    size=$((size+2))
    echo $size
}

printchar() {
    local char="$1"
    local nr="$2"
    while [ $nr -gt 0 ]
        do
        echo -ne "$char"
        nr=$((nr-1))
    done
}


printbox() {
    local msg="$1"
    local s=$(sizeof "$msg")

    echo -n "┌"
    printchar "─" $s
    echo "┐"
    echo -e "│ ${msg} │"
    echo -n "└"
    printchar "─" $s
    echo -e "┘\n"
}

message="$@"
printbox "$message"

O código também está publicado no GitHub.

https://github.com/helioloureiro/homemadescripts/blob/master/printbox.sh

Adicionando uma pergunta em shell script

Details
Written by: Helio Loureiro
Category: Shell Scripts
Published: November 06, 2024
Hits: 1566

Esse é um código que estamos usando bastante aqui na firma nova.  Ajuda a fazer seu script decidir se segue em frente ou para.  E basta apenas apertar uma teclar, sem enter.

 

#! /usr/bin/env bash
read -p "Deseja continuar (s/n)? " -n 1 -r resposta

if [[ "$resposta" =~ [sS] ]];then
  echo "Resposta foi sim"
else
  echo "Resposta foi não"
fi
  1. Adeus Twitter. Longa vida Mastodon!
  2. Shell é lento?
  3. Refatorando meu script de bloqueio de youtube no openwrt
  4. Shell das trincheiras no Tchelinux

Page 1 of 3

  • 1
  • 2
  • 3

Estatísticas

  • Users 2
  • Articles 517
  • Articles View Hits 3721228

Imagem aleatória