domingo, 17 de agosto de 2014

scp: Copiando remotamente arquivos e diretórios com espaços nos nomes

Digamos que você esteja em um servidor dentro de um diretório do tipo "Diretório com Espaços".

Para copiar alguma coisa desse diretório (ou o próprio), pode-se fazer:
$ scp -< opções> usuário@servidor:'"Caminho/do/Diretório com Espaços"' < Diretório e máquina de destino >

As aspas duplas servem, no terminal, para permitir que a inserção de espaços e caracteres especiais quando estes existem no nome do diretório são requeridos por algum outro comando ou sintaxe.
no lugar delas, podemos usar "\ ", ou \/, ou \\, para indicar que espaço " ", "\" ou "/", por exemplo fazem parte do nome que vamos digitar para ser operado pelo comando.
Se estivéssemos enviando comandos para o nosso terminal local, bastariam as aspas duplas (ou indicar com \ que o caractere seguinte deve ser considerado como parte do nome) para indicar ao shell que tudo entre elas faz parte do nome (nome de diretório, no caso do comando que estamos utilizando) que pretendemos operar através do comando.
Ocorre que precisamos passar este nome para ser operado pelo servidor, não pelo nosso terminal local!
Para que o que está em aspas duplas seja passado para o servidor, colocamos tudo entre aspas simples entre aspas simples.
Isso garante que o shell local não trabalhará com o conteúdo entre aspas duplas, apenas repassando para o comando scp operar com o conteúdo no servidor.

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.

sábado, 7 de junho de 2014

Ah, se todos os manuais de comando tivessem exemplos...

Estava feliz por ter achado o cnetworkmanager para gerenciar conexões de rede (mas principalmente wireless)facilmente pela linha de conando no Debian Squeeze, quando resolvi atualizar para o Wheezy.

Descobri que o cnetworkmanager não mais estava funcionando no Wheezy, e que para a nova versão do NetworkManager, este pacote para gerenciar rede na linha de comando, simplesmente, havia sido removido.

Restou, então o nmcli, que já é parte do pacote network-manager.
O problema é que o man dele não me pareceu muito simples.
Eu tenho o defeito de só executar um comando quando tenho certeza de que entendi o manual e que ao ser executado, o comando funcionará. Isto pode ser bom em termos de segurança, mas é terrível para o aprendizado, já que aprende-se melhor fazendo.
Uma opção interessante, seria escrever exemplos dos comandos e de suas opções após estas serem explicadas.
Alguns manuais de comando possuem exemplos, se eu não engano, é o caso do comando tar.

Felizmente, existe o site "linux commands examples", que faz exatamente isso!

Pretendo escrever, pelo menos, mais 3 postagens sobre conexões à redes WiFi utilizando a linha de comando, desde a forma mais clássica, onde o usuário root é necessário, até comandos que qualquer usuário pode utilizar na linha de comando.

Por enquanto, para usar o nmcli, consultei este link aqui.

domingo, 18 de maio de 2014

Congelamento do GRUB 2 após a mensagem "Welcome to GRUB!"

Minha nova máquina, que estou configurando (novomarx) é um Intel Core 2 Duo de 1,8GHz, placa P5LD2-X HD de 80GB IDE (PATA), placa de vídeo NVIDIA GeForce 730GS de 256MB.
Ao instalar o Debian 7 (Wheezy), o GRUB 2 congelava após a mensangem "Welcome to GRUB!", e nem aparecia o menu.

O problema foi resolvido após seguir as recomendações deste link.

A "solucionática" consiste em entrar no arquivo /etc/default/grub, e descomentar a opção

GRUB_TERMINAL=console
Depois, rodar:
#update-grub

quarta-feira, 15 de janeiro de 2014

Dividindo a tela no VIM

Para dividir a tela no VIM com o arquivo atual, basta pressionar no teclado: Ctrl + w + s .

Para a janela voltar ao normal (em cima da janela atual): Ctrl + w + o .

O VIM trabalha com o conceito de buffers, e cada janela é a vizualização de um buffer.

Para fechar e salvar tudo, pressione ESC (sai do modo de edição), e:

:wall (salva tudo). :qall (fecha tudo).

Abrir e fechar janelas: CTRL + w + n Abre uma nova janela, sobrepondo a atual (:new) CTRL + w + q Fecha a janela atual, e termina após a última (:quit) .

 CTRL + w + c Fecha a janela atual (:close) .

Manipulação de Janelas: CTRL + w + w Alterna entre janelas (salta de uma para outra)
CTRL + w + j desce uma janela j .
CTTL + w + k sobe uma janela k .
CTRL + w + r Rotaciona janelas na tela .
CTRL + w + + Aumenta o espaço da janela atual (observe que o W é maiúsculo) CTRL + w + - Diminui o espaço da janela atual (observe que o W é maiúsculo) Para mais informações, a referência é o wikilivros sobre o VIM, da Wikipédia.

segunda-feira, 6 de janeiro de 2014

Configuração do /etc/X11/xorg.conf para a placa de vídeo HD5450

xorg.conf
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "InputDevice"
 Identifier "Generic Keyboard"
 Driver  "kbd"
 Option  "XkbRules" "xorg"
 Option  "XkbModel" "abnt2"
 Option  "XkbLayout" "br"
 Option  "XkbVariant" "abnt2"
 Option  "XkbOptions" "abnt2"
EndSection

Section "Module"
   Load  "record"
 Load  "GLcore"
 Load  "glx"
 Load  "extmod"
 Load  "xtrap"
 Load  "dri"
 Load  "dbe"
EndSection
       

Section "InputDevice"
 Identifier "Configured Mouse"
 Driver  "mouse"
EndSection

Section "Device"
 Identifier "Device0"
# Option  "UseFBDev"  "true"
 Driver  "radeon"
# Algumas op藤畫s de acelera藤υ 3D
 Option "XAA"
 Option "AccelMethod" "1" #1 pra PCIExpress
 Option "GARTSize" "64"
 Option "EnablePageFlip" "1"
 Option "ColorTiling" "1"
EndSection

#Section "Monitor"
# Identifier "Configured Monitor"
#EndSection

Section "Screen"
   Identifier  "Default Screen"
   Monitor     "Configured Monitor"
   DefaultColorDepth 24
   SubSection "Display"
      Depth 24
      Modes "1024x768" "800x600" "640x480" "320x200"
   EndSubSection
EndSection

Placa de Vídeo ATI Radeon HD5450 no Debian 7 (Wheezy)

Esta placa já é nativamente suportada no GNU/Linux, mas aparentemente, a performance dela ficou horrível usando o MAME (8% da velocidade, inicialmente).
Depois, reconfigurei o xorg.conf, e obtive 22% da velocidade.
Faltava, porém o firmware (sem ele, o desempenho dela perde até para o driver VESA), com o pacote firmware-linux-nonfree).
Depois, o MAME rodou a 100%.]

Comprei esta placa de vídeo porque não entendi a razão do driver da minha placa chrome9 ter piorado da versão 5 para as versões 6 e 7.
Continuo achando estranho  - e é esta a razão pela qual eu mantive o meu Debian 5 funcionando até hoje.
Até fevereiro, eu desinstalo esse sistema de bons serviços prestados.