Como Criar Rede Wi-Fi de Visitante em Roteadores Ax3000t com OpenWRT

Depois que comprei os roteadores ax3000t e finalmente consegui instalar o openwrt neles. Agora chegou a vez de criar a rede wifi de visitante.

Para esta rede eu tinha algumas diretrizes em mente:

1. Os visitantes precisam ter acesso total a internet
2. Resolução de nomes deve funcionar tanto através dos servidores de DNS locais quanto públicos.
3. Visitantes não devem ter acesso aos dispositivos conectados a rede local

Custei um pouco mas consegui refinar o script para configurar o sistema como desejado.

Para utilizar, só salvar o arquivo dentro do roteador e executar via terminal:

wget https://gist.githubusercontent.com/fbraz3/3db625adf81e2ea335968d933e6d61b1/raw/3e94c5ff9d5dcc00684d75d1ca2baaeb9ef2e239/openwrt_add_guest.sh -O add_guest.sh
chmod +x add_guest.sh
./add_guest.sh

Como criar e validar credenciais seguras em Ansible sem dor de cabeça – Guia passo a passo

A criação e validação de credenciais seguras em ansible sempre gera um pouco de dor de cabeça. É necessário utilizar binários e ter experiência com linha de comando.

Sempre que eu precisava efetuar essas operações, eu utilizava a ferramenta online ansible-vault-tool.com que entrou em operação em 2020.

Ao acessar a ferramenta, descubro que hoje ela não está mais online, redirecionando ao site pessoal do criador.

Deste modo, criei um mirror que está acessível publicamente no endereço abaixo:
https://ansible-vault.braz.dev/

Magento e o mistério do servidor somente-leitura

Dia desses, um dos meus servidores entrou com o sistema de arquivos / em modo somente-leitura de forma completamente aleatória, isso gerava uma série de transtornos para as aplicações hospedadas.

Passei basicamente um dia inteiro “pendurado” no vsphere, remontando sistema de arquivos, rodando fsck e nada de resolver a dificuldade.

Por fim, restaurei um backup da VM de alguns dias atrás e tudo parecia normalizado.

Eis que na manhã seguinte acordo com clientes no meu ouvido que o server não está funcionando novamente!

Diante desta situação, comecei a migrar os clientes para outro server, até que me deparei com o magento em questão. Rodei o scp pra outro servidor e ja estava uns 40 minutos copiando o diretório de sessão. Achei estranho, rodei um du -sh a instalação estava com 12GB, um tamanho completamente anormal para um magento de pequeno porte.

No final das contas, não consegui sequer contar a quantidade de arquivos do diretório, pois o bash simplesmente travava ao rodar cd /var/session !

O primeiro pensamento foi rodar um tmpwatch e remover o conteúdo. porém a fragmentação do diretório era tão grande que mesmo este utilitário que ja me salvou diversas vezes gerou erros ao tentar limpar o diretório de sessio;)

No final das contas, movi o diretório de session para outro lugar e recriei o mesmo na estrutura do magento. Depois disso consegui remover aquele diretório com um simples rm -rf

Com isso resolvido, basta descobrir o motivo do magento gerar tanta session, mas isso fica pro próximo artigo 😉

Localização de arquivos .desktop no ubuntu

O launcher do ubuntu não fornece muitas opções me relação aos icones, muitas vezes apps já desinstalados ainda teimam em aparecer lá. Ou as vezes simplesmente queremos mudar um parâmetro de inicialização.

Seja la qual for o motivo, não sei por que não é disponibilizada nativamente uma ferramenta que torne mais fácil a edição dos arquivos launcher!

Por mais bugado que seja, até o KDE oferece esse tipo de manutenção de forma fácil.

Bom, vamos ao que interessa. Os arquivos .desktop do launcher podem estar em duas localizações, uma dentro do diretório home e outra no usr.

- $HOMEDIR/.local/share/applications
- /usr/share/applications/

Já que sempre me esqueço, já fica no blog pra referencias futuras! 😛

Ordenar array por tamanho em php

Três meios diferentes para a mesma finalidade:

Usando funções nativas do PHP (recomendado):

array_multisort(array_map('strlen', $array), $array);

Esse é compatível com versões antigas do PHP:

usort($array, 'sortByLength');

private static function sortByLength($a, $b) {
    $difference =  strlen($a) - strlen($b);
    return $difference ?: strcmp($a, $b);
}

E esse pra PHP7+:

usort($array, 'sortByLength');

private static function sortByLength($a, $b) {
    return strlen($b) <=> strlen($a);
}

