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

Conectando OpenVPN com WatchGuard Firebox

Recentemente um cliente optou por trocar sua estrutura de segurança baseada em software livre por um produto “caixa preta” chamado WatchGuard Firebox (ou algo do tipo).

Como interajo apenas com servidores da rede interna, não conheço muito bem a estrutura de borda.

Até então utilizava-se um servidor OpenVPN e minha conexão era feita através de um cliente do OpenVPN.

Como temos um serviço de monitoramento através deste túnel, fiquei preocupado, pois o cliente apontou apenas um software para Windows como conexão. Posteriormente descobrimos que além de Windows, existe cliente para Mac e também para softwares com suporte a arquivos .ovpn!

Apenas fiz alguns ajustes no arquivo de configuração (para passar pela autenticação de usuários automaticamente), conforme sugestão apontada aqui [1] e a conexão via cliente OpenVPN foi estabelecida sem maiores dificuldades!

 

Referências:

[1] Connecting Linux to WatchGuard Firebox SSL (OpenVPN client) – http://jochen.kirstaetter.name/blog/linux/connecting-linux-to-watchguard-firebox-ssl.html