Como estender o acesso à rede para outros cômodos, ou outros prédios de forma barata?

Recentemente um cliente solicitou uma solução para estender seu acesso à Internet em de sua principal para um anexo, o que ele chamou de jardim-office, que nada mais é que um espaço separado da casa principal, cerca de uns 90 metros.

Havia um roteador sem fio na casa principal, mas o sinal chegava fraquíssimo no jardim-office que possuía muros e paredes com vidro.

O lançamento de um cabo UTP do roteador para os equipamentos do anexo teria sido tecnicamente a melhor solução, mas considerando que isso envolveria passagem de canaletas ou eletrodutos que influenciaria diretamente na estética do ambiente e caso a opção fosse utilizar dutos subterrâneos o custo para escavação elevaria o valor do projeto, esta solução foi descartada.

Uma opção mais barata seria a de instalar um ponto de acesso sem fio externo ao lado da casa com a antena direcionada ao anexo, mas, dada a construção do anexo (paredes duplas de tijolos) não havia a chance de que a intensidade do sinal dentro da anexo fosse confiável.

Wireless Bridge

Outra opção sem fio teria sido a de criar uma ponte (bridge) entre a casa principal e um anexo, como mostrado no diagrama abaixo:

Esta opção também teria sido uma boa solução, mas isto envolveria custos significativos em termos de equipamentos e mão de obra na montagem dos dispositivos externos.

Vale destacar que quando se deseja interligar pontos que estão até 10 km um do outro, Wireless Bridger é de fato uma excelente solução de baixo custo para fornecer serviços de telecomunicações e internet.

HomePlug

Na verdade, a solução de bridge teria sido a solução preferida, mas para o fato de que havia uma conexão elétrica de alimentação ligando o anexo à casa principal, isso nos permitiu usar a rede de cabeamento elétrico existente para fornecer acesso à internet no jardim-office por cerca de R$ 100,00.

Esta solução é conhecida como HomePlug (ou Powerlan).

Uma solução HomePlug é composta por pelo menos dois adaptadores de rede: um adaptador primário e até 15 adaptadores escravos.

O adaptador primário se conecta através de um cabo de rede a uma das portas Ethernet na parte de trás do roteador existente. Ele também se conecta a uma tomada elétrica de alimentação. Os adaptadores escravos são ligados à rede elétrica nas áreas onde o acesso à rede é necessário.

Existem diferentes tipos de adaptadores escravo. Para o anexo optamos por um adaptador escravo que combinava as funções de um ponto de acesso sem fios e portas ethernet, facilmente encontrado nos sites chineses como o aliexpress e dealextreme (Tenda PW201A, GEEYA H25C1 e outros).

Isso proporcionou o acesso sem fio ao anexo juntamente com a capacidade de conectar dispositivo com fio, como uma impressora ou um PC por exemplo. O diagrama abaixo mostra a solução que foi implementada para cliente

Nos últimos anos, dispositivos HomePlug aumentaram sua velocidade e faixa sobre a qual eles operam de modo que atualmente eles podem suportar serviços de dados intensivos, como streaming de vídeo e jogos.

HomePlug nunca vai ser capaz de vencer a velocidade ou a segurança de uma conexão direta via cabo ou a conveniência de uma conexão sem fio padrão. No entanto, em casa ou no escritório onde a instalação de cabeamento seria muito caro ou complicado de implementar, HomePlug deve ser considerado como uma alternativa viável.

Mais um cliente satisfeito!

Como aumentar o HD no VMware ESXi 5.x

  1. Pare a máquina virtual..
  2. Verifique se tem Snapshot, caso não tenha vá para o passo 5
  3. Botão direito do mouse -> Snapshot -> Snapshot Manager…
  4. Pressione o botão “Delete All” e depois em “Close”
  5. Botão direito do mouse sobre a VM -> Edit Settings
  6. Selecione “Hard Disk 1”, no caso o seu virtual disk
  7. Vá em “Disk Provision”, “Provisioned size” e digite o tamanho do disco em GB
  8. Dê “Play” na VM
  9. Inicie (dê boot) pelo Gparted (baixe aqui)
  10. Redimensione o disco, usando o espaço adicional
  11. Reinicie sua máquina, e pronto… já estará com o espaço em disco novo.
  12. Caso for Windows, expanda o disco pelo próprio windows, no gerenciador de disco do windows.

Simples e Objetivo.