Adicionar suporte a rc.local no ubuntu 16.04 ou superior

Embora um script muito útil para tarefas de inicialização de um servidor, essa funcionalidade se perdeu na migração de init.d para systemd.

Para poder utilizar esse arquivo novamente, vamos instalar um serviço no systemd que irá se encarregar da execução.

Primeiramente, vamos criar o rc.local e aplicar permissão de executável:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Após isso, vamos criar o serviço no systemd

sudo systemctl edit --full rc-local

Será necessário inserir no final do script, os parâmetros de instalação do mesmo:

[Install]
WantedBy=multi-user.target

O arquivo final vai ficar parecido com isso:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Depois é só rodar o comando de instalação e voilá

systemctl enable rc-local

ler a linha completa em um loop do for

Quando efetuamos um for em shellscript, por padrão ele considera como delimitador espaços, quebras de linha ou tabulações, isso gera  uma dor de cabeça quando temos que tratar nomes e arquivos ou diretórios com espaços.

Para melhor compreensão, abaixo temos um diretório com três arquivos:

felipebraz@localhost:~/teste$ ls -l
total 0
-rw-rw-r-- 1 felipebraz felipebraz 0 Abr 19 15:41 1.html
-rw-rw-r-- 1 felipebraz felipebraz 0 Abr 19 15:41 teste2.html
-rw-rw-r-- 1 felipebraz felipebraz 0 Abr 19 15:41 teste de arquivo.html

Ao efetuarmos um for, ele vai quebrar o último arquivo nos espaços, retornando 5 registros ao invés de 3.

felipebraz@localhost:~/teste$ for i in `ls`; do echo $i; done
1.html
teste2.html
teste
de
arquivo.html

Para solucionar essa questão, podemos utilizar a variável IFS para definir  qual caractere deve ser usado como delimitador.

felipebraz@localhost:~/teste$ IFS="\n"
felipebraz@localhost:~/teste$ for i in `ls`; do echo $i; done
1.html
teste2.html
teste de arquivo.html

 

Rastrear encomendas a aliexpress do tipo LPXXX

Essa vai pra todo viciado em compras na aliexpress.

Recentemente comprei um miiband pelo referido site, no frete estava como “aliexpress standar shipping” com tracking disponível. Porém recebi um código de rastreio com uma numeração que não me era familiar, um código de 16 dígitos que começava com a sigla LP e que não era rastreável no site dos correios.

Acompanhando o tracking direto no aliexpress, começou a acusar movimentação dentro do brasil, encaminhado de curitiba pra porto alegre, do centro de tratamento para o centro de distribuição, etc.

Isso me deixou intrigado, como o aliexpress poderia ter acesso a movimentação dentro dos correios com esse número não padrão?

O que me veio a cabeça foi uma antiga notícia, ao qual representantes do grupo alibaba teriam fechado um acordo com os correios (link), logo pensei que esse pacote deve ter ganho um número de tracking nacional ao chegar no brasil.

Pesquisando muito na internet, descobri que no site da directlink ao colocar o tracking de 16 digitos, ele exibe o número nacional nos resultados!

Resultado do tracking da directlink

A partir daí, foi só cadastrar o número brasileiro no muambator e aguardar sentado a entrega!

Criar um pendrive de instalação do windows a partir do linux

Depois que meu notebook queimou, fui obrigado a voltar a usar o desktop. máquina essa que estava dedicada pra patroa, com windows instalado e talz.

Depois de redimensionar as partições e fazer a instalação do linux, vou testar o boot no windows (afinal , não quero dormir no sofá) e me deparo com essa tela:

Com windows original, o azul é mais azul

Provavelmente o gparted destruiu o setor de boot do windows quando redimensionou a partição.

Até aí tudo bem, é fácil recuperar com um cd de instalação… porém:
– Meu drive de CD não funciona a muito tempo
– Não tenho outra máquina com windows pra gravar a iso num pendrive

Depois de uma bela fuçada na internet descobri um utilitário chamado woeusb que resolveu essa questão.

Pra instalar em sistemas derivados do ubuntu, é só adicionar esse ppa e instalar via APT

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb

Depois de instalado, só abrir o programa, escolher o pendrive e a imagem (não esqueça de formatar o pendrive em ntfs antes)

A instalação demora uns 15 minutos, tem que ser paciente! =)

Mensagem exibida ao concluir o processo:

Depois disso, foi só bootar com o pendrive e seguir com os procedimentos usuais (instalação, recuperação, etc)