Traça de biblioteca

Carrego com imenso carinho dentro de mim lembranças de diferentes bibliotecas que fizeram parte de minha vida. A história das bibliotecas, pra mim, começa na escola, onde professoras de português já me incentivavam em tenra idade. Tive o privilégio de estudar em escolas com ótimas bibliotecas e receber este estimulo já nos bancos escolares.

Mas tenho em meu irmão um dos meus maiores incentivadores. Sendo eu a “raspa do tacho”, meu irmão exercia sobre mim um papel de irmão/pai/amigo. Ainda que eu não tivesse a completa noção de como isto era importante na época. E foi através do incentivo do meu irmão que fiz minha inscrição na Biblioteca Pública de meu município.

Read more »

Conversão de máquinas Windows em VMs

Sou usuário de Linux a muitos anos e nunca tive maiores dificuldades com migração de máquinas. Sempre tive uma certa tranquilidade em retirar um HD de uma máquina e colocar em outra. Alguns ajustes sempre se fazem necessário, mas nunca deixei de conseguir carregar o sistema operacional.

A exceção foi um servidor de um cliente, cujos administradores otimizaram o kernel, deixando somente os drivers necessários da controladora.

Infelizmente o Windows não oferece esta facilidade. Retirar um HD em uma máquina e conseguir ligar em outra não parece ser algo esperado. Não sei se é uma tentativa de proteção do fornecedor ou se é uma limitação do conceito. Pelo que li, um dos problemas é que o instalador só instala os drivers da controladora identificada (parecido com o caso do kernel otimizado que citei!).

Read more »

Conversão de LOB em base64

Tem sido raro nos dias de hoje, mas as vezes deparamo-nos com problemas que os indexadores de busca não conseguem nos apontar a solução.

Ainda que, como na vida, o segredo de achar as respostas desejadas é saber fazer as perguntas certas!

Mas nesta semana caí em uma destas situações. Um cliente precisou mudar o protocolo de envio de e-mails. O seu provedor de serviço modificou o tradicional SMTP para um serviço de API via HTTP. O fato de utilizar o protocolo HTTP, exigiu que arquivos anexados aos e-mails precisassem ser convertidos para Base64.

Como eu sempre disse aos meus alunos, tudo em computação tem limites. Usando PL/SQL para escrever o código de envio, temos o limite das variáveis VARCHAR2 na casa dos 32k.

Alguém envia anexos só com 32k?

A solução para isto é usar campos BLOB/CLOB e fazer conversões em etapas. Não vou entrar neste mérito, pois existem diferentes documentações para isto na internet. E baseada nestas documentações foram implementados os códigos para a mudança de protocolo necessária.

Read more »

Equivalência ao grep em Windows

Para quem é usuário de *nix, comandos como grep (entre outros) sempre fazem falta no mundo Windows.

Sei que existem versões dos mesmos para Windows e até o projeto do Cygwin [1]. Mas não é em todo o ambiente que acesso que tenho poderes administrativo, ou mesmo, quero adicionar tais ferramentas. Assim, prefiro ficar com o ferramental que o próprio ambiente me oferece.

Com o Power Shell [2], os administradores tiveram sua vida bastante melhorada, sem dúvidas!

Apesar disso, a simplicidade (e costume!) dos comandos do mundo *nix sempre me fazem recorrer à Internet em busca da sintaxe do equivalente ao grep no mundo Windows. Por isto, resolvi deixar aqui uma postagem para eu recorrer sempre que precisar. De maneira simples, a sintaxe é a seguinte:

Select-String -Path *.txt -Pattern texto-a-procurar

Talvez eu crie alguns .bat (ou similares) para fazer a equivalência… Ou será que já existe um projeto assim?

Referências:

[1] Cygwin

[2] O que é o PowerShell?

Windows Server bloqueando domínio WPAD

Hoje precisei ajustar as configurações de DNS de um Windows Server 2016 para adicionar entradas WPAD e resolver problemas em estações que não configuravam corretamente o proxy.

Não entrarei em detalhes sobre o funcionamento do WPAD. Uma rápida descrição pode ser encontrada neste link sobre WPAD.

Para minha surpresa, mesmo depois de corretamente configuradas as entradas de DNS, as estações não conseguiam resolver o nome de domínio.

Encontrei a solução aqui [1]. Em resumo, servidores Windows bloqueiam entradas de DNS! Para descobrir as entradas de DNS bloqueadas:

dnscmd /info /globalqueryblocklist

 

Para desabilitar bloqueio:

dnscmd /config /enableglobalqueryblocklist 0

 

Obrigado Luis Fernandes!

 

Referências:

[1] How to configure WPAD through DNS  – https://support.gfi.com/hc/en-us/articles/360012983853-How-to-configure-WPAD-through-DNS

Usando YUM após fim do ciclo de atualizações do sistema operacional

Hoje eu estava fazendo a instalação de um servidor CentOS 5 e precisei adicionar alguns novos pacotes à instalação realizada. Então me deparei com erros do tipo:

YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/

