terça-feira, 29 de julho de 2014

Baixando páginas inteiras com wget: A forma elegante!

Da última vez que eu postei um artigo sobre o wget, tinha o objetivo de baixar todos os arquivos que estavam em um servidor, apenas.
Podemos, também baixar uma página, todas as imagens e links que fazem parte dela e, além disso, pedir ao wget para automaticamente corrigir os links para que apontem para dentro das páginas que já baixamos em vez de dar link quebrado ao fazer isso quando estamos offline.

O comando para isso é:

wget -crp -l < # de camadas >  -k < endereço que queremos baixar >

A opção -c permite-nos continuar doownloads interrompidos;
-r permite fazer recursão, ou seja, o download dos links dentro da página;
-l é o número de camadas para recursão, ou seja, quando "links dentro dos link devem ser seguidos". Digamos que na página X que você está puxando, há um link para Y, que tem também, um link para Z. Se você especificar 1 depois de -l, o wget não vai baixar a página Z;
-p permite fazer o download de todas as coisas que são necessárias para abrir a página corretamente;
-k corrige os links dentro das páginas, para apontar para as páginas já baixadas.

Fonte: man wget : Página de manual do wget

sexta-feira, 4 de julho de 2014

DNS local com DNSmasq

Estava há anos querendo fazer isso: chamar meus computadores pelo nome na minha rede doméstica. Cheguei a queimar um wireless-router tentando fazer isso (não, o procedimento não causa nenhum dano, mas é que eu aproveitei o DD-WRT para aumentar a potência do sinal emitido pelas minhas antenas, e aí deu nisso). E quando a gente descobre que é um procedimento simples, acaba percebendo que só perdeu tempo.

Bem, vamos à disposição da minha rede.
Agora, tenho um roteador Multilaser que tem somente 2MB de FLASH ROM.
Obviamente, fiquei "com o cu na mão" para trocar o firmware dele, então, para fazer um teste, instalei o DNSmasq em outro computador (apt-get install dnsmasq, no Debian).

O DNSmasq é um servidor DNS (Domain Name Service) que não é tão poderoso quanto o bind9 e outros, mas serve muito bem para uma rede doméstica, ou pequenos escritórios.
Além de servidor DNS para LANs com mascaramento IP (NAT), ele também é um servidor DHCP, e TFTP (Trivial FTP, muito em máquinas diskless).

Quando se instala-o, é necessário fazer pequenos ajustes na segurança, caso a máquina em que vai ser instalada seja o roteador (ou que tenha acesso a redes mais amplas, como a Internet), ou habilitar o serviço DHCP. Tudo isso pode ser configurado no /etc/dnsmasq.conf

Lembrando que se o DNSmasq não for utilizado, podemos fazer um "DNS português" (peço desculpas aos entusiastas da Revolução dos Cravos, que são muito bem-vindos!), copiando o mesmo /etc/hosts para todos os computadores da rede, contendo o nome e endereço IP de todos eles.

Agindo como servidor DHCP também, o DNSmasq pode pegar os nomes dos hostnames e permitir que todos os computadores da rede consigam acessá-los pelos nomes.
Caso haja computadores e dispositivos com IPs estáticos, basta incluí-los no /etc/hosts do computador em que será instalado o dnsmasq (podendo ser o próprio roteador, se você tem melhor sorte do que eu) no seguinte formato:

#/etc/hosts
#IPs da máquina    Nomes das máquinas
192.168.1.17          URSS

Depois, é só reiniciar o dnsmasq. No caso do Debian, basta:
#invoke-rc.d dnsmasq restart

Depois, penso que há dois modos de configurar os clientes para usar o seu servidor DNS (que já vai fazer DNS caching usando os servidores DNS do provedor de acesso)

1) Configurar os clientes para só usar o seu servidor DNS, manualmente, um por um.

No Linux, isto é feito editando o arquivo /etc/resolv.conf, e colocando apenas essa linha:
nameserver XXX.YYY.ZZZ.DDD #, onde XXX.YYY.ZZZ.DDD é o número de IP do seu servidor DNS (o computador onde você instalou o DNSmasq).

2) Configurar o seu roteador e/ou servidor DHCP para enviar aos clientes o endereço IP do seu servidor DNS

Se o seu servidor DNS  e DHCP for o próprio roteador, basta colocar o IP dele e pronto no local apropriado do arquivo /etc/dnsmasq.conf, que está bem comentado (e eu vou colocar várias referências para fazer isso no final do artigo).
O meu roteador não tem o DNSmasq instalado (apenas o DHCP), mas utilizei essa solução mesmo assim, por simplicidade. O meu roteador, antes enviava para cada cliente os DNS primário e secundário oriundos do provedor. Agora, o DNS primário é o computador onde instalei o DNSmasq, e o secundário é o DNS oriundo do provedor (perdendo o DNS secundário).

Instalar um DNSmasq no próprio roteador wireless em vez de um PC externo permite reduzir o consumo de energia, por isso não me importei com a "gambiarra" que acabei de fazer (vou deixar o DNS server desligado, de vez em quando, e os outros computadores precisarão de um servidor DNS para acessar os computadores da Internet pelos seus nomes e domínios).

In a DNS bind? Get Out With dnsmasq

How to dnsmasq - Debian Wiki 

Dnsmasq For Easy LAN Name Services

How to Install and Configure dnsmasq

 Dnsmasq setup

Run a local DNS resolver with OpenWRT

 


Wicd:: Acessando redes Wifi pela linha de comando com qualquer usuário

O wicd, na verdade, é como o Network Manager, e é uma dessas ferramentas de configuração de rede modernas que permite, entre outras coisas, que um usuário normal mude de rede facilmente, desde que esteja no grupo netdev.
Ele também tem ênfase em ferramentas clientes gráficas.
O Network Manager também possui ferramentas de modo texto (nmcli), que permite conectar-se a uma rede já existente, consultar que redes há disponíveis etc, mas não encontrei meio de configurar a rede pela linha de comando, sem antes configurá-lo com ferramentas gráficas (nmapplet, por exemplo).

Por essa razão, eu preferi o wicd.
Ele também tem ferramentas gráficas para configurar a rede pela interface gráfica, sendo esse, inclusive, o seu foco. Porém, diferentemente do Network Manager, as ferramentas de linha de comando não ficam devendo para as de interface gráfica.
Pode-se configurar e ativar a rede com o comando wicd-curses (depois de instalado, o que se pode fazer com apt-get install wicd-curses para o Debian).
Há, também o wicd-cli (apt-get install wicd-cli), que é mais parecido com o nmcli, mas ligeiramente mais funcional.

Como eu apenas precisar de uma ferramenta leve e em modo texto para acessar a rede wireless, o wicd-curses já cumpriu plenamente com os objetivos.