OBS: No site da vmware eles dizem que após fazer snapshot não se pode mais redimensionar o disco, veja a citação: “Warning: In current versions of ESX/ESXi 2.5, 3.x, 4.x, and ESXi 5.x, do not extend a disk that has snapshots.” – http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=994

Todos os direitos deste tutorial ao colega:
Ciro Júnior
Analista de Tecnologia da Informação – IFTO

Caso queira fazer a mesma coisa com o VirtualBox, veja este tutorial:

 

Configurar a variável de ambiente JAVA_HOME no Mac OS X

Recentemente eu precisei executar uma aplicação Java no Mac, que rodaria a partir do terminal e para isso foi necessário configurar a variável JAVA_HOME. Segui o seguinte procedimento:

  1. Inicie o terminal
  2. Crie e/ou edite o arquivo ~/.bash_profile
    vi ~/.bash_profile
  3. Cole o seguinte trecho, tudo em uma única linha:
    export JAVA_HOME=/System/Library/Frameworks/
    JavaVM.framework/Versions/CurrentJDK/Home
  4. Salve, saia do VI, reinicie o terminal e execute o seguinte comando:
    echo $JAVA_HOME

Como recuperar como checked um campo armazenado como array – PHP

Só dicas simples ultimamente né. Vamos lá:

Imagine que você tenha um formulário HTML com alguns campos checkbox, ou seja, que permitem múltiplos valores.

[php]

Marque o turno:
Matutino
Vespertino
Noturno

[/php]

No banco, você terá um campo que irá armazenar as opções selecionadas em formato de array separados por vírgula (1,2,3). A dúvida é, como que você irá recuperar os valores selecionados de forma que ao editar este formulário os respectivos campos checkbox’s venham marcados? Muito simples, basta utilizar as funções implode() e explode(), veja:

Para inserir em formato de array separados por vírgula basta dar um implode():

[php]$turno = implode($_POST[‘turno’],”,”);[/php]

Ai basta utilizar esta variável ($turno) no seu INSERT.

Na query que irá recuperar os dados, utilizamos explode() para separar os elementos do array:

[php]$turno = explode(“,”, $row[“turno”]);[/php]

E na hora de marcar os campos do formulário com os registros recuperados vamos utilizar a função do PHP chamada in_array, com um operador ternário:

[php]
/>Matutino
/>Vespertino
/>Noturno
[/php]

Pronto, dessa forma os valores que vierem da variável $turno que coincidirem com o value do checkbox será marcado como ativo.

Seguindo o mesmo princípio, você pode querer trazer em formato de relatório os valores selecionados, como no exemplo abaixo:

( X ) MATUTINO        (  ) VESPERTINO        ( X ) NOTURNO

É a mesma coisa, basta dar um echo na variável no espaço onde será preenchido o X:

[php]( < ?php echo (in_array('1',$turno))?('X'):('');?> ) MATUTINO ( < ?php echo (in_array('2',$turno))?('X'):('');?> ) VESPERTINO ( < ?php echo (in_array('3',$turno))?('X'):('');?> ) NOTURNO[/php]

Fonte: Handling checkbox in a PHP form processor

Eliminar linhas em branco no Excel

Se você precisa apagar linhas em branco em um intervalo, essa dica pode ajudar:

  1. Selecione o intervalo;
  2. Pressione a tecla F5, e clique na opção “Especial” e selecione a opção “em branco (blanks)” e clique em “OK”;
  3. Escolha a opção “excluir–linha inteira” no menu editar.

Caso estiver usando o office 2007 (ou maior), o item 3 será ligeiramente diferente:
em “Home/Cells” selecione a opção “Delete–Delete cells” e “Entire row”.

E seja feliz! 🙂

Howto: Tunelamento de servidor SVN via ProxyPass – Apache

Caso: Você já tem um servidor SVN em sua empresa rodando de boa internamente e agora precisa colocar o serviço SVN para acesso externo. Existe n maneiras de se fazer isso, porém caso você esteja trabalhando com proxypass para disponibilizar conteúdo da sua rede interna à internet, esta é a forma de fazer com o Subversion.

[php]

ServerName svn.dominio.com
ProxyPass / http://svn.dominio.com/

ProxyPassReverse / http://svn.dominio.com
Order Deny,Allow
Allow from all
Satisfy Any

[/php]

Pronto, já pode-se conectar com seu cliente SVN.
Fonte: http://silmor.de/proxysvn.php

NAT 1:1 ou Proxy Reverso, qual a melhor alternativa?