O ciclo de vida de atualizações do produto chegou ao fim, impedindo novas atualizações (o que pra mim não era problema!) e instalações de novos pacotes (este sim era problema!).

Talvez você se pergunte: Mas por que ainda usar uma versão tão antiga? Por que não atualizar para uma versão recente? Respondo: as vezes, por questões de compatibilidade e homologação de softwares, preciso manter versões antigas de linux!

Pesquisando um pouco descobri que a própria distribuição mantém uma base de repositórios antigos na estrutura do YUM, o que eu não sabia!

Talvez a maneira mais elegante ou indicada seria adicionar um apontamento para a versão 5.11 no arquivo /etc/yum.repos.d/CentOS-Vault.repo e fazer referência à este repositório na chamada do YUM. Mas isto tornaria a chamada do YUM menos prática! Então optei por realizar os passos indicados no fórum do CentOS, neste tópico [1]. Abaixo faço um resumo dos tópicos para futuras consultas.

  1. editar o arquivo /etc/yum.repos.d/CentOS-Base.repo
    1. em [base]
      1. comentar “mirrorlist=…”
      2. “baseurl=” já estava comentada pra mim
      3. adicionar nova entrada “baseurl=http://vault.centos.org/5.11/os/$basearch/”
    2. em [updates]
      1. adicionar “enabled=0”
    3. em [extras]
      1. igual a passos 1 e 2 de [base]
      2. adicionar nova entrada “baseurl=http://vault.centos.org/5.11/extras/$basearch/”

Com estas modificações, pude fazer uso do YUM sem maiores dificuldades!

 

Referências:

[1] yum fails – https://www.centos.org/forums/viewtopic.php?t=62106

[CC] Testando proxy em linha de comando

Faço muito atendimento remoto, via linha de comando.

Uma das maravilhas do Linux, pois não preciso de uma interface gráfica para resolver a maior parte dos meus problemas!

As vezes são necessárias mudanças no servidor proxy e nem sempre conseguimos testar no mesmo servidor e verificar o problema que está ocorrendo (por exemplo, quando o DNS não atende corretamente e o proxy está funcionando 100%!)

Para resolver esta questão, basta usar a variável de ambiente e o lynx! Veja:

$ env http_proxy=http://IP_DO_PROXY:PORTA_PROXY lynx ENDEREÇO_A_SER_TESTADO

Espero que tenha ajudado os fãs de linha de comando, assim como eu!

Monitorando CIFS com Zabbix

Tenho usado o Zabbix como ferramenta de monitoramento a bastante tempo. Além da excelência da própria ferramenta, o que sempre me surpreende positivamente é o suporte da comunidade e a diversidade de soluções encontradas. Não foi diferente desta vez!

Precisei fazer o monitoramento de pontos de montagem CIFS de um cliente (na real achei que eram NFS!). Comecei a pesquisar por soluções que detectasse os pontos de montagem para que eu não precisasse adicioná-los.

Neste artigo [1] do blog Infradev – DevOps & Monitoring encontrei uma excelente solução para o meu problema, no entanto, era para NFS (usarei para necessidades futuras!). Com algumas pequenas adaptações, trouxe a solução para a minha necessidade (CIFS).

A seguir descrevo as modificações, bem como o template que eu criei, baseado na solução original [1].

Read more »

[CC] Habilitando impressoras CUPS via linha de comando

Quando adicionamos um impressora em rede (em geral ligado numa estação de trabalho) no CUPS, é comum que a impressora fique desabilitada, por falta de comunicação, por exemplo.

Para que ela volte a funcionar, é necessário habilitá-la. Para isto, em geral, se faz via uma interface (seja o administrativo do próprio CUPS via interface web, ou seja em uma interface gráfica instalada em sua distribuição Linux.

Agora quando o serviço do CUPS está instalado em um servidor sem interface gráfica, servindo à um sistema local e você tem apenas acesso remoto, via SSH, como fazer?

Tradicionalmente o comando seria este (vem desde o tempo dos “Unix’s”):

$ enable nome-da-impressora

No entanto, no sistema que eu estava administrando (e acredito que seja verdade para um grande número de Linux atualmente), o comando “enable” faz parte do shell [1], assim, não funciona para o propósito que eu precisava (o de habilitar a impressora!).

Pesquisando um pouco [2], descobri que existe uma alternativa do CUPS, que coloco abaixo:

$ cupsenable nome-da-impressora

Simples e direto assim! Espero que seja útil a mais alguém!

 

Referências:

[1] https://pt.wikipedia.org/wiki/Shell_(computação)

[2] http://www.linuxquestions.org/questions/linux-newbie-8/help-how-to-enable-printer-in-cups-using-command-line-839898/

[CC] Validador PAC

Durante algum tempo procurei um validador de arquivos de proxy (proxy.pac ou wpad.dat).

Não tinha encontrado nada até a data de hoje (se existiam, eu não soube procurar!).

Obrigado Jan Henning Thorsen por compartilhar conosco este função muito útil!

Segue o endereço do PAC file tester: https://app.thorsen.pm/proxyforurl