Genericamente falando, tanto o NAT 1:1 como o Proxy Reverso tem por finalidade ligar um endereço interno específico para um endereço externo.

NAT 1:1 (one-to-one)
Se desejarmos que uma máquina da rede interna possa ser vista de fora da rede, ou seja, possa receber conexões e ter servidores instalados, podemos usar o NAT 1:1. Esse esquema de NAT é bem simples e consiste em criarmos manualmente uma tabela no roteador mapeando o IP privado para um IP público. Esse tipo de NAT também é chamado de NAT estático, uma vez que as informações na tabela permanecem válidas indefinidamente após serem criadas.

Como existe permanentemente uma entrada na Tabela NAT associando o IP 10.1.1.2 ao IP 200.3.3.3, tanto a máquina A pode iniciar a comunicação com alguma máquina da Internet como alguma máquina da Internet é que pode iniciar uma comunicação com a máquina A. A figura acima mostra o caso onde a máquina A enviou um pacote para uma máquina na Internet que possuía o IP 60.6.6.6. Quando esse pacote passa pelo roteador, o IP de origem será trocado para o IP 200.3.3.3. Do mesmo modo, como pode ser visto na próxima figura, sempre que o roteador receber um pacote da Internet para o IP 200.3.3.3 o IP de destino será trocado para 10.1.1.2.

Read More

Renomeando fisicamente uma máquina virtual no VMware ESXi 5

Howto: Renomeando fisicamente uma máquina virtual no VMware ESXi/5x.

Ao migrar uma máquina virtual entre servidores de VMs é possível pelo vSphere renomear o nome da máquina no histórico de VMs, mas fisicamente o disco (vmdk) e outros arquivo permanecem com o nome da máquina original.

Para renomear todos os arquivos fisicamente, siga esses passos. Lembrando que a máquina virtual deve estar desligada.

1. Logue via SSH no seu servidor de VM-ESXi

# cd /vmfs/volumes/datastore1

2: Renomeie a pasta:
# mv maquina_velha maquina_nova

3: Entre na pasta renomeada
# cd maquina_nova

4: Renomeie todos os arquivos manualmente:
# mv maquina_velha.vmx maquina_nova.vmx
# mv maquina_velha.vmsd maquina_nova.vmsd
# mv maquina_velha.nvram maquina_nova.nvram
# mv maquina_velha.vmdk maquina_nova.vmdk
# mv maquina_velha-flat.vmdk maquina_nova-flat.vmdk
# mv maquina_velha.vmxf maquina_nova.vmxf

Uma observação, o arquivo .vmsd estava vazio por não ter sido feito nenhum snapshot da máquina.

5: Edite o conteúdo do arquivo .vmx, usando o vi. No exemplo abaixo usei o search and replace, bastando digitar :%s

# vi maquina_nova.vmx
:%s/maquina_velha/maquina_nova/g

6: Edite o arquivo .vmdk

# vi maquina_nova.vmdk
:%s/maquina_velha/maquina_nova/g

7: Se a máquina estiver registrada no histórico de VMs a mesma deve ser removida do registro.

# vim-cmd vmsvc/getallvms
# vim-cmd vmsvc/unregister 900

No caso o 900 ai é o Vmid, mas se a máquina ainda não tiver sido registrada pode-se pular este passo.

8: Registrando a nova máquina
# vim-cmd solo/registervm /vmfs/volumes/datastore1/maquina_nova/maquina_nova.vmx

E só. Agora é so editar a máquina_nova e definir uma interface de rede e inicializa-la.

Howto: Como encontrar todos os subdomínios de um determinado domínio?

Isso é possível utilizando Reverse DNS lookup. Embora existam alguns sites que ofereçam este recurso, você também pode fazer via script shell, veja como criar:

# vi /tmp/busca.sh

Entre com este script e salve o arquivo:

#!/bin/bash
IPPFX=$1
for i in `seq 1 255` ; do LIST="$LIST ${IPPFX}.$i" ; done
for i in $LIST ; do
 ENTRY="`host $i`"
 [ $? -ne 0 ] && continue
 ENTRY=`echo "$ENTRY" l sed -e 's/.* //' -e 's/\.$//'`
 echo -e "$i\t$ENTRY"
done

Dê permissão de execução:

# chmod 775 /tmp/busca.sh

Para usar o script você deverá entrar com o IP do domínio à verificar sem o último octeto, por exemplo, digamos que queremos saber todos os subdomínios que existem no domínio camara.gov.br (Câmara dos Deputados), primeiro devemos saber o IP do domínio:

# ping www.camara.gov.br
PING www.camara.gov.br (200.219.133.59) 56(84) bytes of data.

Com o IP em mãos (200.219.133.59) iremos nosso script, removendo o último octeto (59), ficando assim:

# ./busca.sh 200.219.133

E como resposta do comando acima temos:

200.219.133.2 2.133.219.200.in-addr.arpa domain name pointer copernico.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.5 5.133.219.200.in-addr.arpa domain name pointer aurelius.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.7 7.133.219.200.in-addr.arpa domain name pointer platao.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.9 9.133.219.200.in-addr.arpa domain name pointer perdiz2.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.17 17.133.219.200.in-addr.arpa domain name pointer lexml.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.18 18.133.219.200.in-addr.arpa domain name pointer arara.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.20 20.133.219.200.in-addr.arpa domain name pointer hypatia.camara.leg.br. l sed -e s/.* // -e s/\.$//
200.219.133.21 21.133.219.200.in-addr.arpa domain name pointer melissa.camara.leg.br. l sed -e s/.* // -e s/\.$//
200.219.133.24 24.133.219.200.in-addr.arpa domain name pointer csg.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.28 28.133.219.200.in-addr.arpa domain name pointer perdiz1.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.33 33.133.219.200.in-addr.arpa domain name pointer extranet2.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.43 43.133.219.200.in-addr.arpa domain name pointer democrito1.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.44 44.133.219.200.in-addr.arpa domain name pointer democrito2.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.47 47.133.219.200.in-addr.arpa domain name pointer harpia-vip.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.51 51.133.219.200.in-addr.arpa domain name pointer arquimedes.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.54 54.133.219.200.in-addr.arpa domain name pointer copernico.camara.gov.br. l sed -e s/.* // -e s/\.$//
200.219.133.181 181.133.219.200.in-addr.arpa domain name pointer gaturamo1.camara.gov.br. l sed -e s/.* // -e s/\.$//

legal né 🙂

Update: Pessoal que estava reclamando que o copiar e colar o código não estava funcionando, isso se deve provavelmente por que o WordPress muda algum código ASCII ao colar. De toda forma, segue um splash (imagem) do código para vocês digitarem.

Integrando o Tomcat ao MAMP

O MAMP é o servidor web mais famoso para desenvolvimento no MAC, é possível também colocar para trabalhar juntamente com ele o Tomcat para quem esta desenvolvendo algo em JAVA/JSP, vejamos:

  1. Baixe a última versão binária do tom­cat diretamente deste link.
  2. Extraia o arquivo na pasta do MAMP (/Applications/MAMP/) .
  3. Troque o nome da pasta descompactada (apache-tomcat-X.X.XX) para tomcat.
  4. Adicione esta linha /Applications/MAMP/tomcat/bin/startup.sh no final do arquivo /Applications/MAMP/bin/startApache.sh
  5. Agora, adicione esta linha /Applications/MAMP/tomcat/bin/shutdown.sh no final do arquivo  /Applications/MAMP/bin/stopApache.sh
  6. Finalmente, mude as permissões destes arquivos na pasta tomcat, executando os seguintes comandos:
    chmod +x startup.sh
    chmod +x shutdown.sh
    chmod +x catalina.sh
    chmod +x setclasspath.sh
    chmod +x bootstrap.jar
    chmod +x tomcat-juli.jar
  7. Start o MAMP (não o MAMP Pro) e acesse o endereço: localhost:8080 e veja se o Tomcat é carregado.

Caso prefira, segue o script para fazer todos esses passos acima:

#!/bin/sh

echo “/Applications/MAMP/tomcat/bin/startup.sh” » /Applic­a­tions/MAMP/bin/startApache.sh
echo “/Applications/MAMP/tomcat/bin/shutdown.sh” » /Applic­a­tions/MAMP/bin/stopApache.sh

chmod +x /Applic­a­tions/MAMP/tom­cat/bin/startup.sh
chmod +x /Applic­a­tions/MAMP/tom­cat/bin/shutdown.sh
chmod +x /Applic­a­tions/MAMP/tom­cat/bin/catalina.sh
chmod +x /Applic­a­tions/MAMP/tom­cat/bin/setclasspath.sh
chmod +x /Applic­a­tions/MAMP/tom­cat/bin/bootstrap.jar
chmod +x /Applic­a­tions/MAMP/tom­cat/bin/tomcat-juli.jar